在Linux中,vsftpd(Very Secure FTP Daemon)是一个流行的FTP服务器软件。在使用vsftpd时,有两种主要的传输模式:主动模式(Active Mode)和被动模式(Passive Mode)。这两种模式主要区别在于客户端和服务器之间如何建立数据连接。
主动模式(Active Mode)
- 客户端发起连接:
- 客户端首先通过TCP连接到服务器的FTP控制端口(通常是21)。
- 客户端发送PORT命令,告诉服务器它希望从哪个端口接收数据。
- 服务器响应:
- 服务器监听一个随机端口(通常是1024到5000之间的端口)。
- 服务器通过TCP连接到客户端指定的端口,以开始数据传输。
- 优点:
- 简单直接,适用于客户端在防火墙后面且允许出站连接的情况。
- 缺点:
- 如果客户端位于防火墙后面,服务器可能无法连接到客户端的指定端口,导致数据传输失败。
被动模式(Passive Mode)
- 客户端发起连接:
- 客户端首先通过TCP连接到服务器的FTP控制端口(通常是21)。
- 客户端发送PASV命令,请求服务器进入被动模式,并等待服务器提供一个用于数据传输的端口。
- 服务器响应:
- 服务器监听一个随机端口,并通过TCP将这个端口号发送给客户端。
- 客户端通过TCP连接到服务器提供的这个端口,以开始数据传输。
- 优点:
- 适用于客户端位于防火墙后面且只允许入站连接的情况。
- 服务器不需要主动连接到客户端,因此更容易穿透防火墙。
- 缺点:
- 需要服务器和客户端都支持被动模式。
- 在某些网络环境中,被动模式可能会遇到端口冲突或连接问题。
总结
- 主动模式:客户端发起数据连接,服务器响应。
- 被动模式:服务器发起数据连接,客户端响应。
选择哪种模式取决于客户端和服务器的网络环境以及防火墙配置。通常,被动模式更为通用和安全,特别是在客户端位于防火墙后面的情况下。