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.
fuente
Respuestas:
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.
fuente