FTP是基于TCP的高级文件协议,在传输的过程中,主要分为建立连接和数据传输两部分,响应的涉及到服务器端的命令端口和数据端口。建立连接是采用tcp的三次握手模型,对于ftp服务器来说,采用固定的21命令端口和客户端进行通信,在数据传输过程中,根据FTP传输的时候的服务端数据通信过程中选择不同数据端口,可以将ftp分为主动模式(Port)和被动模式(Pasv),这两种模式,对于客户端来说,端口没有固定性,只是在创建的时候,可以主动指定本地端口,或者是随机端口,而对于服务器来说,差异性在于采用服务器上的固定20端口,还是服务器根据连接即时创建1025以上的数据端口。但是命令传输端口,对于服务器来说,永远都是21端口。
FTP服务端支持两种模式,具体通讯过程中选择哪一种模式,是由客户端选择决定的,接下来阐述两种模式的具体过程以及相关原理。
1.ftp两种运行模式
Port模式(主动)
FTP客户端从任意的非特殊的端口(N > 1023)连入到FTP服务器的命令端口--21端口。然后客户端在N+1(N+1 >= 1024)端口监听,并且通过N+1(N+1 >= 1024)端口发送命令给FTP服务器。服务器会建立从服务器20端口到用户本地指定的端口的数据传输连接。
主动模式的FTP的 主要问题实际上落在客户端。FTP 的客户端并不会主动连接到服务器的数据端口,而是是告诉服务器它正在监听哪个端口,然后服