有 65535 个 TCP 端口号,这是否意味着只有 65535 个客户端可以连接到 TCP 服务器?
有人可能认为这对单个计算机/应用程序可以维护的客户端数量设置了硬限制。
一个人可能正在监督一个网络服务器,并被要求确保它可以扩展到预计超过 65k 连接的使用水平。
对于软件,有一些单独的注意事项(https://stackoverflow.com/questions/1575453/how-many-socket-connections-can-a-web-server-handle)
有 65535 个 TCP 端口号,这是否意味着只有 65535 个客户端可以连接到 TCP 服务器?
有人可能认为这对单个计算机/应用程序可以维护的客户端数量设置了硬限制。
一个人可能正在监督一个网络服务器,并被要求确保它可以扩展到预计超过 65k 连接的使用水平。
对于软件,有一些单独的注意事项(https://stackoverflow.com/questions/1575453/how-many-socket-connections-can-a-web-server-handle)
简短的回答是否定的,这不是限制。
TCP 端口字段是 2x 字节,数量为 65536。这个数字限制了服务器可以拥有的地址数量。但这并没有将客户端数量限制为 ~64k。每个 TCP 数据包都有两个端口字段,一个用于目的地,一个用于源(以及两个 IP 地址)。
一个给定的 TCP 连接是一个源和目标的元组,每个都有 IP 地址和端口号。目的地(服务器端)保持固定,但源地址(客户端)可以在端口和 IP 地址上变化。
考虑:
是的,具有单个 IP 地址的客户端(或办公室)只能同时连接到您的服务器 65535 次,但如果该客户端(或办公室)有多个 IPv4 地址,则它们可以连接更多的多个 IPv4 地址。
通常情况下,有几百万的IP地址使用的许多客户端设备,并且如果他们只使用一个单一的源端口连接到您的单个服务器端口,那么已经可以看到潜在的超越65536号。
IP/TCP 协议的理论数学极限是 2^32 * 2^16。实际上 IP 地址的数量较少 - 您需要减去一些保留的 IP 块。实际上,客户端端口的数量较少,因为典型的客户端计算机将运行多个连接到其他服务器的应用程序,这也减少了 TCP 端口池,但该池很少用完 - 一旦 TCP 会话结束端口号池中再次可用。
注意:对于 IPv6,IP 地址的数量会增加,但 TCP 的端口字段大小保持不变。