FTP 主动模式(PORT)与被动模式(PASV)
主动模式:服务器发起数据连接
读图要点
- 控制连接始终由客户建立,并保持整个会话。
- 客户用
PORT告知自己的临时端口 N。 - 服务器从固定数据端口 20 主动连接客户 N。
- 文件传完后只释放本次数据连接。
“主动”指服务器主动建立数据连接,不是指上传方向。
主动模式遇到客户侧防火墙 / NAT
为什么控制连接能通过
控制连接由内网客户主动发起,防火墙或 NAT 能维护其连接状态。
数据连接却由外部服务器主动发起。客户侧设备若没有对应映射,就不知道应把入站连接交给哪台内部主机。
被动模式把数据连接也改为由客户发起,从而避开这个问题。
被动模式:客户发起数据连接
读图要点
- 客户先在控制连接上发送
PASV。 - 服务器开放临时端口 M,并把端口号返回客户。
- 客户主动连接服务器 M。
- 控制连接仍保持打开,数据连接按次释放。
“被动”指服务器被动等待数据连接;客户仍可以上传或下载。
主动模式与被动模式对比
| 比较项 | 主动模式 PORT | 被动模式 PASV |
|---|---|---|
| 控制连接 | 客户临时端口 → 服务器 21 | 客户临时端口 → 服务器 21 |
| 数据连接发起方 | 服务器 | 客户 |
| 服务器数据端口 | 通常为固定端口 20 | 服务器告知的临时端口 M |
| 客户侧防火墙 / NAT | 外部服务器主动入站,容易被阻断 | 两条连接均由客户发起,更友好 |
| 共同点 | 控制连接贯穿会话;数据连接按文件或目录列表临时建立;传输方向不由主动/被动名称决定 | |