FTP基于TCP连接,交互过程分为控制通道和数据通道。控制通道发送和回应FTP命令,数据通道传输文件数据等信息。
FTP服务器默认监听端口控制通道为21,数据通道为20。
FTP服务器在控制通道端口进行监听,客户端与服务器控制通道端口建立连接,客户端通过向服务器端发送控制命令来进行流程控制,当有数据传输时(LIST-列取所有文件信息, RETR-获取文件等命令)开始建立数据通道。数据通道的建立有两种方式,主动模式和被动模式,主动模式为客户端主动在端口监听,通过发送PORT命令告诉服务器端监听的端口,服务器端连接此端口来进行数据传输。被动模式为服务器在数据端口进行监听(默认为20),通过客户端发送的PASV(进入被动模式)命令的回应来告诉客户端监听的地址和端口,客户端通过连接此端口来进行数据传输。数据传输结束后服务器端通过控制通道向客户端发送数据传输结束消息。
FTP服务器回应包括三个数字和一些文本,客户端根据这三个数字来检测下一步要进入的状态。回应包括三个数字码+空格+文本。三个数字码代表含义为:
1yz:确定预备应答
2yz:确定完成回应
3yz:确定中间回应
4yz:暂时拒绝完成回应
5yz:永久拒绝完成应答
x0z:语法--该类回应指出语法错误。指令虽拼写正确但不适合任何功能种类;未实现的或不必要的指令。
x1z:信息--该类回应请求信息,比如像状态或帮助信息。
x2z:连接--该类回应关于控制连接和数据连接。
x3z:认证和账户--该类回应关于登陆过程和帐户程序。
x4z:保留
x5z:文件系统--该类回应指出服务器文件系统的状态,与请求的传输或其他文件系统操作有关。
第三个数字给出第二个数字指出的功能类别更详细的信息。
FTP指令状态图:
FTP最简单的指令状态图为
适合该图模型的指令有:
ABOR, ALLO, DELE, CWD, CDUP, SMNT, HELP, MODE, NOOP, PASV, QUIT, SITE, PORT, SYST, STAT, RMD, MKD, PWD, STRU, TYPE
第二组状态图表现形式与上图相似
适合该指令模型的指令有:
APPE, LIST, NLST, REIN, RETR, STOR, STOU
第三组模型需要发送两次指令:
此指令目前只有重命令,CMD1为RNFR,CMD2为RNTO。
第四组模型是重新开始模型
CMD2为APPE, STOR, RETR
第五种模型是最复杂的状态图,为登陆顺序:
参考文献:RFC959
领取专属 10元无门槛券
私享最新 技术干货