-
FTP主动模式
这里的“主动”是针对服务器而言的。
主动模式下,FTP客户端从任意的非特权端口(N > 1023)连入到FTP服务器的命令端口21。然后,客户端在N+1(N+1 >= 1024)端口监听。服务器会主动发起连接,连接内网的客户端。 -
FTP被动模式
这里的“被动”也是针对服务器而言的。即,服务器被动等待客户端发起的连接。
客户端打开两个任意的非特权本地端口N和N+1(N > 1023)。端口N连接服务器的端口21,但与主动方式的FTP不同,客户端不会发送PORT命令,而是发送PASV命令。服务器收到PASV命令后会开启一个任意的非特权端口P(P > 1023),并发送PORT P命令给客户端。然后,客户端发起从本地端口N+1到服务器的端口P的连接,以便传送数据。
- 被动模式在FTP服务器侧防火墙上带来的问题
在FTP服务器侧防火墙上需要开放大于1023的服务端口(DNAT,或者端口转发,nat server实现,此外还包括策略)。FTP服务器开放的随机高端口必须进行约束,将其限定在一个范围内方便在防火墙上配置数据。所幸大部分FTP Server程序都可以为这个随机高端口设定一个范围。当然FTP的客户端也必须支持被动模式——PASV。