我是 FTP 协议的新手,在这里我阅读了有关 FTP 中的主动和被动模式的信息。
主动模式:客户端将端口号发送给服务器进行数据通讯。 被动模式:服务器将端口号发送给客户端进行数据通讯。
这些都在这里,一切都好
我的疑问是在被动模式下对于初始控制连接两者都将在某些端口上进行通信,例如 5000。服务器收到“PASV”命令后,服务器将发送端口号例如 5010。
服务器将端口号发送给客户端后,是否应该关闭 5000 端口,并开始列出 5010 端口?或者两个端口都应该处于活动状态?
对于命令,我需要使用旧端口(5000),对于数据通信,我需要使用新端口(5010),或者如何?
有人能帮助我吗
答案1
FTP 协议与 ssh 或 HTTP 等简单协议的不同之处在于它同时使用两个端口(和两个连接)。
您最初连接的端口是命令端口。到此端口的连接将一直处于活动状态,直到会话终止并且所有命令都发送到此端口。
当您发出启动数据传输的命令时(如get
或put
),将在另一个端口(数据端口)上建立另一个连接(称为数据连接)。此连接从服务器到客户端处于主动模式,并且从客户到服务器处于被动模式。此连接仅在数据传输期间持续,传输完成后即关闭。