首页 文章

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

提问于
浏览
280

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

5 回答

  • 143

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

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

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

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


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

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

    但是,它然后请求服务器(在命令通道上)开始侦听端口(由服务器自行决定),而不是尝试 Build 连接回客户端 .

    作为其中的一部分,服务器还将客户端选择要侦听的端口号返回给客户端,以便客户端知道如何连接到它 .

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

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

  • 436

    我最近在工作场所碰到了这个问题所以我想我应该在这里说些什么 . 我将使用图像来解释FTP如何作为以前答案的额外来源 .

    活动模式:

    active mode


    被动模式:

    enter image description here

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

    enter image description here

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

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

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

    有关更多信息,请阅读official document .

  • 0

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

    FTP连接模式(主动或被动)确定如何 Build 数据连接 . 在这两种情况下,客户端都会创建到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无法检查或修改它 .

  • 6

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

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

  • 11

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

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

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

相关问题