FTP 主动模式

• 原理:

客户端先随机开启一个大于 1024 的端口(假设为 N)向服务器的 21 端口发起连接,建立控制连接 。当需要传输数据时,客户端通过控制连接发送 PORT 命令,告知服务器自己用于接收数据的端口(N+1 )。服务器收到命令后,会从自己的 20 端口主动向客户端指定的端口(N+1)发起数据连接,进行数据传输。 (在主动模式下,客户端 发起控制连接到服务器,而服务器用来传输数据的端口是由 服务器 发起的连接到客户端)

• 优点 :

◦ 对于服务器来说配置简单,因为数据连接由服务器主动发起,服务器可以更好地控制数据传输过程。

• 缺点 :

◦ 客户端需要开放端口给服务器来连接,在存在防火墙的网络环境中,防火墙很难判断哪些是合法的服务器连接请求,容易造成数据连接被防火墙拦截,导致数据传输失败。

FTP 被动模式

• 原理:

客户端同样先随机开启一个大于 1024 的端口(假设为 M)与服务器的 21 端口建立控制连接。当需要传输数据时,客户端通过控制连接发送 PASV 命令,服务器收到命令后,会在自己本地随机开启一个大于 1024 的端口(假设为 P),并通过控制连接将这个端口号告知客户端。然后客户端再从自己的另一个端口(M+1)向服务器刚刚开放的端口(P)发起数据连接,完成数据传输。(在被动模式下,**客户端**仍然发起控制连接,但在传输数据时,**客户端** 会请求服务器开放一个随机的端口来进行数据传输,服务器只负责监听数据连接,客户端主动发起连接。)

• 优点 : ◦ 数据连接由客户端发起,在防火墙环境下,客户端只需要允许自己主动发起的连接,防火墙配置相对容易,能更好地适应复杂的网络环境,避免被防火墙拦截数据连接的情况。

• 缺点 : ◦ 对于服务器而言,需要开放多个随机端口等待客户端连接,增加了服务器的管理难度和安全风险 ,因为难以预测和控制哪些端口会被使用。