FTP
- 文件传输协议,File Transfer Protocol
- 最古老的网络服务之一
- 默认端口 21
- 20 端口用于数据传输
https://en.wikipedia.org/wiki/File_Transfer_Protocol
B/S 模式,一个连接两个通道,命令通道传输控制指令以及响应,数据通道传输数据。
认证
S: 220 Welcome to markjour.cn FTP service.
C: USER admin
S: 331 Please specify the password.
C: PASS ****************
S: 230 Login successful.
主动、被动
- 主动模式:PORT 命令连接服务器,服务器再创建一个连接,使用 20 端口连接客户端指定端口
- 客户端从一个随机端口 A 连接服务器 21 端口,这是命令通道
- 客户端监听另一个随机端口 B,并通过命令通道发送 PORT 命令(port B),告诉服务器客户端开放的数据端口
- 服务器通过 20 端口连接到客户端数据端口
- 被动模式:PASV 命令连接服务器,服务器随机选择一个端口,客户端就连接这个端口
IPv6 引入之后,有了两个新的指令(RFC#2428):
- EPRT 命令
EPRT |<网络协议>|<IP>|<端口>|
- 网络协议:1 IPv4;2 IPv6
- EPSV 命令
- 拓展被动模式 Extended Passive Mode
EPSV 1
,EPSV 2
,EPSV ALL
命令
https://en.wikipedia.org/wiki/List_of_FTP_commands
FTPS
FTP Secure,FTP over SSL
FTP + TLS
显式 TLS / 隐式 TLS
SFTP
Secure File Transfer Protocol,安全文件传送协议,SSH 的一部分。
需要借助 sshd 充当服务器端。
https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol
SFTP 和 FTPS 的区别就是分别使用 SSH 协议和 TLS 协议实现网络加密。
TFTP
- 小型文件传输协议,Trivial File Transfer Protocol
- 1981 年,RFC 783
- 只在 PXE 场景下见过
常用工具
- https://en.wikipedia.org/wiki/Comparison_of_FTP_client_software
- https://en.wikipedia.org/wiki/Comparison_of_FTP_server_software_packages
其他文件传输协议
https://en.wikipedia.org/wiki/Comparison_of_file_transfer_protocols
- FSP https://en.wikipedia.org/wiki/File_Service_Protocol