在两个不同主机上的两个端口之间,多个TCP连接可以同时处于活动状态吗?请回答。
发布于 2012-02-01 01:56:17
如果您想知道是否有可能从两个客户端系统打开套接字到服务器,其中相同的源端口和扩展端口恰好相同,那么是的,这是可能的。
# connections as seen by server
src_ip sce_port dest_ip dest_port
192.168.1.5 1234 192.168.1.1 1234
192.168.1.4 1234 192.168.1.1 1234套接字由(源地址+源端口+目标地址+目标端口)标识。两个目的地地址将是不同的,因此一切都会正常工作。
但是,在现实世界中,这种情况不太可能发生,因为源端口通常是从一个端口范围中选择的,这些端口可以在传出连接中使用。
# connections as seen by server you would most likely see in the real world
src_ip sce_port dest_ip dest_port
192.168.1.5 49345 192.168.1.1 1234
192.168.1.4 51284 192.168.1.1 1234如果您询问具有单个IP地址的单个系统是否可以从相同的源address+port打开两个连接到同一个目标address+port,则答案是否定的。当应用程序的第二个实例试图绑定到该源address+port组合时,它将得到一个错误。
# cannot happen/invalid, client can't bind
src_ip sce_port dest_ip dest_port
192.168.1.4 1234 192.168.1.1 1234
192.168.1.4 1234 192.168.1.1 1234发布于 2012-02-01 01:57:43
TCP连接由端口/地址元组跟踪:
192.168.101.24:61213 <--> 192.168.105.50:80
该连接在双方都被跟踪,这就是网络堆栈用来确定实际连接的内容。正因为如此,这个元组可以有一个和唯一的连接。这就是为什么连接的发起者对它的一半使用“临时”端口的原因,这样它就可以打开到远程端的多个连接。
https://serverfault.com/questions/355640
复制相似问题