在主动模式下,FTP客户端首先与FTP服务器的TP21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送Port命令。Port命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过其TCP20端口连接到客户端的指定端口发送数据。FTP服务器必须与客户端建立一个新的连接用来传送数据。主动FTP连接过程如下:
命令连接:客户端>1024端口→服务器21端口;
数据连接:客户端>1024端口←服务器20端口。
在被动模式下,建立控制通道时与主动模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pas命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器上的这个端口,然后FTP服务器将通过这个端口传送数据。在这种情况下,FTP服务器不再需要与客户端建立一个新的连接,被动FTP连接过程如下:
命令连接:客户端>1024端口→服务器21端口;
数据连接:客户端>1024端口→服务器>1024端口。
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。