Si hay un límite en el número de puertos que puede tener una máquina y un socket solo puede unirse a un número de puerto no utilizado, ¿cómo manejan esto los servidores que experimentan cantidades extremadamente altas (más que el número de puerto máximo) de solicitudes? ¿Se hace simplemente distribuyendo el sistema, es decir, muchos servidores en muchas máquinas?
29
Estás equivocado: la singularidad del zócalo está determinada por cuatro factores:
Cuando se ofrecen servicios de red, 1. y 2. normalmente son estáticos (por ejemplo, IP 10.0.0.1, puerto 80), pero a menos que espere miles de conexiones de un solo cliente (o una única puerta de enlace NAT), no va a empujar el límites para las posibles combinaciones de 3. y 4. antes de que se acaben los recursos locales.
Entonces, aunque prácticamente un cliente no usará un puerto que ya esté en uso para una conexión para abrir una conexión a una dirección IP de destino diferente, el agotamiento del número de puerto será el menor de sus problemas para casi cualquier aplicación, ya sea en el servidor o lado del cliente.
El problema es muy real con las puertas de enlace NAT (enrutadores) que atienden a clientes con un gran número de conexiones salientes abiertas (por ejemplo, torrentes); allí verá el agotamiento del número de puerto después de que se vacíe el conjunto de puertos disponibles para NAT. En este caso, la puerta de enlace NAT no puede crear ninguna asociación adicional, por lo tanto, corta efectivamente a los clientes de Internet.
fuente
La pregunta era cómo manejar grandes recuentos de conexiones (> 64k). Los dos métodos más comunes son:
Agregar más servidores, lo que aumenta el número de direcciones src / dst y las tuplas de número de puerto. Hay varias formas de compartir la carga en varios servidores; DNS round robin es uno; hay otros
Implemente "NAT de grado de operador" (que un amigo, burlona y correctamente, en mi opinión, se refiere como "NAT de grado más cruel"). Esto es esencialmente un NAT de un NAT. Esto tiene implicaciones muy malas para las aplicaciones, pero es lo que hacen algunos grandes proveedores cuando se quedan sin espacio de IPv4 y / o números de puerto, y / o no quieren pasar a IPv6.
fuente
(more than the max port number)
.