TCP 服务器是否仅限于 65535 个客户端?

网络工程 ipv4 通讯协议 协议理论 第4层 传输协议
2021-07-25 14:45:33

有 65535 个 TCP 端口号,这是否意味着只有 65535 个客户端可以连接到 TCP 服务器?

有人可能认为这对单个计算机/应用程序可以维护的客户端数量设置了硬限制。

一个人可能正在监督一个网络服务器,并被要求确保它可以扩展到预计超过 65k 连接的使用水平。

对于软件,有一些单独的注意事项(https://stackoverflow.com/questions/1575453/how-many-socket-connections-can-a-web-server-handle

1个回答

简短的回答是否定的,这不是限制。

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 的端口字段大小保持不变。