TCP/IP数据包如何到达特定的服务器套接字?

Hem*_*ant 2 windows tcp winsock

据我所知,当TCP客户端连接到服务器时,它会自动使用未使用的本地端口,除非明确指定.在服务器端,我们有一个侦听套接字,只要接受新连接,就会创建一个新套接字.

但是所有服务器套接字都使用相同的本地端口(我用netstat检查过).我的问题是当所有服务器端套接字通过相同的IP地址和本地端口进行通信时,从客户端发送的数据包如何到达服务器上的特定套接字?

下面是一个telnet快照,显示我的tcp/ip echo服务器使用相同的地址和端口进行2个不同的连接.

替代文字http://i47.tinypic.com/34o6jrr.png

Gre*_*ill 9

当您从客户端连接到服务器时,服务器上的TCP知道客户端的地址和端口.每个单独的连接由4元组(client_ip,client_port,server_ip,server_port)标识和区分.

在netstat显示中,本地地址远程(外部)地址的组合唯一标识连接.两个突出显示的连接的外部地址是不同的.