Existem 65536 portas para todos os sistemas da rede e todas as conexões ou envio / recebimento usarão uma delas.
Minha pergunta é: o que acontece se tivermos 65536 + 1 conexões ?!
Eu sei que isso não acontece da maneira normal, mas estou curioso para saber como os Sistemas Operacionais lidam com isso.
networking
operating-systems
Omid Golparvar
fonte
fonte
Respostas:
Esteja ciente de que um sistema pode lidar com mais de 65536 conexões simultâneas, porque cada uma delas não necessariamente usa uma porta separada.
Uma conexão TCP ou fluxo UDP é definida pela 4-tupla:
Portanto, mesmo se você tiver uma máquina de servidor da Web com apenas um único endereço IP e um único pacote de software de servidor HTTP ouvindo apenas na porta 80, teoricamente, ele poderia lidar com 65536 conexões por endereço IP do cliente conectado a ela . Portanto, conexões de 64Ki do endereço IP do cliente 1, mais conexões de 64Ki 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, o espaço de endereço do IPv4 e o espaço de endereço cósmico / cômico grande do IPv6. Você pode ver que os próprios protocolos provavelmente nunca serão a fonte do limite para o número de conexões simultâneas que um host pode aguentar.
Da mesma forma, não há nada nos protocolos TCP ou UDP que impeça uma máquina cliente de usar 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 do servidor. Às vezes, as APIs de rede de um determinado sistema operacional podem não facilitar isso, mas é importante lembrar que, digamos, a antiga e venerável API "[BSD] Sockets" é apenas uma API para TCP e UDP. TCP e UDP podem ter recursos que não são expostos pela API tradicional de soquetes.
Portanto, o número de conexões TCP ou fluxos UDP simultâneos que um determinado host pode manipular é limitado não tanto pelos números de portas, mas pelos recursos do sistema, como o espaço de RAM e o tempo de CPU necessário para acompanhar todas essas conexões e atendê-las a todos. Os detalhes específicos da implementação de um sistema operacional também podem impor limites artificiais. Por exemplo, na filosofia "tudo é um arquivo" do Unix, pode haver um descritor de arquivo para cada conexão TCP ou fluxo UDP. Se o seu kernel do Unix tem um limite para o número de descritores de arquivos que ele pode acompanhar, esse limite de descritor de arquivo é um limite artificial para o número de conexões TCP simultâneas ou fluxos UDP que o kernel pode suportar.
fonte