FTP
基于 TCP 协议,是一种用于在计算机之间传输文件的协议,可以屏蔽操作系统和文件存储方式。
#status / growing
#type / concept
[!info] related notes
FTP
FTP(File Transfer Protocol,文件传输协议):基于 TCP 协议,用于在计算机之间传输文件的协议,可以屏蔽操作系统和文件存储方式。
工作模式
FTP 使用双连接模型:
| 连接 | 端口 | 用途 |
|---|---|---|
| 控制连接 | TCP 21 | 传输命令和响应(持续保持) |
| 数据连接 | TCP 20(主动模式)或随机端口(被动模式) | 传输文件内容 |
主动模式 vs 被动模式
- 主动模式(Active):服务器主动连接客户端的数据端口。问题:客户端在 NAT/防火墙后时,服务器无法主动连入。
- 被动模式(Passive):客户端主动连接服务器的临时数据端口。现代环境中几乎都用被动模式。
传输模式
- ASCII 模式:文本文件,自动转换换行符(Windows
\r\nvs Unix\n) - 二进制模式(Binary):图片、压缩包等,原样传输不做转换
[!warning] 选择错误的传输模式会导致文件损坏 二进制文件用 ASCII 模式传输会损坏;文本文件用二进制模式传输通常没问题。
安全隐患
[!important] 安全警告 FTP 是一种不安全的协议。用户名、密码和数据全部以明文传输,容易被中间人攻击窃取。
| 风险 | 说明 |
|---|---|
| 明文传输 | 凭据和数据可被嗅探 |
| 无加密 | 中间人可篡改传输内容 |
| 弱认证 | 仅用户名/密码,无密钥认证 |
| 无完整性校验 | 无法检测传输是否被篡改 |
现代替代方案
FTP 已基本被淘汰,现代环境中应使用以下替代:
| 替代 | 协议基础 | 说明 |
|---|---|---|
| SFTP | SSH(TCP 22) | 通过 SSH 隧道传输,加密且防火墙友好 |
| SCP | SSH(TCP 22) | 简单的加密文件复制,适合一次性传输 |
| FTPS | FTP + TLS | FTP 的加密版本,但配置复杂、防火墙不友好 |
| HTTP/S | HTTP/HTTPS | Web 文件下载/上传,最通用 |
SFTP 和 SCP 都基于 SSH 协议,只需要开放一个端口(22),配置简单且安全。在绝大多数场景下,SFTP 是 FTP 的直接替代品。