FTP(文件传输协议)有两种基本模式来处理数据连接:主动模式(Active Mode)和被动模式(Passive Mode)。它们的主要区别在于数据连接的建立方式。
客户端(命令端口:1025) → 服务器(端口21)
客户端←PORT 192.168.1.100:1026→ 服务器
客户端 ← 服务器(端口20 → 客户端1026端口)
优点:
客户端(命令端口:1025) → 服务器(端口21)
客户端←PASV→ 服务器
客户端←Entering Passive Mode (192.168.2.100,195,100)→ 服务器
客户端(端口1026) → 服务器(端口50000) # 195*256+100=50000
优点:
更好的防火墙兼容性:客户端发起所有连接
NAT友好:适合客户端在防火墙或NAT之后的情况
更安全:服务器不需要连接回客户端
缺点:
服务器配置复杂:需要开放大量数据端口
服务器防火墙需开放端口范围
| 特性 | 主动模式 | 被动模式 |
|---|---|---|
| 数据连接方向 | 服务器 → 客户端 | 客户端 → 服务器 |
| 服务器数据端口 | 固定为20 | 随机高端口 |
| 客户端角色 | 监听端口,等待连接 | 主动连接到服务器 |
| 防火墙友好性 | 对客户端防火墙不友好 | 对客户端防火墙友好 |
| NAT兼容性 | 差 | 好 |
| 服务器配置 | 简单 | 需要配置数据端口范围 |
| 安全性 | 较低(客户端需暴露端口) | 较高 |
# 主动模式配置
port_enable=YES
connect_from_port_20=YES
# 被动模式配置
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=60000
pasv_address=公网IP地址 # 重要:NAT环境下需指定公网IP
客户端选择模式:
passive命令切换LIST或RETR220 FTP Server Ready
USER username
331 Password required
PASS password
230 Login successful
PORT 192,168,1,100,4,1 # 192.168.1.100:1025(4*256+1)
200 PORT command successful
LIST
150 Opening ASCII mode data connection
被动模式会话片段:
USER username
PASS password
PASV # 请求被动模式
227 Entering Passive Mode (192,168,2,100,195,100) # 192.168.2.100:50000
LIST
在现代网络环境中,由于普遍存在的防火墙和NAT设备,被动模式已成为默认和推荐的选择。主动模式主要在一些特定的内部网络环境或传统系统中使用。理解这两种模式的区别对于FTP服务器的配置和故障排除至关重要。