TCP 和端口连接

-1 tcpip

两个不同主机上的两个端口之间是否可以同时激活 1 个以上的 TCP 连接?请回答。

Zor*_*che 5

如果您问是否可以从两个客户端系统打开一个套接字到一个服务器,其中相同的源端口和扩展端口恰好相同,那么是的,这是可能的。

# 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
Run Code Online (Sandbox Code Playgroud)

套接字由(源地址+源端口+目的地址+目的端口)标识。两个目标地址将不同,因此一切正常。

这在现实世界中不太可能经常发生,因为源端口通常是从可用于传出连接的端口范围中选择的。

# 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
Run Code Online (Sandbox Code Playgroud)

如果您问具有单个 IP 地址的单个系统是否可以从相同的源地址 + 端口打开到相同目标地址 + 端口的两个连接,那么答案是否定的。当应用程序的第二个实例尝试绑定到该源地址+端口组合时,它将收到错误消息。

# 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
Run Code Online (Sandbox Code Playgroud)