当在客户端和主机之间创建套接字时,它包括两者的 IP 地址、使用的协议和端口号。
假设我有套接字 A (10.0.0.1,TCP,50000) 和 (10.0.0.2,TCP,50000),每个都连接到 (11.11.11.11,TCP,80)(一个 Web 服务器)。
由于两个套接字都使用相同的端口,Web 服务器是否会发生冲突?
答案1
否。连接由包含源 IP 的 5 元组标识
因此,服务器会看到 2 个不同的、可区分的连接。
答案2
尽管 Steffen Ulrich 的回答是正确的,但事实并非如此。
您的 Web 服务器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 的人。
所以端口不同,并且不会发生冲突。