FTP 主动模式(Active) 被动模式(Passive)
默认为主动模式。
主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动等待客户端连接自己的数据端口。
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTP服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之内的主机,而只允许由防火墙之内的主机发起对外的连接请求。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器21短裤发送PASV命令,通知服务器使用被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
ACTIVE模式下安全性稍差,同时防火墙的配置也较为复杂,它必须预见到FTP SERVER端将主动给CLIENT端做数据发送。主动模式下的具体运行机制如下:
![](https://images0.cnblogs.com/blog/713868/201507/081510572994837.png)
1 客户端使用源端口5150与server端的21端口通信,请求建立连接。
2 server收到后,发送应答信息,OK(ACK),client and server通过控制端口交换控制信令。
3 当用户请求列出服务端目录或下载数据时,客户端软件会发送PORT命令,并包含有大于1023的随机端口号,告知服务端使用这个端口号将数据发送过来。这里客户端采用了5151(5150+1)端口。
4 服务端打开20端口做为数据发送的源端口,向客户端的5151端口发送。
5 客户端应答,传输过程结束。
被动模式较为安全,因为所有连接都是由客户端发起,所以连接被窃取的可能性减小了。之所以被称为被动模式,是因为服务端看起来完全是被动的。运行机制如下:
![](https://images0.cnblogs.com/blog/713868/201507/081510578774493.png)
1 被动模式下,客户端初始化控制信令连接,使用5150源端口与服务端的21端口建立连接,并使用PASSIVE命令请求进入被动模式。
2 服务端同意进入PASSIVE模式,并选择一个大于1023的随机端口号,告知客户端。
3 客户端接收到此信息后,使用自已的5151(5150+1)端口与刚才服务端提供的3268端口进行数据通信,这里5151是源,3268是目的。
4 服务端收到信息,回传数据并发送应答ACK(OK)