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无法检查或修改它 .