¿Se limita un servidor TCP a 65535 clientes?

10

Uno podría pensar que esto establece un límite estricto en la cantidad de clientes que una sola computadora / aplicación puede mantener.

Se podría supervisar un servidor web y se le exigirá que se asegure de que puede escalar a niveles de uso proyectados para superar las ~ 65k conexiones.

Para el software, hay ciertas consideraciones separadas ( /programming/1575453/how-many-socket-connections-can-a-web-server-handle )

Todd
fuente
¿Alguna respuesta te ayudó? Si es así, debe aceptar la respuesta para que la pregunta no siga apareciendo para siempre, buscando una respuesta. Alternativamente, puede proporcionar y aceptar su propia respuesta.
Ron Maupin

Respuestas:

16

La respuesta corta es no, ese no es el límite.

Un campo de puerto TCP tiene 2x bytes y contiene una cantidad de 65536. Este número limita la cantidad de direcciones que puede tener un servidor . Pero esto no limita el número de clientes a ~ 64k. Cada paquete TCP tiene dos campos de puerto, uno para el destino y otro para la fuente (así como dos direcciones IP).

Una conexión TCP dada es una tupla del origen y el destino, cada uno con dirección IP y número de puerto. El destino (el lado del servidor) permanece fijo, pero la dirección de origen (el lado del cliente) puede variar tanto en el puerto como en la dirección IP.

Considerar:

  • IP del servidor - 100.0.0.1 (fijo)
  • Puerto del servidor - 80 (fijo)
  • IP del cliente - 0.0.0.0 - 255.255.255.255 (rango de 32 bits)
  • Puerto del cliente: 0-65535 (rango de 16 bits)

Sí, un cliente (u oficina) con una sola dirección IP, solo puede conectarse a su servidor 65535 veces al mismo tiempo, pero si ese cliente (u oficina) tenía varias direcciones IPv4, podría conectar muchos más.

Por lo general, hay millones de direcciones IP en uso en muchos dispositivos cliente, y si solo usaran un puerto de origen único para conectarse a su puerto de servidor único , entonces ya puede ver el potencial para ir más allá del número 65536.

El límite matemático teórico del protocolo IP / TCP es 2 ^ 32 * 2 ^ 16. Prácticamente, el número de direcciones IP es menor; necesitaría restar algunos bloques de IP reservados. También prácticamente, el número de puertos del lado del cliente es menor porque una computadora cliente típica ejecutará múltiples aplicaciones conectadas a otros servidores también reduciendo el grupo de puertos TCP, pero este grupo rara vez se agota, una vez que una sesión TCP ha finalizado el número de puerto Está disponible en la piscina de nuevo.

Nota: Para IPv6, la cantidad de direcciones IP aumenta, pero el campo Puerto para TCP sigue siendo del mismo tamaño.

Todd
fuente