Por que existem apenas 65.535 portas e teremos mais? [fechadas]

20

Entendo o raciocínio original por trás de ter 65.535 portas por endereço IP: este é o número mais alto que pode ser representado por um número de 16 bits ou 2 bytes, e não era concebível que os computadores pudessem poupar mais do que isso para algo tão trivial como portas, ou algo assim. As portas podem de fato precisar de mais de 1 bit cada, pois cada porta pode ser aberta, bloqueada, "furtiva" ou outras, mas, por algum motivo, as pessoas sempre dizem que as portas operam com um número de 16 bits. Se eu tiver alguma parte errada, diga-me.

No entanto, em um mundo em que a maioria dos computadores possui 32 bits e possui memória / espaço mais que suficiente para poupar mais algumas portas, por que ainda temos tantas portas? Estamos mudando para HTML5, HTTP2.0, IPv6 e outras versões definitivamente diferentes. Por que não o mesmo com portas? Muitos deles permitem muito mais que 16 bits; de fato, o IPv6 permite 16 bytes ! Entendo que muitos deles estão a anos ou até décadas de distância, mas por que toda a conversa sobre essas atualizações e nem mesmo um pio sobre mais portos (dos quais eu, amador, já ouvi falar)?

As únicas duas razões que vejo para manter 65.535 portas são permitir que as grandes empresas mantenham seus antigos sistemas legados, o que dificilmente é um bom motivo, e o surgimento de sistemas embarcados, muitos deles minúsculos, com quantidades minúsculas de espaço, memória etc. , entrando na Internet em breve, muitos como parte da Internet das Coisas. Com esses sistemas embarcados, talvez pudéssemos permitir que eles tivessem menos portas e, quando um grande computador de mesa tenta se conectar a um, pode-se dizer que é gentil, pois o sistema embarcado para bebês só pode usar ~ 65.000 portas.

Por outro lado, posso pensar em algumas boas razões para ter mais portas, a maioria relacionada a NAT e outros sistemas em que mais de um endereço IP privado precisa se comunicar com o resto da Internet usando o mesmo endereço IP público, como o surgimento de VMs no mesmo computador, todas usando o mesmo endereço IP. Tecnicamente, cada endereço IP da VM possui 65.535 portas, mas na realidade todas elas usam as portas do host. Em casos como esse, esses sistemas podem ficar sem portas rapidamente. Outro caso específico é o NAT de classe de operadora, onde um endereço IP público é traduzido em vários endereços IP privados e pelo menos um desses endereços privados é traduzido em outro conjunto de endereços ainda mais privados. Novamente, cada endereço IP privado tecnicamente tem seu próprio conjunto de 65.535 portas, mas isso é uma ilusão, como quando os dados chegam à Internet pública, eles estão usando as portas do IP público. Não sei se precisamos necessariamente de NAT, por si só, mas precisaremos de algo parecido para conservar endereços, mesmo com as quantias maciças que o IPv6 nos fornecerá. Quando temos casos como esses, podemos nos dar ao luxo de não ter mais de 65.535 portas?

Então, por que ainda temos apenas 65.535 portas e há planos para permitir mais?

PS: Sei que existem tecnicamente 65.536 portas por endereço IP, mas a porta 0 geralmente não é usada para nada.

trysis
fonte
Eu acho que você precisa fazer à IANA essas perguntas que controlam os recursos. Eu acho que você precisa ler o guia TCP / IP também, pois parte do seu entendimento parece falho.
user9517 suporta GoFundMonica
1
Sim, eu imaginei. Tentei dizer o que entendi, mas como você pode ver, não entendo tudo.
trysis
7
O que há de fora do tópico nessa pergunta? Apenas me perguntando.
trysis
1
Também desisti de fazer perguntas nesses sites. Hoje tudo parece estar fora de tópico ...
Nuno
O IPv6 reduz a limitação de portas, oferecendo ao computador um / 64 endereços para usar.
J.Money 17/09

Respostas:

28

A porta faz parte do protocolo da camada 4 em uso - TCP ou UDP , na maior parte; não está relacionado ao endereçamento de memória dos computadores reais; portanto, não se confunda com o endereçamento de memória de 32 ou 64 bits dos sistemas operacionais modernos.

Os cabeçalhos desses protocolos da camada 4 possuem estruturas definidas especificamente , para as quais exatamente 16 bits são usados ​​para as portas de origem e destino. Sem alterações que quebrem a compatibilidade dos protocolos da camada 4 dos quais toda a Internet depende, o número de portas não pode ser alterado. Até o SCTP mais recente tem restrição de 16 bits nas portas.

Lembre-se de que esses protocolos identificam o tráfego com base não apenas na porta de recebimento, mas também no IP de recebimento e na porta e no IP de envio; você está limitado a 65535 ouvindo portas TCP (mas não possui muitas) e limitado a 65535 conexões a um serviço específico em um sistema remoto específico (mais baixo na prática, consulte portas efêmeras ), por isso é incomum para atingir o limite desses protocolos, a menos que você tenha um sistema criando muitas conexões com um sistema remoto específico.

Shane Madden
fonte
3
Sempre se resume à compatibilidade com versões anteriores, não é? Por que podemos mudar para o IPv6, que permite tantos endereços IP ridículos, mas não podemos ter mais algumas portas? Esse é o meu principal aborrecimento.
trysis
2
@trysis Certo - passar do IPv4 para o IPv6 é uma boa comparação com o que seria necessário para passar para uma versão do TCP e uma versão do UDP com mais bits no cabeçalho da porta. E, se você não percebeu, tem sido um processo lento e penoso chegar até a implantação mundial do IPv6 para onde está agora (com 1-2% do tráfego mundial usando-o). Para o IPv4, havia uma necessidade convincente de mudar a exaustão de endereço. A falta de espaço na porta nesses protocolos, por outro lado, não é um problema comum; portanto, não há uma necessidade convincente de fazer as grandes mudanças que seriam necessárias para que isso acontecesse.
Shane Madden
Oh, isso faz mais sentido. Obrigado. Talvez um dia sentiremos a necessidade, mas suponho que você esteja certo em que essa necessidade não está lá agora.
trysis
Eu espero que, se algum dia enfrentarmos esse problema, possamos criar algo melhor do que o endereçamento de porta baseado em número inteiro. Algo como portas baseadas em UUID seria incrível. Ou os namespaces reais seriam ainda mais descritivos e eliminariam o potencial de conflitos entre aplicativos. Imagine definir uma porta encaminhada para o espaço de nome "com.windows.local.yourdomain.server001" ou algo assim.
Njbair 3/06
portanto, se dois PCs juntos fizerem 65.535 conexões ou semelhante a um grupo de PCs fora do NAT, nenhum dos outros PCs poderia acessar a Internet. Estou correcto?
31416 Denis