FTP被动模式(Passive Mode)

FTP

FTP是文件传输协议(File Transfer Protocol)的缩写。它是一种用于在网络上传输文件的标准协议。通过FTP,用户可以在客户端和服务器之间传输文件,例如上传、下载、删除和重命名文件。FTP通常用于网站维护、文件共享和远程服务器管理等方面。用户可以通过FTP客户端软件(如FileZilla、WinSCP等)连接到FTP服务器,并进行文件操作。FTP使用端口号21进行通信,通常需要提供用户名和密码进行身份验证。

FTP协议和其他协议不一样的地方:

Client访问FTP Server需建立2个TCP连接

  • 控制连接标准端口:21 用于发送FTP命令信息

  • 数据连接标准端口:20 用于上传、下载数据

FTP工作模式

主动模式(Port Mode)

Server端从20端口主动向Client端发起连接

  1. Client提交Port命令并允许Server来回连他的数据端口(1027端口)

  2. Server返回确认

  3. Server向Client发送TCP连接请求、源端口20、目标端口1027、建立起传输数据的连接

screenshot-20240306-165236.png

被动模式(Passive Mode)

Server端在指定范围内的某端口被动等待用户、被动进行连接

  1. Client端的命令端口与Server端的命令端口建立连接、并提交PASV命令

  2. Server返回命令“Port 2024”告诉Client:Server要用哪个端口监听数据连接

  3. Client初期化一个从自己的数据端口到Server指定的数据端口的数据连接

  4. Server给Client的数据端口返回一个“ACK”响应

screenshot-20240306-165252.png

总结

主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。