6. 文件传输协议FTP
6.1 FTP主动和被动模式
(1)FTP协议
①与其他协议不同,FTP协议在客户端访问FTP服务器时需要建立两个TCP连接。一个用来传输FTP命令,一个用来传输数据。
②在FTP服务器上需要开放两个端口,一个命令端口(或称为控制端口)和一个数据端口。通常命令端口为21,数据端口为20。当考虑主动/被动模式时,数据端口可能不是20。
(2)主动模式(建立传输数据的TCP连接由FTP服务器主动发起)
①工作过程
A.第1步中,FTP客户端提交PORT命令并允许服务器来回连它的数据端口(1027)。
B.第2步中,服务器返回确认。
C.第3步中,FTP服务器向客户端发送TCP连接请求,目标端口为1027,源端口为20.为传输数据发起建立连接的请求。
D.第4步中,FTP客户端发送确认数据服文,目标端口20,源端口1027,建立传输数据的连接。
②主要问题
A.主动模式下FTP服务器只需打开TCP的21端口和20端口。而FTP客户端防火墙要将TCP协议号大于1023的端口全部打开。
B.主动模式下FTP的主要问题在客户端,因为服务器为了建立传输数据的连接,会回连客户端指定的端口。对于客户端防火墙来说,这是从外部系统到内部客户端的连接,通常会被阻塞,除非关闭客户端防火墙。
(3)被动模式(命令连接和数据连接都由客户端发起,FTP服务器只是被动连接)