1. FTP协议

FTP(File Transfer Protocol)协议将一个完整的文件从一个系统复制到另一个系统。

FTP使用两个TCP连接来传输一个文件。

ftp文件传输

1)控制连接以 客户-服务器( Client-Server(C/S) ) 方式建立。服务器以被动方式打开FTP的21端口,等待客户连接。客户则以主动方式打开TCP端口21,建立连接。控制连接始终等待客户与服务器之间的通信。该连接将命令从客户传给服务器,并传回服务器的应答。

2)每当一个文件在客户与服务器之间传输时,就创建一个数据连接。

2. FTP命令

命令说明
ABORT放弃先前的FTP命令和数据传输
LIST filelist列表显示文件或目录
PASS password服务器上的密码
PORT n1,n2,n3,n4,n5,n6客服端IP地址(n1.n2.n3.n4)和端口(256*n5+n6)
QUIT从服务器注销
RETR filename检索(取)一个文件
STOR filename存储(放)一个文件
SYST服务器返回系统类型
TYPE type说明文件类型:A标识ASCII码,I表示图像
USER username服务器上的用户名
ftp命令

3. FTP应答

ftp服务器应答命令

比如:

200 就绪,command ok

226 传输成功

230 登陆

331要求输入密码

421超时关闭连接

424无法打开数据连接

502 无法执行指令,鉴权不通过

4. 连接管理

数据连接有一下三大用途

  • 从客户向服务器发送一个文件
  • 从服务器向客户发送一个文件
  • 从服务器向客户发送文件或目录列表

Unix环境下唯一的传输方式是流方式,并且文件结尾是以关闭数据连接为标志。对每一个文件传输或目录李彪来说都要建立一个全新的数据连接。一般过程如下:

1)客户控制发出命令建立数据连接。

2)客户通常在客户端主机上为数据连接选择一个临时的端口。客户从该端口发布一个被动的打开。

3)客户使用PORT命从控制连接上把端口号发向服务器。

4)服务器在控制连接上接收端口号,并向客户端主机上的端口发布一个主动的打开。服务器的数据连接端口使用20。

描述的FTP控制连接及数据传输为主动模式( active mode ),即服务器使用20端口传输数据。

主动模式的FTP连接
主动模式( active mode ),ftp建立连接抓包

客户ip:140.252.13.34,端口:4*256+150=1174

FTP控制连接上通过PORT命令
主动打开数据连接的FTP服务器

主动模式(Active Mode)

客户端主动连接服务器,客户端发送PORT,客户端使用随机端口,服务器使用20端口进行数据传输。服务器主动建立数据连接。

主动模式

主动模式抓包

主动模式数据传输成功

主动模式下,服务器可以通过防火墙放通的20端口,连接到客户端,进行数据传输。

被动模式( Passive mode  )

客户端主动连接服务器,客户端发送 PASV  ,request一个服务器的端口,服务器使用随机端口传输数据。客户端主动建立数据连接。

被动模式

被动模式数据包

被动模式数据包

因为防火墙配置问题,PASV可以建立控制连接,但是无法显示目录,无法建立客户端到服务器的数据连接。返回425 无法打开数据连接。

主动模式和被动模式怎么选择?

ftp最早的模式是主动模式,后面又了被动模式。被动模式要求服务器使用随机端口,防火墙要放通这些端口,网络存在安全隐患。

还有一点区别服务器和客户端之间有防火墙问题。

主动模式由服务器发起数据连接

ftp active mode resized 600
主动模式

被动模式由客户端发起数据连接

ftp passive mode resized 600
被动模式

网络管理员在防火墙上的配置,决定你使用哪种模式。

防火墙没有放通客户端的随机端口,那么主动模式下服务器是无法建立到客户端的数据连接的。

active ftp with firewall resized 600
防火墙阻拦随机端口的数据连接

被动模式下客户端主动发起数据连接,防火墙放通了端口。

passive ftp with firewall resized 600
防火墙允许向外发起随机端口的数据连接

https://www.jscape.com/blog/bid/80512/active-v-s-passive-ftp-simplified


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!



0 条评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注