主动和被动FTP有什么区别?

时间:2009-11-09 04:51:15

标签: ftp

有人请告诉我主动和被动FTP有什么区别?哪个更好?

5 个答案:

答案 0 :(得分:454)

主动和被动是FTP可以运行的两种模式。

对于后台,FTP实际上在客户端和服务器,命令和数据通道之间使用两个通道,这些通道实际上是单独的 TCP连接。

命令通道用于命令和响应,而数据通道用于实际传输文件。

将命令信息和数据分离为单独的通道,这是一种能够向服务器发送命令而无需等待当前数据传输完成的极好方法。根据RFC,这仅限于命令的子集,例如退出,中止当前传输和获取状态。


活动模式下,客户端建立命令通道,但服务器负责建立数据通道。例如,如果客户端计算机受防火墙保护并且不允许来自外部方的未经授权的会话请求,则实际上这可能是一个问题。

被动模式下,客户端建立两个频道。我们已经知道它在活动模式下建立命令通道,它在这里也是如此。

然而,它然后请求服务器(在命令通道上)在端口上启动监听(由服务器自行决定),而不是尝试建立连接回客户端。

作为此项的一部分,服务器还会向客户端返回它选择侦听的端口号,以便客户端知道如何连接它。

一旦客户知道,它就可以成功创建数据通道并继续。

RFC中提供了更多详细信息:https://www.ietf.org/rfc/rfc959.txt

答案 1 :(得分:157)

我最近在工作场所碰到了这个问题所以我想我应该在这里说些什么。我将使用image来解释FTP如何作为前一个答案的附加来源。

活动模式:

active mode


被动模式:

enter image description here


在活动模式配置中,服务器将尝试连接到随机客户端端口。很可能,该端口不会是这些预定义端口之一。因此,防火墙将阻止尝试连接到它,并且不会建立任何连接。

enter image description here


被动配置不会出现此问题,因为客户端将是启动连接的客户端。当然,服务器端也可能有防火墙。但是,由于与客户端相比,预计服务器会收到更多的连接请求,因此服务器管理员可以适应这种情况并打开一系列端口来满足被动模式配置。

因此,最好配置服务器以支持被动模式FTP。但是,被动模式会使您的系统容易受到攻击,因为客户端应该连接到随机服务器端口。因此,要支持此模式,您的服务器不仅必须有多个端口可用,您的防火墙还应允许连接到所有这些端口!

为了降低风险,一个好的解决方案是在服务器上指定一系列端口,然后只允许防火墙上的那个端口范围。

有关详细信息,请阅读official document

答案 2 :(得分:12)

我的文章FTP Connection Modes (Active vs. Passive) 的编辑版本:

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客户端需要知道WinSCP需要使用PORT命令向FTP服务器提供的外部IP地址。这样服务器就可以正确连接回客户端来打开数据连接。有些FTP客户端能够自动检测外部IP地址,有些必须手动配置。

智能防火墙/ NAT

某些防火墙/ NAT尝试通过检查FTP控制连接和/或转换控制连接流量中的数据连接IP地址来自动打开/关闭数据端口。

使用这样的防火墙/ NAT,对于普通的未加密FTP,上述配置不是必需的。但这不能用于FTPS,因为控制连接流量是加密的,防火墙/ NAT不能检查也不能修改它。

答案 3 :(得分:9)

活动模式:  -server启动连接。

被动模式:  -client启动连接。

答案 4 :(得分:0)

活动模式-客户端向服务器发出PORT命令,表明它将“主动”提供IP和端口号以打开返回到客户端的数据连接。

被动模式-客户端发出PASV命令以指示它将“被动”等待服务器提供IP和端口号,然后客户端将创建到服务器的数据连接。

上面有很多好的答案,但是此博客文章包含一些有用的图形,并给出了非常扎实的解释:https://titanftp.com/2018/08/23/what-is-the-difference-between-active-and-passive-ftp/