Answers:
这就是FTP协议在被动模式下工作的方式。这可能不是一个好主意,因为我认为该模型在任何其他协议中都不会再重复一次(对于FTP活动模式更是如此)。
在数据连接端口上,没有协议。服务器所知道的-在该连接中唯一包含任何信息的-是连接到的端口号。
如果您每次都连接到同一端口,则服务器将无法确定您要连接的文件。端口号用作控制连接上的传输请求和数据连接之间的链接-端口号包含在对PASV
命令的响应中。
如果两个客户端同时请求传输,则服务器在单个端口上接受连接时,服务器将无法告知要传输的文件。当然,服务器可以使用客户端IP进行决策(出于安全性考虑,实际上许多FTP服务器确实会验证客户端IP与控制连接上使用的IP匹配)。
但这不适用于:
部分摘自我的回答:为什么FTP被动模式需要一个端口范围而不是一个端口?服务器故障。
通常,服务器不会发送随机端口,而是发送已定义的范围(通过安装)/池中的空闲端口-对于客户端,这看起来是随机的。该端口需要在需要定义范围的防火墙处转发。
不幸的是,FTP是古老的。我想,古老的服务器只能通过端口来区分多个客户端的数据会话。通常,最好继续使用最新的协议,在这些协议中,所有内容都在单个套接字会话中被整齐地打包。