Answers:
主动和被动是FTP可以运行的两种模式。
对于后台,FTP实际上使用客户端和服务器之间的两个通道,即命令和数据通道,它们实际上是独立的 TCP连接。
命令通道用于命令和响应,而数据通道用于实际传输文件。
将命令信息和数据分离到单独的通道中,这是一种能够将命令发送到服务器而不必等待当前数据传输完成的好方法。根据RFC,这仅适用于命令的子集,例如退出,中止当前传输以及获取状态。
在活动模式下,客户端建立命令通道,但是服务器负责建立数据通道。例如,如果客户端计算机受防火墙保护并且不允许来自外部方的未授权会话请求,则实际上可能是个问题。
在被动模式下,客户端建立两个通道。我们已经知道它会在活动模式下建立命令通道,并且在此处也是如此。
但是,它随后请求服务器(在命令通道上)开始侦听端口(由服务器决定),而不是尝试建立与客户端的连接。
作为此过程的一部分,服务器还将选择的要侦听的端口号返回给客户端,以便客户端知道如何连接。
客户端知道这一点后,便可以成功创建数据通道并继续。
RFC中提供了更多详细信息:https : //www.ietf.org/rfc/rfc959.txt
我最近在工作场所遇到了这个问题,所以我想在这里再说些什么。我将使用图像来说明FTP如何作为先前答案的其他来源。
活动模式:
被动模式:
在活动模式配置中,服务器将尝试连接到随机客户端端口。因此,该端口将不是那些预定义的端口之一。结果,尝试连接到它的将被防火墙阻止,并且将不会建立任何连接。
被动配置不会出现此问题,因为客户端将是发起连接的客户端。当然,服务器端也可能有防火墙。但是,由于期望服务器比客户端接收更多的连接请求,因此服务器管理员适应这种情况并开放端口选择以满足被动模式配置是合乎逻辑的。
因此,最好将服务器配置为支持被动模式FTP。但是,被动模式会使您的系统容易受到攻击,因为客户端应该连接到随机服务器端口。因此,要支持此模式,不仅服务器必须具有多个可用端口,而且防火墙还应允许与所有这些端口的连接通过!
为了减轻风险,一个好的解决方案是在服务器上指定端口范围,然后在防火墙上仅允许该范围的端口。
有关更多信息,请阅读正式文档。
我的文章FTP连接模式(主动与被动)的修订版本:
FTP连接模式(主动或被动)确定如何建立数据连接。在这两种情况下,客户端都会创建到FTP服务器命令端口21的TCP控制连接。这是标准的传出连接,与任何其他文件传输协议(SFTP,SCP,WebDAV)或任何其他TCP客户端应用程序(例如Web浏览器)一样)。因此,打开控制连接时通常没有问题。
与其他文件传输协议相比,FTP协议更复杂的地方是文件传输。其他协议将相同的连接用于会话控制和文件(数据)传输,而FTP协议将单独的连接用于文件传输和目录列表。
在活动模式下,客户端开始在随机端口上侦听来自服务器的传入数据连接(客户端发送FTP命令PORT
以通知服务器正在侦听哪个端口)。如今,通常客户端位于防火墙(例如内置Windows防火墙)或NAT路由器(例如ADSL调制解调器)之后,无法接受传入的TCP连接。
由于这个原因,引入了被动模式,并且如今已被广泛使用。使用被动模式是更可取的,因为大多数复杂的配置在服务器端仅由经验丰富的管理员执行一次,而不是在客户端(可能)由经验不足的用户单独执行。
在被动模式下,客户端使用控制连接向PASV
服务器发送命令,然后从服务器接收服务器IP地址和服务器端口号,然后客户端将其用于打开与服务器IP地址和服务器的数据连接收到的端口号。
使用被动模式时,大多数配置负担都在服务器端。服务器管理员应按以下说明设置服务器。
FTP服务器端的防火墙和NAT必须配置为不仅允许/路由FTP端口21上的传入连接,而且还必须配置一系列用于传入数据连接的端口。通常,FTP服务器软件具有配置选项来设置服务器将使用的端口范围。并且必须在防火墙/ NAT上打开/路由相同的范围。
当FTP服务器位于NAT之后时,它需要知道它的外部IP地址,以便可以将其提供给客户端以响应PASV
命令。
使用活动模式时,大多数配置负担都在客户端。
客户端上的防火墙(例如Windows防火墙)和NAT(例如ADSL调制解调器路由规则)必须配置为允许/路由用于传入数据连接的一系列端口。要在Windows中打开端口,请转到“ 控制面板”>“系统和安全性”>“ Windows防火墙”>“高级设置”>“入站规则”>“新规则”。有关在NAT上路由端口(如果有)的信息,请参阅其文档。
当网络中存在NAT时,FTP客户端需要使用PORT
命令知道WinSCP需要提供给FTP服务器的外部IP地址。这样服务器就可以正确连接回客户端以打开数据连接。有些FTP客户端能够自动检测外部IP地址,有些则必须手动配置。
某些防火墙/ NAT尝试通过检查FTP控制连接和/或在控制连接流量中转换数据连接IP地址来自动打开/关闭数据端口。
使用这样的防火墙/ NAT,对于普通的未加密FTP,不需要上述配置。但这不适用于FTPS,因为控制连接流量已加密,防火墙/ NAT无法检查或修改。
活动模式:-server启动连接。
被动模式:-client启动连接。
活动模式-客户端向服务器发出PORT命令,表明它将“主动”提供IP和端口号以将数据连接打开回客户端。
被动模式-客户端发出PASV命令以指示它将“被动”等待服务器提供IP和端口号,此后客户端将创建到服务器的数据连接。
上面有很多不错的答案,但此博客文章包含一些有用的图形并给出了相当扎实的解释:https : //titanftp.com/2018/08/23/what-is-the-difference-between-active-and -被动FTP /