在主动模式ftp客户端从一个随机的非特权端口N(N>;1024)连接到ftp服务器的命令端口,

就是21端口。于是客户端开始监听端口N+1同时发送ftp命令“port N+1”到ftp服务器。服

务器于是使用本地的数据端口也就是20端口回连到客户端指定的数据端口(也就是N+1)。


在第1步中,客户端的命令端口与ftp服务器的命令端口建立连接,并发送命令“PORT 1027

”。然后在第2步中,ftp服务器给客户端的命令端口返回一个/"ACK/"。在第3步中,ftp服

务器发起一个从自己本地数据端口(20)到客户端先前指定的数据端口的连接,然后客户端在

第4步中给服务器端返回一个/"ACK/".


主动FTP:

   命令连接:客户端 >;1024端口 ->; 服务器端 21端口

   数据连接:客户端 >;1024端口 <- 服务器端 20端口


在被动FTP模式中,客户端发起两种连接,这解决了防火墙过滤从服务器到客户端的入方向

的数据端口连接的问题。当开启一个FTP连接时,客户端打开两个随机非特权本地端口(N >

; 1024 和N+1)。第一个端口连接服务器的21端口,与主动FTP模式中提交PORT命令并允许

服务器来回连它的数据端口不同,客户端会提交PASV命令。结果是服务器会开启一个随机的

非特权端口(P >; 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到

服务器的端口P的连接来传送数据


在第1步中,客户端的命令端口与ftp服务器的命令端口建立连接,并发送命令“PASV”。然

后在第2步中,ftp服务器返回命令/"ORT 2024/",告诉客户端哪个端口用来侦听数据连接。

在第3步中,客户端初始化一个从自己的数据端口到服务器端指定的数据端口的数据连接。

最后服务器在第4步中给客户端的数据端口端返回一个/"ACK/"。


被动FTP:

   命令连接:客户端 >;1024端口 ->; 服务器端 21端口

   数据连接:客户端 >;1024端口 ->; 服务器端 >;1024端口



  Port模式FTP客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端

建立一个新的连接用来传送数据。 

  Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是

Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这

个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。 

  很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服

务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能

用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无

法工作。