65536 +1 Conexão em um sistema

34

Existem 65536 portas para todos os sistemas na rede, e cada conexão ou Envio / Recebimento usará uma delas.

Minha pergunta é: o que acontece se tivermos conexões 65536 + 1 ?

Eu sei que isso não acontece normalmente, mas estou curioso para saber como os sistemas operacionais lidam com isso.

    
por Omid Golparvar 23.07.2015 / 23:01

1 resposta

61

Por favor, esteja ciente de que um sistema pode lidar com mais de 65536 conexões simultâneas, porque elas não necessariamente usam uma porta separada.

Uma conexão TCP ou fluxo UDP é definida pela 4-tupla:

(source IP address, source port, destination IP address, destination port)

Portanto, mesmo se você tiver uma máquina com apenas um endereço IP e um único pacote de software para servidor HTTP ouvindo apenas a porta 80, ele poderia, teoricamente, manipular 65536 conexões por endereço IP do cliente conectando-se a ele . Portanto, conexões de 64 Ki do endereço IP do cliente 1, mais conexões de 64 Ki do endereço IP do cliente 2, etc.

Portanto, os protocolos suportam, em uma primeira aproximação, 2 48 conexões / fluxos para uma única porta TCP ou UDP em um único endereço IPv4. Considere o TCP e o UDP juntos e o espaço de endereço do IPv4 e o espaço de endereço cosmicamente / comicamente grande do IPv6, e você pode ver que os protocolos em si provavelmente nunca serão a fonte do limite para o número de conexões simultâneas que um host pode manipular.

Da mesma forma, não há nada nos protocolos TCP ou UDP que impedem que uma máquina cliente use uma única porta de origem em um único endereço IP para fazer várias conexões de saída para vários endereços e portas de servidor. Às vezes, as APIs de rede de um determinado sistema operacional podem não tornar isso fácil, mas é importante lembrar que, digamos, a venerável API "[BSD] Sockets" antiga é apenas uma API para TCP e UDP. O TCP e o UDP podem ter recursos que não são expostos pela API tradicional do Sockets.

Assim, o número de conexões TCP simultâneas ou fluxos UDP que um determinado host pode manipular é limitado não tanto pelos números de portas, mas pelos recursos do sistema, como espaço de RAM e tempo de CPU necessários para manter o controle de todas essas conexões e serviços. o Shopping. Além disso, detalhes específicos de implementação de um sistema operacional podem impor limites artificiais. Por exemplo, na filosofia Unix "tudo é um arquivo", pode haver um descritor de arquivo para cada conexão TCP ou fluxo UDP. Se o seu kernel Unix tem um limite para o número de descritores de arquivos que ele pode rastrear, esse limite de descritor de arquivo é um limite artificial no número de conexões TCP simultâneas ou fluxos UDP que seu kernel pode manipular.

    
por 24.07.2015 / 01:22