Se houver um limite no número de portas que uma máquina pode ter e um soquete pode ser vinculado apenas a um número de porta não utilizado, como os servidores com quantidades extremamente altas (mais do que o número máximo de portas) de solicitações lidam com isso? Isso é feito apenas com a distribuição do sistema, ou seja, muitos servidores em muitas máquinas?
29
Você está enganado - a singularidade do soquete é determinada por quatro fatores:
Ao oferecer serviços de rede, 1. e 2. geralmente são estáticos (por exemplo, IP 10.0.0.1, porta 80), mas, a menos que você esteja esperando milhares de conexões de um único cliente (ou um único gateway NAT), você não precisará pressionar o limites para as combinações possíveis de 3. e 4. antes de ficar sem recursos locais.
Portanto, embora praticamente um cliente não use uma porta já usada para uma conexão para abrir uma conexão com um endereço IP de destino diferente, o esgotamento do número da porta será o menor dos seus problemas para praticamente qualquer aplicativo - seja no servidor ou no servidor. lado do cliente.
O problema é bem real: os gateways NAT (roteadores) atendem a clientes com um alto número de conexões de saída abertas (por exemplo, torrents) - você verá o número de portas esgotado depois que o pool de portas disponível para NAT for esvaziado. Nesse caso, o gateway NAT não pode criar associações adicionais, cortando efetivamente os clientes da Internet.
fonte
A questão era como lidar com contagens de conexão grandes (> 64k). Os dois métodos mais comuns são:
Adicionando mais servidores, o que aumenta o número de endereços src / dst e as tuplas do número da porta. Existem várias maneiras de compartilhar a carga entre vários servidores; O rodízio de DNS é um; há outros
Implante "NAT de nível de operadora" (que um amigo, de maneira irônica e correta, na minha opinião, se refere a "NAT de grau mais crummier"). Este é essencialmente um NAT de um NAT. Isso tem implicações muito ruins para aplicativos, mas é o que alguns grandes provedores fazem quando ficam sem espaço IPv4 e / ou números de porta e / ou não desejam migrar para o IPv6.
fonte
(more than the max port number)
.