本文译自
Active and Passive modes in FTP
,仅用于学习,不作商业用途
FTP
的主动和被动模式是 客户端和服务器端独立使用各自通道的 FTP
的两种连接模式,命令通道和数据通道,通常分离为两个TCP连接。命令通道通常基于 21 端口,数据通道基于 20 端口。命令通道通常处理命令和响应的传输,数据通道处理实际的文件传输。
FTP
主动模式和被动模式连接的不同在于服务器端或者客户端发起数据连接。对于主动模式,服务器端在命令通道客户端建立连接之后发起到客户端的数据连接。被动模式则相反,客户端发起到服务器端的数据连接。
主动模式的事件序列:
- 你的客户端(例如
filezilla
)通过建立到服务端 21 端口的FTP
控制连接 来连接FTP
服务器端。 - 当客户端通过控制连接请求数据时,服务端向客户端发起数据传输连接。数据传输连接的源端口始终是服务端的 20 端口 ,而目标端口是客户端上的一个高端口(大于1024)。
FTP
主动模式当客户端设置了防火墙并受到多对一的 NAT
(伪装)防护。这是因为防火墙不能是别再后面的众多服务端,哪个应该接收返回的连接。
对于服务端,主动模式更安全, 它不要求服务端打开不安全的端口。 因为服务端发起到客户端的数据连接。
注意: AUSWEB Windows Hosting Solutions
默认就是 FTP
主动模式,你需要在你的 FTP
客户端开启。
被动模式有这不同的事件序列:
- 你的客户端通过建立到服务端 21 端口的
FTP
控制连接来连接FTP
服务端。 - 当客户端通过连接请求数据时,客户端向服务端发起数据传输连接。数据传输连接的源端口始终是客户端上的一个高端口,而目标端口是服务器上的一个高端口。
即使服务端从不积极进行尝试去连接客户端来进行 FTP
的数据传输,被动模式也应该能看见。因为客户端始终发起请求连接,所以被动模式更适合受防火墙保护的客户端。