FTP(文件传输协议)是一种常用来在网络上进行文件传输的协议。FTP工作时,通常使用两个端口:21号端口用于控制端口(发送命令),而数据端口则用于传输数据。FTP有两种工作模式:主动模式和被动模式,这两种模式中服务器获取用户数据端口的方式不同。
主动模式
在主动模式(Active Mode)中,当客户端发起与服务器的连接时,客户端会通过控制连接告诉服务器一个客户端开放的端口号,用于数据连接。流程如下:
- 客户端连接到服务器的FTP控制端口(通常是21号端口)。
- 客户端通过PORT命令告诉服务器,客户端哪个端口准备好接收数据。
- 服务器收到PORT命令后,从它自身的数据端口(通常是20号端口)连接到客户端指定的端口。
被动模式
在被动模式(Passive Mode)中,为了解决客户端位于防火墙或NAT(网络地址转换)后面导致的连接问题,使用被动模式可以更好地处理这些情况。流程如下:
- 客户端连接到服务器的FTP控制端口。
- 客户端发送PASV命令到服务器,请求进入被动模式。
- 服务器选择一个随机端口用于数据连接,并通过控制连接将这个端口号告诉客户端。
- 客户端接收到端口信息后,从客户端的任意端口连接到服务器提供的端口进行数据传输。
总结
无论是主动模式还是被动模式,服务器是如何知道客户端的数据端口取决于客户端是通过PORT命令指明自己的数据端口(主动模式),还是服务端指定数据端口并通告客户端(被动模式)。因此,关键信息交换都是通过控制端口进行,数据端口信息则根据模式的不同由不同方指定。
对于云环境和分布式系统,尤其在使用诸如华为云这类的服务时,建议使用被动模式以更好地适应潜在的网络配置复杂性。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/178473.html