1.主动模式
Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。(可以看到在这种方式下是客户端和服务器建立控制连接,服务器向客户端建立数据连接,其中,客户端的控制连接和数据连接的端口号是大于1024的两个端口号(临时端口),而FTP服务器的数据端口为20,控制端口为21)
核心要点:客户端首先启用一个大于1023(假设为x)的端口,主动连接至服务端的21端口,并告知客户端的数据端口(x+1),然后服务端主动通过20端口连接到客户端的x+1,即数据传输在20端口与x+1端口之间,而命令端口在21端口和x之间
2.被动模式
Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个临时端口(也叫自由端口,端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。
核心要点:客户端在一个随机端口x连接至服务端21端口后,发送Pasv命令,服务端打开一个大于1023的端口(设为n)并告知客户端,然后客户端主动在x+1端口与n进行数据传输