一个是数据端口,一个是控制端口,控制端口通常为21,而数据端口不一定是20,这和FTP的应用模式有关,若果是主动模式,应当为20,倘若为被动模式,由服务器端和顾客端协商而定
FTPPort模式和FTPPassive模式
当你对一个FTP问题进行排错时侯,你首先要问的一个问题是使用的是port模式的还是passive模式。由于这两种行为迥异,所以这两种模式造成的问题也不同;在过去,顾客端缺省为active(port)模式;最近,因为Port模式的安全问题,许多顾客端的FTP应用缺省为Passive模式。
>>2.1FTPPort模式
Port模式的FTP步骤如下:
1、客户端发送一个TCPSYN(TCP同步)包给服务器段众所周知的FTP控制端口21,顾客端使用暂时的端口作为它的源端口;
2、服务器端发送SYNACK(同步确认)包给顾客端,源端口为21,目的端口为顾客端上使用的暂时端口;
3、客户端发送一个ACK(确认)包;顾客端使用这个联接来发送FTP命令,服务器端使用这个联接来发送FTP应答;
4、当用户恳求一个列表(List)恳求或则发起一个要求发送或则接受文件的恳求,顾客端软件使用PORT命令,这个命令包含了一个暂时的端口,顾客端希望服务器在打开一个数据联接时侯使用这个暂时端口;PORT命令也包含了一个IP地址,这个IP地址一般是顾客自己的IP地址,并且FTP也支持第三方(third-party)模式,第三方模式是顾客端告诉服务器端打开与另台主机的联接;
5、服务器端发送一个SYN包给顾客端的暂时端口,源端口为20,暂时端口为顾客端在PORT命令中发献给服务器端的暂时端标语;
6、客户端以源端口为暂时端口,目的端口为20发送一个SYNACK包;
7、服务器端发送一个ACK包;
8、发送数据的主机以这个联接来发送数据,数据以TCP段(注:segment,第4层的PDU)方式发送(一些命令,如STOR表示顾客端要发送数据,RETR表示服务器段发送数据),这种TCP段都须要对方进行ACK确认(注:由于TCP合同是一个面向联接的合同)
9、当数据传输完成之后,发送数据的主机以一个FIN命令来结束数据联接,这个FIN命令须要另一台主机以ACK确认,另一台主机也发送一个FIN命令,这个FIN命令同样须要发送数据的主机以ACK确认;
10、客户端能在控制联接上发送更多的命令,这可以打开和关掉另外的数据联接;有时侯顾客端结束后,顾客端以FIN命令来关掉一个控制联接,服务器端以ACK包来确认顾客端的FIN,服务器同样也发送它的FIN,顾客端用ACK来确认。