FTP的主动模式和被动模式的相关知识

FTP的主动模式和被动模式的相关知识。服务器

在使用FTP时,若是客户端机器和FTP服务器双方之间的全部端口都是开放的,那链接不存在问题。
若是客户端与服务器之间有防火墙,若是没配置好防火策略和采用合适的链接模式,会致使登陆成功,但没法List列表的问题。
要避免出现这样的问题,首先要了解FTP的工做模式。网络

1.FTP的PORT(主动模式)和PASV(被动模式)

(1) PORT(主动模式)

PORT中文称为主动模式,工做的原理: FTP客户端链接到FTP服务器的21端口,
发送用户名和密码登陆,登陆成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),
发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,
经过服务器的20端口和客户端开放的端口链接,发送数据,原理以下图:

FTP的主动模式和被动模式的相关知识

(2) PASV(被动模式)

PASV是Passive的缩写,中文成为被动模式,工做原理:FTP客户端链接到FTP服务器的21端口,
发送用户名和密码登陆,登陆成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 
服务器在本地随机开放一个端口(1024以上),而后把开放的端口告诉客户端, 
客户端再链接到服务器开放的端口进行数据传输,原理以下图:

FTP的主动模式和被动模式的相关知识

2.两种模式的比较

 从上面的运行原来看到,主动模式和被动模式的不一样简单概述为: 
 主动模式传送数据时是“服务器”链接到“客户端”的端口;被动模式传送数据是“客户端”链接到“服务器”的端口。

主动模式须要客户端必须开放端口给服务器,不少客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。

被动模式只须要服务器端开放端口给客户端链接就好了。

3.不一样工做模式的网络设置

我在实际项目中碰到的问题是,FTP的客户端和服务器分别在不一样网络,两个网络之间有至少4层的防火墙,
服务器端只开放了21端口, 客户端机器没开听任何端口。FTP客户端链接采用的被动模式,
结果客户端能登陆成功,可是没法LIST列表和读取数据。很明显,是由于服务器端没开放被动模式下的随机端口致使。

因为被动模式下,服务器端开放的端口随机,可是防火墙要不能所有开放,解决的方案是,
在ftp服务器配置被动模式下开放随机端口在 50000-60000之间(范围在ftp服务器软件设置,
能够设置任意1024上的端口段),而后在防火墙设置规则,开放服务器端50000-60000之间的端口端。

主动模式下,客户端的FTP软件设置主动模式开放的端口段,在客户端的防火墙开放对应的端口段。

4.如何设置 工做模式?

有人可能会问FTP服务器如何设置工做模式?
    FTP服务器通常都支持主动和被动模式,链接采用何种模式是有FTP客户端软件决定。
相关文章
相关标签/搜索