网工日记:FTP工作模式
-
FTP 基本概念
- FTP(File Transfer Protocol)即文件传输协议,是用于在网络上进行文件传输的标准协议。它运行在 TCP/IP 协议栈之上,采用客户端 - 服务器(C/S)架构,通过在客户端和服务器之间建立控制连接和数据连接来实现文件的传输。
-
FTP 的工作模式
- 主动模式(PORT 模式)
- 工作原理:
- 客户端首先向服务器的 FTP 控制端口(通常是 21 端口)发起连接请求,建立控制连接。在控制连接上,客户端发送 PORT 命令告知服务器自己用于接收数据的临时端口号。
- 服务器收到 PORT 命令后,会从自己的数据端口(通常是 20 端口)主动向客户端指定的临时端口发起数据连接,然后通过这个数据连接进行文件传输。
- 命令视图示例(以 Linux 系统为例):
- 在客户端,使用命令
ftp [服务器IP地址]
来连接服务器,例如ftp 192.168.1.10
。连接成功后,输入用户名和密码进行登录。 - 登录后,输入
PORT [客户端IP地址],[客户端临时端口号]
命令,其中客户端 IP 地址和临时端口号是客户端用于接收数据的信息。例如,假设客户端 IP 是 192.168.1.20,临时端口号是 50000,命令就是PORT 192.168.1.20,50000
。 - 服务器收到此命令后会主动连接到客户端指定的端口,然后就可以使用
get
(下载文件)或put
(上传文件)等命令进行文件传输,如get file.txt
表示从服务器下载 file.txt 文件。
- 在客户端,使用命令
- 工作原理:
- 被动模式(PASV 模式)
- 工作原理:
- 客户端同样先与服务器的 21 端口建立控制连接。然后,客户端向服务器发送 PASV 命令,表示希望以被动模式进行文件传输。
- 服务器收到 PASV 命令后,会开启一个随机的数据端口(大于 1024),并将该端口号通过控制连接返回给客户端。
- 客户端收到服务器返回的数据端口号后,主动向服务器的这个数据端口发起数据连接,之后便可以通过这个数据连接进行文件传输。
- 命令视图示例(以 Linux 系统为例):
- 客户端连接服务器的方式与主动模式相同,使用
ftp [服务器IP地址]
,如ftp 192.168.1.10
,登录后输入用户名和密码。 - 输入
PASV
命令来开启被动模式。服务器会返回类似227 Entering Passive Mode (h1,h2,h3,h4,p1,p2)
的信息,其中h1 - h4
是服务器的 IP 地址部分(以十进制表示),p1
和p2
组成服务器的数据端口号(p1*256 + p2
)。 - 客户端根据返回的端口号信息主动连接服务器的数据端口,然后可以使用
get
或put
等命令进行文件传输,如put new_file.txt
表示向服务器上传 new_file.txt 文件。
- 客户端连接服务器的方式与主动模式相同,使用
- 工作原理:
- 主动模式(PORT 模式)
-
两种模式的比较与应用场景
- 比较:
- 主动模式下,服务器主动发起数据连接,需要考虑服务器端的防火墙配置,因为服务器可能会因为防火墙限制而无法主动连接客户端的端口。而被动模式下,是客户端主动发起数据连接,相对来说更容易通过防火墙,因为客户端通常具有更灵活的网络访问权限。
- 主动模式使用固定的数据端口(20 端口),便于网络管理和安全策略的设置;被动模式的数据端口是随机分配的(大于 1024),这使得服务器的安全性在一定程度上得到提高,因为攻击者难以预测数据端口。
- 应用场景:
- 如果服务器所在的网络环境中防火墙对出站连接(服务器主动发起的连接)限制较少,且希望通过固定的数据端口进行管理,主动模式是一个合适的选择。例如,在企业内部网络中,服务器和客户端都在受信任的区域,且网络安全策略允许服务器主动发起连接。
- 当客户端处于复杂的网络环境,如位于防火墙或 NAT 设备之后,或者服务器端的防火墙对入站连接(外部对服务器的连接)限制严格时,被动模式更为适用。例如,在互联网环境下,大多数 FTP 客户端软件默认使用被动模式,以适应各种网络环境,确保能够成功建立数据连接进行文件传输。
- 比较: