FTP 主动模式(PORT)与被动模式(PASV)

主动模式:服务器发起数据连接

FTP 客户临时端口 NFTP 服务器控制 21 / 数据 20① 建立控制连接:客户 → TCP 21② PORT N:告知客户数据端口③ 控制应答④ 服务器 TCP 20 → 客户 N⑤ 上传或下载文件

读图要点

  1. 控制连接始终由客户建立,并保持整个会话。
  2. 客户用 PORT 告知自己的临时端口 N。
  3. 服务器从固定数据端口 20 主动连接客户 N。
  4. 文件传完后只释放本次数据连接。
“主动”指服务器主动建立数据连接,不是指上传方向。

主动模式遇到客户侧防火墙 / NAT

客户侧防火墙 / NATFTP 客户FTP 服务器控制连接通过服务器主动连接客户 N× 入站连接被阻断

为什么控制连接能通过

控制连接由内网客户主动发起,防火墙或 NAT 能维护其连接状态。

数据连接却由外部服务器主动发起。客户侧设备若没有对应映射,就不知道应把入站连接交给哪台内部主机。

被动模式把数据连接也改为由客户发起,从而避开这个问题。

被动模式:客户发起数据连接

FTP 客户主动发起两条连接FTP 服务器控制 21 / 临时端口 M① 建立控制连接:客户 → TCP 21② PASV:请求被动模式③ 返回服务器临时端口 M④ 客户临时端口 → 服务器 M⑤ 上传或下载文件

读图要点

  1. 客户先在控制连接上发送 PASV
  2. 服务器开放临时端口 M,并把端口号返回客户。
  3. 客户主动连接服务器 M。
  4. 控制连接仍保持打开,数据连接按次释放。
“被动”指服务器被动等待数据连接;客户仍可以上传或下载。

主动模式与被动模式对比

比较项主动模式 PORT被动模式 PASV
控制连接客户临时端口 → 服务器 21客户临时端口 → 服务器 21
数据连接发起方服务器客户
服务器数据端口通常为固定端口 20服务器告知的临时端口 M
客户侧防火墙 / NAT外部服务器主动入站,容易被阻断两条连接均由客户发起,更友好
共同点控制连接贯穿会话;数据连接按文件或目录列表临时建立;传输方向不由主动/被动名称决定