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


10

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

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

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


有什么答案对您有帮助吗?如果是这样,您应该接受答案,这样问题就不会永远弹出来寻找答案。或者,您可以提供并接受自己的答案。
罗恩·莫平

Answers:


16

简短的答案是不,这不是极限。

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地址,则它们可以连接多个该IP地址。

通常,许多客户端设备上正在使用数百万个IP地址,如果它们仅使用单个源端口连接到单个服务器端口,那么您已经可以看到超出65536个数字的可能性。

IP / TCP协议的理论数学极限是2 ^ 32 * 2 ^ 16。实际上,IP地址的数量较少-您需要减去一些保留的IP块。同样在实践中,客户端端口的数量也较少,因为典型的客户端计算机将运行连接到其他服务器的多个应用程序,这也减少了TCP端口池,但是该池很少用完-一旦TCP会话结束端口号,再次在游泳池中可用。

注意:对于IPv6,IP地址的数量增加了,但是TCP的“端口”字段保持不变。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.