当客户端和主机之间创建套接字时,它包括两者的 IP 地址、使用的协议和端口号。
假设我有套接字 A (10.0.0.1, TCP, 50000) 和 (10.0.0.2, TCP, 50000),每个都连接到 (11.11.11.11, TCP, 80) (Web 服务器)。
由于两个套接字都使用相同的端口,Web 服务器上是否会发生冲突?
当客户端和主机之间创建套接字时,它包括两者的 IP 地址、使用的协议和端口号。
假设我有套接字 A (10.0.0.1, TCP, 50000) 和 (10.0.0.2, TCP, 50000),每个都连接到 (11.11.11.11, TCP, 80) (Web 服务器)。
由于两个套接字都使用相同的端口,Web 服务器上是否会发生冲突?
否。连接由包含源 IP 的 5 元组标识
因此,服务器会看到 2 个不同的、可区分的连接。
虽然史蒂芬·乌尔里希(Steffen Ulrich)的答案是有效的,但事实并非如此。
您的网络服务器
11.11.11.11:80
仅侦听一个连接。当10.0.0.1:50000
连接到它时,它会立即为其分配一个新端口,例如 49001,并告诉 10.0.0.1 它现在正在与之通信,11.11.11.11:49001
然后返回侦听端口 80 上的连接。现在,当
10.0.0.2:50000
连接时,它会立即被告知它正在与 进行通信11.11.11.11:49007
,并且 Web 服务器会回去监视想要连接到端口 80 的人。所以端口不同,不存在冲突。