您在TCP数据包头信息中是正确的。它包含了:
Client IP | Client Port | Server IP | Server Port | Protocol
或者,更恰当的选择(因为考虑到双向传输时客户端/服务器会造成混乱):
Source IP | Source Port | Destination IP | Destination Port | Protocol
到同一服务器端口的多个连接将来自客户端上的 不同端口 。一个示例可能是:
0.0.0.0:45000 -> 1.1.1.1:800.0.0.0:45001 -> 1.1.1.1:80
客户端端口的差异足以消除两个套接字的歧义,因此具有两个单独的连接。服务器无需打开另一个端口上的另一个套接字。它确实从该
accept方法接收套接字,但已将其分配给相同的端口,并且现在是返回到新接受的客户端的路由。
另一方面,FTP确实具有一种模型,其中服务器将打开一个新的非特权端口(>
1023),并将其发送回客户端以供客户端连接(这称为“被动FTP”)。这是为了解决客户端位于防火墙后面且无法接受来自服务器的传入数据连接的问题。但是,在典型的HTTP服务器(或任何其他标准套接字实现)中不是这种情况。该功能位于FTP之上。



