问题描述
FTP,用于传送文件的协议。
解决方案
使用 FTP 实现远程文件传输的同时,还能够保证数据传输的可靠性(TCP)和高效性。
原理简述
协议特性
WIP
应用场景
WIP
概念术语
控制连接,数据连接
在 FTP 中,协议连接与数据发送是分离的:
1)Control Connection,控制连接:用于发送控制信息,与 FTP 协议相关;
2)Data Connection,数据连接,用于发送数据(文件);
数据连接三大用途:
1)客户机向服务器发送文件 (上传)
2)服务器向客户机发送文件 (下载)
3)服务器向客户机发送文件列表 (查看那些东西可以下载)
协议模式:主动模式(FTP Server 主动连接 FTP Client)
主动模式,指 FTP Server 主动连接 FTP Client;
1)FTP Client,打开任意的非特权端口 Port-A(>1024),连接 FTP Server 的 21 端口;
2)FTP Client,开始监听端口 Prot-A+1,并发送命令 PORT <Port-A+1> 到 FTP Server;
3)FTP Server,从它的数据端口(20)连接到 FTP Client 的 PortA+1 端口,进行数据发送;
所用端口:
1)21,服务端口;
2)20,数据端口;
但是,很多 FTP Client 都是在内网中(NAT)发起连接,所以 FTP Server 通常无法连接 FTP Client,因此主动模式已经很少使用。
协议模式:被动模式(FTP Server 被 FTP Client 连接)
被动模式,指 FTP Server 被 FTP Client 连接;
1)FTP Client,当创建 FTP 连接时,将打开两个任意的非特权端口(Port-A 和 Port-A+1);
2)FTP Client,使用 Port-A 连接 FTP Server 的 21 端口,然后 FTP Client 发送 PASV 命令给 FTP Server;
3)FTP Server,收到 PASV 指令后,会开启任意的非特权端口(Port-C),并响应 PORT <Port-C> 命令给 FTP Client;
4)FTP Client,发起从端口 Port-A+1 到 FTP Server 的端口 Port-C 的连接用来传送数据。
所用端口:
1)21,服务端口;
2)<port-range>,数据端口;
补充说明:
1)在实际抓包过程中,我们未看到(3)的 PORT <Port-C> 响应(明文 PORT 指令)。不过 FTP Server 确实响应 PASV 指令,并返回数据端口。
传输模式
ASCII,用于传输文本。发送端,在发送前,字符被转换成 ASCII 码格式,然后进行传送。接收端,在收到后,再将其转化为字符。
Binary,用于传输图片和程序文件。发送端,在发送时无需进行格式转换,直接发送。
报文格式
WIP
协议细节
WIP
配置使用
Huawei VRP (FTP)
vsftpd – Secure, fast FTP server
参考文献
File Transfer Protocol – Wikipedia
IETF / FILE TRACSFER PROTOCOL(RFC 959)
Active vs. Passive FTP Simplified – Understanding FTP Ports