Números de puerto - los "números de habitación" de internet
Si la dirección IP es la dirección de un edificio, el número de puerto es el número de habitación dentro de ese edificio. La razón por la que un solo servidor puede ofrecer simultáneamente múltiples servicios como sitio web, correo, SSH y base de datos es que cada servicio está "separado en habitaciones" por diferentes números de puerto.
Los números de puerto van del 0 al 65535, un total de 65.536. Entre estos números se esconden la historia de internet, el humor de los ingenieros y relatos sorprendentes.
Puertos bien conocidos (0-1023) - la "zona premium" de internet
Los números de puerto del 0 al 1023 se denominan "Well-Known Ports" (puertos bien conocidos) y están asignados por IANA a servicios específicos. En sistemas operativos tipo Unix, se requieren privilegios de root para usar estos puertos.
Puerto 80 (HTTP) y 443 (HTTPS)
Son los puertos estándar de la web. Cuando introduces una URL en el navegador, http:// se conecta al puerto 80 y https:// al puerto 443. La razón por la que puedes omitir el número de puerto es que el navegador autocompleta el puerto predeterminado según el protocolo.
¿Por qué 80? Cuando Tim Berners-Lee diseñó HTTP en 1991, el puerto 80 aún no estaba asignado. Era un número redondo fácil de recordar, y la razón fue simplemente "usar un número disponible", según la costumbre de la época. El 443 fue el siguiente número asignado después de HTTP.
Puerto 22 (SSH)
El autor de SSH (Secure Shell), Tatu Ylönen, desarrolló SSH en 1995 en la Universidad Politécnica de Helsinki, Finlandia. Según el propio Ylönen, eligió el puerto 22 porque "estaba libre entre el 21 (FTP) y el 23 (Telnet)". FTP y Telnet son protocolos antiguos sin cifrado, y SSH fue diseñado como su alternativa segura. El 22, situado entre el 21 y el 23, fue una elección perfecta tanto simbólica como prácticamente.
Puerto 25 (SMTP)
Es el puerto del protocolo de envío de correo SMTP. Fue definido por Jon Postel en el RFC 821 de 1982. Actualmente, muchos ISPs bloquean las conexiones externas al puerto 25 como medida antispam, y se recomienda el puerto 587 (Submission) para el envío de correo.
Puerto 53 (DNS)
Es el puerto de DNS. Cuando el navegador accede a un sitio web, primero consulta al servidor DNS en el puerto 53 para convertir el nombre de dominio en una dirección IP. DNS over HTTPS traslada esta comunicación al puerto 443 (HTTPS), logrando el cifrado de las consultas DNS.
Puertos registrados (1024-49151) - la "zona semi-premium" disponible bajo solicitud
Del 1024 al 49151 son "Registered Ports" (puertos registrados), que pueden asignarse a servicios específicos mediante solicitud a IANA. Se pueden usar sin privilegios de root.
Puerto 3306 (MySQL)
Es el puerto predeterminado de MySQL. ¿Por qué 3306? Según Michael "Monty" Widenius, cofundador de MySQL, no hay una razón profunda: simplemente "era un número disponible".
Puerto 5432 (PostgreSQL)
Puerto predeterminado de PostgreSQL. Tampoco tiene un origen especial; el número elegido durante el desarrollo se estableció como estándar.
Puerto 8080
Ampliamente utilizado como puerto alternativo de HTTP. En entornos de desarrollo, como el puerto 80 requiere privilegios de root, se usa el 8080 por convención. Una elección de número donde es evidente a primera vista que es "alternativa al 80".
Puertos 6666-6669 (IRC)
Rango de puertos predeterminados de IRC (Internet Relay Chat). El número 6666 evoca el "número del diablo" (666), pero se desconoce la razón por la que el desarrollador de IRC, Jarkko Oikarinen, eligió este número. IRC fue desarrollado en Finlandia en 1988 y fue el centro de la comunicación en tiempo real en los primeros días de internet.
Puertos dinámicos (49152-65535) - "alojamiento temporal"
Del 49152 al 65535 son "Dynamic/Ephemeral Ports" (puertos dinámicos), que el SO asigna temporalmente para las comunicaciones del lado del cliente. Cuando el navegador se conecta a un servidor web, el lado del servidor usa el puerto 443, pero el lado del cliente usa un puerto dinámico asignado automáticamente por el SO (por ejemplo: 52847).
Cuando la comunicación termina, el puerto dinámico se libera y se reutiliza para otra comunicación.
Curiosidades sobre los números de puerto
Puerto 0 - existe pero no se puede usar
El puerto 0 está reservado como "comodín". Cuando un programa se vincula al puerto 0, el SO asigna automáticamente un puerto dinámico disponible. Es útil en pruebas y depuración cuando se quiere "usar cualquier puerto disponible".
Escaneo de puertos - buscando puertas abiertas
Cuando un atacante busca vulnerabilidades en un servidor, lo primero que hace es un escaneo de puertos. Con herramientas como nmap, escanea todos los puertos para investigar qué servicios están en funcionamiento. Cerrar puertos innecesarios y permitir solo los necesarios mediante un firewall es la base de la seguridad de servidores.
El origen del 65535
La razón por la que los números de puerto llegan hasta 65535 es que en la cabecera TCP/UDP se asignan 16 bits para el número de puerto. 2^16 = 65.536, y contando desde 0, el rango es 0-65535. Este diseño se estableció en la especificación TCP de 1981 (RFC 793).
Conclusión
Los números de puerto son un elemento fundamental de la comunicación en internet, junto con las direcciones IP. El 80 y el 443 sostienen la web, el 22 proporciona acceso remoto seguro y el 53 se encarga de la resolución de nombres. En cada uno de estos números está grabada la historia y la filosofía de diseño de internet.
Más allá de la dirección IP que puedes verificar en IP Check-san, hay innumerables servicios funcionando separados por números de puerto. La próxima vez que abras un sitio web en tu navegador, recuerda que esa comunicación pasa por el puerto 443.