¿Por qué hay solo 65,535 puertos y alguna vez tendremos más? [cerrado]

20

Entiendo el razonamiento original detrás de tener 65.535 puertos por dirección IP: este es el número más alto que puede representarse con un número de 16 bits o 2 bytes, y no era concebible que las computadoras pudieran ahorrar más. que eso para algo tan trivial como los puertos, o algo así. De hecho, los puertos pueden necesitar más de 1 bit cada uno, ya que cada puerto puede estar abierto, bloqueado, "oculto" u otros, pero por alguna razón la gente siempre dice que los puertos operan con un número de 16 bits. Si tengo alguna parte de esto mal, dígamelo.

Sin embargo, en un mundo donde la mayoría de las computadoras son de 32 bits y tienen memoria / espacio más que suficiente para un par de puertos más, ¿por qué todavía tenemos tantos puertos? Estamos en el proceso de pasar a HTML5, HTTP2.0, IPv6 y otras versiones definitivamente diferentes, entonces, ¿por qué no lo mismo con los puertos? Muchos de estos permiten mucho más de 16 bits; De hecho, ¡IPv6 permite 16 bytes ! Entiendo que muchos de estos están a años o incluso décadas de distancia, pero ¿por qué tanta charla sobre estas actualizaciones, y ni siquiera un vistazo sobre más puertos (de los que yo, un aficionado, he oído hablar)?

Las únicas dos razones que puedo ver para mantener 65.535 puertos son permitir que las grandes empresas conserven sus antiguos sistemas heredados, lo cual no es una buena razón, y el surgimiento de sistemas integrados, muchos de ellos pequeños, con cantidades minúsculas de espacio, memoria, etc. , llegando pronto a Internet, muchos como parte de Internet de las Cosas. Con estos sistemas integrados, tal vez podríamos dejar que tengan menos puertos, y cuando una computadora de escritorio grande intenta conectarse a uno, se podría decir que sea suave, ya que el sistema integrado para bebés solo puede usar ~ 65,000 puertos.

Por otro lado, puedo pensar en algunas buenas razones para tener más puertos, la mayoría tiene que ver con NAT y otros sistemas donde más de 1 dirección IP privada tiene que comunicarse con el resto de Internet utilizando la misma dirección IP pública, como el aumento de máquinas virtuales en la misma computadora, todas con la misma dirección IP. Técnicamente, cada dirección IP de VM tiene 65.535 puertos, pero en realidad todos usan los puertos del host. En casos como este, estos sistemas podrían quedarse sin puertos con bastante rapidez. Otro caso específico es el NAT de nivel de operador, donde una dirección IP pública se traduce en varias direcciones IP privadas, y al menos una de estas direcciones privadas se traduce en otro conjunto de direcciones aún más privadas. Una vez más, cada dirección IP privada técnicamente tiene su propio conjunto de 65.535 puertos, pero esto es una ilusión, como cuando los datos salen a la Internet pública, están utilizando los puertos de la IP pública. No estoy seguro de que necesariamente necesitemos NAT, per se, pero necesitaremos algo así para conservar las direcciones, incluso con las cantidades masivas que IPv6 nos dará. Cuando tenemos casos como estos, ¿podemos incluso permitirnos no tener más de 65.535 puertos?

Entonces, ¿por qué todavía tenemos 65.535 puertos y hay algún plan para permitir más?

PD: Sé que técnicamente hay 65.536 puertos por dirección IP, pero el puerto 0 generalmente no se usa para nada.

Trysis
fuente
Creo que debe hacerle a IANA estas preguntas, ya que controlan los recursos. Creo que también debe leer la guía TCP / IP, ya que parte de su comprensión parece defectuosa.
user9517 es compatible con GoFundMonica
1
Sí, pensé Traté de decir todo lo que entendí, pero como puedes ver, no entiendo todo.
trysis
77
¿Qué es fuera de tema sobre esta pregunta? Sólo me preguntaba.
trysis
1
También dejé de hacer preguntas en estos sitios. Todo parece estar fuera de tema en estos días ...
Nuno
IPv6 hace que la limitación de los puertos sea discutible al ofrecer una computadora a / 64 de direcciones para usar.
J.Money

Respuestas:

28

El puerto es parte del protocolo de capa 4 en uso: TCP o UDP , en su mayor parte; no está relacionado con el direccionamiento de memoria de las computadoras reales, así que no se confunda con el direccionamiento de memoria de 32 o 64 bits de los sistemas operativos modernos.

Los encabezados de estos protocolos de capa 4 tienen estructuras definidas específicamente , para las cuales se utilizan exactamente 16 bits para los puertos de origen y destino. Sin cambios que rompan la compatibilidad de los protocolos de la capa 4 de los que depende todo Internet, no se puede cambiar el número de puertos. Incluso el nuevo SCTP tiene la restricción de 16 bits en los puertos.

Tenga en cuenta que estos protocolos identifican el tráfico basado no solo en el puerto de recepción, sino también en la IP de recepción y el puerto de envío y la IP; está limitado a 65535 puertos TCP de escucha (pero no tiene tantos), y está limitado a 65535 conexiones a un servicio específico en un sistema remoto específico (más bajo en la práctica, vea puertos efímeros ), por lo que es poco común para ejecutar el límite en estos protocolos a menos que tenga un sistema que cree muchas conexiones a un sistema remoto específico.

Shane Madden
fuente
3
Siempre se reduce a la compatibilidad con versiones anteriores, ¿no? ¿Por qué podemos cambiar a IPv6, que permite tantas direcciones IP más ridículas, pero no podemos tener un par de puertos más? Esa es mi molestia principal.
trysis
2
@trysis Right: pasar de IPv4 a IPv6 es una buena comparación con lo que se necesitaría para pasar a una versión de TCP y una versión de UDP con más bits en el encabezado del puerto. Y si no lo ha notado, ha sido un proceso lento y doloroso incluso lograr la implementación de IPv6 en todo el mundo hasta donde está ahora (con un 1-2% del tráfico mundial que la usa). Para IPv4, había una necesidad imperiosa de moverse: abordar el agotamiento. Quedarse sin espacio de puertos en estos protocolos, por otro lado, no es un problema común, por lo que no hay una necesidad imperiosa de hacer los cambios masivos que serían necesarios para que esto suceda.
Shane Madden
Oh, eso tiene más sentido. Gracias. Tal vez algún día sentiremos la necesidad, pero supongo que tienes razón en que esa necesidad no está ahí ahora.
trysis
Espero que si alguna vez pasamos por todos esos problemas, podamos llegar a algo mejor que el direccionamiento de puertos basado en enteros. Algo como puertos basados ​​en UUID sería increíble. O los espacios de nombres reales serían aún más descriptivos y eliminarían la posibilidad de conflictos entre las aplicaciones. Imagine establecer un puerto hacia adelante para el espacio de nombres "com.windows.local.yourdomain.server001" o algo así.
njbair
entonces, si dos PC juntas hacen 65.535 conexiones o similar a un conjunto de PC fuera del NAT, ninguna de las otras PC podría acceder a itnernet. ¿Estoy en lo correcto?
Denis