简短的回答是否定的,这不是限制。
TCP 端口字段是 2x 字节,数量为 65536。这个数字限制了服务器可以拥有的地址数量。但这并没有将客户端数量限制为 ~64k。每个 TCP 数据包都有两个端口字段,一个用于目的地,一个用于源(以及两个 IP 地址)。
一个给定的 TCP 连接是一个源和目标的元组,每个都有 IP 地址和端口号。目的地(服务器端)保持固定,但源地址(客户端)可以在端口和 IP 地址上变化。
考虑:
- 服务器 IP - 100.0.0.1(固定)
- 服务器端口 - 80(固定)
- 客户端 IP - 0.0.0.0 - 255.255.255.255(32 位范围)
- 客户端端口 - 0 - 65535(16 位范围)
是的,具有单个 IP 地址的客户端(或办公室)只能同时连接到您的服务器 65535 次,但如果该客户端(或办公室)有多个 IPv4 地址,则它们可以连接更多的多个 IPv4 地址。
通常情况下,有几百万的IP地址使用的许多客户端设备,并且如果他们只使用一个单一的源端口连接到您的单个服务器端口,那么已经可以看到潜在的超越65536号。
IP/TCP 协议的理论数学极限是 2^32 * 2^16。实际上 IP 地址的数量较少 - 您需要减去一些保留的 IP 块。实际上,客户端端口的数量较少,因为典型的客户端计算机将运行多个连接到其他服务器的应用程序,这也减少了 TCP 端口池,但该池很少用完 - 一旦 TCP 会话结束端口号池中再次可用。
注意:对于 IPv6,IP 地址的数量会增加,但 TCP 的端口字段大小保持不变。