「FTP」- 文件传送协议,FILE TRACSFER PROTOCOL

  CREATED BY JENKINSBOT

问题描述

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