什么是 FTP?
FTP(File Transfer Protocol,文件传输协议)是用于在网络上进行文件传输的一套标准协议。它工作在 OSI 模型的第七层(应用层),使用 TCP 传输协议,确保数据可靠传输。
FTP 于 1971 年首次提出,是互联网上最古老的协议之一。尽管已有更现代的替代方案,但 FTP 因其简单性和广泛支持,至今仍在许多场景中使用。
核心功能
上传和下载文件、创建和删除目录、重命名文件、设置文件权限等
连接模式
主动模式(Active)和被动模式(Passive),适应不同网络环境
端口使用
默认使用 21 端口(控制连接)和 20 端口(数据连接)
FTP 工作原理
FTP 使用两个独立的 TCP 连接来传输数据:
1. 控制连接(Control Connection)
客户端通过 21 端口连接到服务器,用于发送命令(如登录、列出目录、上传/下载请求等)。此连接在整个会话期间保持打开状态。
2. 数据连接(Data Connection)
用于实际传输文件或目录列表。根据模式不同,建立方式也不同:
- 主动模式:服务器从 20 端口主动连接到客户端指定的端口
- 被动模式:客户端连接到服务器指定的数据端口(通常 >1023)
# FTP 连接示例(命令行)
$ ftp example.com
Connected to example.com.
220 FTP Server ready.
Name: your_username
331 Password required for your_username.
Password: ********
230 User logged in.
ftp> ls
227 Entering Passive Mode (192,168,1,100,196,64)
150 Opening ASCII mode data connection for file list.
-rw-r--r-- 1 user group 1024 Jan 01 12:00 document.pdf
drwxr-xr-x 2 user group 4096 Jan 01 12:00 images/
226 Transfer complete.
FTP 安全性问题
传统 FTP 协议存在严重的安全缺陷:
⚠️ 重要安全警告
标准 FTP 以明文形式传输用户名、密码和所有数据,极易被窃听。在公共网络或处理敏感数据时,绝对不要使用未加密的 FTP。
安全替代方案
| 协议 | 加密方式 | 端口 | 安全性 |
|---|---|---|---|
| FTP | 无加密 | 21/20 | ❌ 极不安全 |
| FTPS (FTP Secure) | SSL/TLS 加密 | 990 (隐式) / 21 (显式) | ✅ 安全 |
| SFTP (SSH File Transfer Protocol) | SSH 加密 | 22 | ✅ 非常安全 |
建议:对于任何需要安全传输的场景,请使用 SFTP 或 FTPS 替代传统 FTP。
常用 FTP 客户端
以下是一些流行的 FTP 客户端软件,支持多种协议和操作系统:
FileZilla
开源免费,跨平台(Windows/macOS/Linux),支持 FTP、FTPS 和 SFTP
WinSCP
Windows 平台首选,专注于 SFTP 和 SCP,集成文本编辑器
Cyberduck
macOS 和 Windows 上的优雅选择,支持云存储服务集成
最佳实践建议
- 永远不要使用匿名 FTP 传输敏感数据
- 为每个用户创建独立账户并设置最小必要权限
- 定期更新 FTP 服务器软件以修补安全漏洞
- 使用强密码策略并定期更换密码
- 在防火墙中限制 FTP 访问 IP 范围
- 考虑使用SFTP 替代 FTP以获得端到端加密
- 启用日志记录以便审计和故障排查
遵循这些最佳实践可以显著提高您的文件传输安全性,防止数据泄露和未授权访问。