今天桂哥网络向你展示了文件传输协议主动模式和被动模式的区别。内容简洁易懂,一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。
基础知识:
FTP只通过TCP连接,FTP没有UDP组件。FTP不同于其他服务,它使用两个端口,一个数据端口和一个命令端口(或控制端口)。通常,端口21是命令端口,端口20是数据端口。当混合主动/被动模式的概念时,数据端口可能不是20。
主动模式FTP:
在主动模式下,文件传输协议客户端从任何非特殊端口(N 1023)连接到文件传输协议服务器-port 21的命令端口。然后客户端在N 1(N 1=1024)端口监控,通过N 1(N 1=1024)端口向FTP服务器发送命令。服务器,依次连接到用户在本地指定的数据端口,如端口20。
基于服务器防火墙,为了支持主动模式的文件传输协议,有必要打开以下交互中使用的端口:
FTP服务器命令(21)端口接受客户端的任何端口(客户端的初始连接)
FTP服务器命令(21)端口到客户端端口(1023)服务器响应客户端命令)
FTP服务器数据(20)端口到客户端端口(1023)服务器初始化数据连接到客户端数据端口)
FTP服务器数据(20)端口接受客户端端口(1023)(客户端向服务器的数据端口发送确认数据包)
如下图:
在第一步中,客户端的命令端口与文件传输协议服务器,的命令端口建立连接,并发送命令“端口1027”。然后,在步骤2中,文件传输协议服务器向客户端的命令端口返回一个“确认”。在第三步中,FTP服务器发起从其自己的数据端口(20)到客户端先前指定的数据端口(1027)的连接,最后客户端在第四步中向服务器返回“确认”。
主动FTP的主要问题其实是客户端。FTP客户端实际上并没有建立到服务器数据端口的连接,而是简单地告诉服务器他正在监听的端口号,然后服务器回来将客户端连接到指定的端口。对于客户端的防火墙来说,这是从外部系统到内部客户端的连接,通常是被阻塞的。
被动模式FTP
为了解决服务器向客户发起连接的问题,人们开发了一种不同的文件传输协议连接模式。这就是所谓的被动模式,即PASV模式,当客户端通知服务器它处于被动模式时,该模式将被启用。
在被动FTP中,命令连接和数据连接都由客户端进行,可以解决从服务器到客户端数据端口的传入连接被防火墙过滤的问题。当打开一个FTP连接时,客户端打开两个任意的非特权本地端口(n;1024和N 1)。第一个端口连接到服务器,的端口21,但与主动模式下的文件传输协议不同,客户端不会提交端口命令并允许服务器来回连接其数据端口,而是提交PASV命令。因此,服务器将开放一个任意的非特权端口(P;1024),并向客户端发送端口P命令。然后,客户端启动从本地端口N 1到服务器端口P的连接,以传输数据。
对于服务器端的防火墙,一定要允许以下通信来支持被动FTP:
FTP服务器命令(21)端口接受客户端的任何端口(客户端的初始连接)
FTP服务器命令(21)端口到客户端端口(1023)服务器响应客户端命令)
FTP服务器数据端口(1023)接受客户端端口(1023)(客户端初始化数据连接到服务器指定的任何端口)
FTP服务器数据端口(1023)到客户端端口(1023)服务器向客户端数据端口发送确认响应和数据)
如下图:
在步骤1中,客户端的命令端口与服务器的命令端口建立连接,并发送命令“PASV”。然后,在第2步,服务器返回命令“端口2024”,告诉客户端服务器监听哪个端口的数据连接。在步骤3中,客户端初始化从其自己的数据端口到由服务器终端指定的数据端口的数据连接。最后,在步骤4中,服务器向客户端的数据端口返回“确认”响应。
被动FTP解决了客户端的很多问题,但也给服务器端带来了更多的问题。最大的问题是需要允许任意
远程终端到服务器高位端口的连接。幸运的是,许多FTP守护程序,包括流行的WU-FTPD允许管理员指定FTP服务器使用的端口范围。详细内容参看附录1。第二个问题是客户端有的支持被动模式,有的不支持被动模式,一定要考虑如何能支持这些客户端,以及为他们提供解决办法。例如,Solaris提供的FTP命令行工具就不支持被动模式,需要第三方的FTP客户端,比如ncftp。
随着WWW的广泛流行,许多人习惯用web浏览器作为FTP客户端。大多数浏览器只在访问ftp://这样的URL时才支持被动模式。这到底是好还是坏取决于服务器和防火墙的配置。
备注:
有读者指出,当NAT(Network Address Translation)设备以主动模式访问FTP服务器时,由于NAT设备不会聪明的变更FTP包中的IP地址,从而导致无法访问服务器。
总结
下面的图表会帮助管理员们记住每种FTP方式是怎样工作的:
主动FTP:
命令连接:客户端 >1023端口 -> 服务器 21端口
数据连接:客户端 >1023端口 <- 服务器 20端口
被动FTP:
命令连接:客户端 >1023端口 -> 服务器 21端口
数据连接:客户端 >1023端口 -> 服务器 >1023端口
下面是主动与被动FTP优势和劣势的简要总结:
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么一定要得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。详细信息参看附录1。
上述内容就是FTP主动模式和被动模式有什么不同,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
TikTok千粉号购买平台:https://tiktokusername.com/
TOP