FTP 协议 数据通道的两个工作模式
FTP 协议与端口:属于应用层协议,传输层使用 TCP 实现,服务端默认监听 21/TCP,用于和客户端建立控制连接。
FTP 的两个通道:FTP 将 指令传输 和 数据传输进行了分离:
-
指令通道:客户端和 FTP 服务端 21 端口建立的连接通道叫做指令通道,用于传输相关的控制指令信息。
-
数据通道:双方要进行数据传输时,会单独建立一个TCP连接用于数据传输。
FTP 根据数据连接由哪一方发起,分为两种模式:
-
主动模式(PORT):服务器发起。客户端通过 PORT 命令将自己的 IP 地址和端口告知服务端,服务端随后发起数据连接(通常使用 TCP 20 端口作为源端口)。
-
被动模式(PASV):客户端发起。服务端通过 PASV 命令向客户端返回自身的 IP 地址和一个随机高位端口,客户端再主动向该地址发起数据连接。
FTP 的工作模式由客户端决定:
-
主动模式:当客户端发送 PORT 命令后,此时会将客户端的 IP 地址和端口告知服务端,然后由 服务端 主动发起连接。
-
被动模式:当客户端发送 PASV 命令后,服务端会返回自身的 IP 地址和一个随机高位端口,客户端再主动连接。
所以 FTP 的工作模式是由 FTP 客户端发指定的指令来决定的,服务端只能决定是否支持或拒绝该模式,而不能主动切换客户端的工作模式。
FTP 数据连接的网络问题分析:
主动模式(PORT):因为需要客户端先给连接信息(地址+端口),若客户端位于 NAT 或防火墙之后,服务端一般没法成功连接。
- NAT:会导致客户端给的地址访问不到。
- 防火墙:若没有开放端口,服务器没法正确连接。
被动模式(PASV):因为是服务端先给连接信息(地址+端口),所以更适合NAT 和防火墙环境。
- 如果服务端也有防火墙,要配置被动端口范围,不然客户端也连不上。
- 服务端在NAT场景下,要配置返回可访问的公网 IP。
FTP 查看当前工作模式方法:
通过查看日志文件,若日志里面出现了 PASV、EPSV 等命令,说明是被动模式;若出现了PORT 命令,说明就是主动模式。
浙公网安备 33010602011771号