¿Qué es un puerto de red?

Obviamente, el uso más común de la palabra puerto se refiere a la navegación. La informática, sin embargo, también utiliza el término puerto. De hecho, tiene dos usos. El primero se refiere al enchufe en el que se puede enchufar un cable. Los ejemplos típicos incluirían un puerto USB o ethernet. Técnicamente, un enchufe de ethernet podría considerarse como un puerto de red. Ese no es el significado aceptado de la palabra puerto en redes. Un puerto de red es un número lógico que identifica a qué proceso o servicio de red está destinado el tráfico de red o por el que se envía.

¿Por qué son necesarios los números de puerto?

Cuando su computadora se comunica con un servidor web en Internet, coloca su dirección IP en el campo del remitente. Esto le permite al servidor saber a qué dirección IP necesita enviar la respuesta. Cuando esa respuesta regresa a su computadora, su navegador interpreta la respuesta y presenta la página web.

Esto funciona bien en un sistema idealizado con una sola pieza de software que crea y recibe tráfico de red. Sin embargo, el mundo real no es así. En cualquier computadora, hay una variedad de software que genera tráfico de red. Para garantizar que el tráfico de la red se entregue correctamente al programa correcto, en algunos casos, el proceso adecuado en un programa. Una capa de direccionamiento final se utiliza el número de puerto.

Imagina tener un navegador web con dos pestañas abiertas y un videojuego en línea simultáneamente. Cada pestaña del navegador debe poder enviar y recibir tráfico de red, posiblemente simultáneamente. El juego en línea también necesita enviar y recibir tráfico de red. No quieres que tu juego tenga que filtrar respuestas web aleatorias, y tampoco quieres que tu navegador tenga que filtrar el tráfico de tu juego. A ambas pestañas y al juego se les asignará al menos un puerto de red a cada uno para que el proceso del destinatario deseado se pueda determinar fácilmente.

Lo mismo también funciona para los servidores. Suponga que tiene un servidor que ejecuta tanto un servidor web como un servidor de correo electrónico. En ese caso, el número de puerto le permite al sistema operativo diferenciar fácilmente qué paquetes de red están destinados a qué servicio.

¿Qué son los números de puerto?

Los números de puerto adoptan la forma de un número entero sin signo de 16 bits. Esto significa que hay dieciséis bits binarios para formar los números, no hay números negativos y todos los números son enteros. Esto permite 65536 números de puerto posibles que van desde 0 a 65535. No hay un sistema de puerto físico.

Todo el esquema de direccionamiento, como las direcciones IP y las direcciones MAC, es completamente lógico. Puede pensar en las direcciones IP y MAC como la dirección en una carta para enviarla a su casa/computadora. En esta analogía, el número de puerto sería como el nombre en el sobre, asegurándose de que llegue a la persona/proceso correcto en su casa/computadora.

Dentro del espacio del número de puerto, hay alguna otra estructura. El puerto número 0 está reservado. En el tráfico TCP, 0 no se utiliza en absoluto. En el tráfico UDP, el número de puerto es opcional, con un puerto de 0 que significa "sin puerto". Esto funciona para UDP porque es un protocolo sin estado que no necesariamente espera una respuesta. Los puertos TCP y UDP están separados. Un servicio puede vincularse a uno o más puertos en uno o ambos protocolos. Los servicios que usan ambos normalmente se conectan a los mismos números de puerto en TCP y UDP.

Los puertos 1-1023 se conocen como puertos "conocidos" y generalmente requieren permisos administrativos para vincularse. Algunos puertos conocidos son 80 para HTTP, 443 para HTTPS y 53 para DNS. A continuación, tienes el rango 1024 - 49151. Estos se conocen como los puertos "registrados". Estos son puertos utilizados regularmente por ciertos servicios, pero no son lo suficientemente comunes o no fueron lo suficientemente tempranos como para obtener un número por debajo de 1023. Los puertos entre 49152 y 65535 se conocen como puertos efímeros.

El uso de números de puerto

IANA, la Autoridad de Números Asignados de Internet, mantiene listas de puertos conocidos y registrados. Los puertos conocidos solo tienen un servicio asociado. Sin embargo, los puertos registrados pueden tener una serie de servicios conocidos que utilizan el puerto de forma predeterminada.

En general, nada impide que ningún programa se vincule a ningún número de puerto. Como se mencionó anteriormente, los números de puerto por debajo de 1024 tienden a requerir permisos administrativos o de root para vincularse. Aún así, puede obligar a cualquier servicio a vincularse al puerto 80, por ejemplo, incluso si no es un servidor web. Los números de puerto en los rangos conocidos y registrados tienden a ser utilizados solo por los oyentes de la red, y los puertos efímeros generalmente se usan para iniciar conexiones.

Un oyente es un puerto que se abre y se deja abierto. Escucha los mensajes para poder procesarlos y enviar una respuesta. Este es casi exclusivamente el comportamiento de los servicios de tipo servidor, como un servidor web. El servidor web estaría alojado en los puertos 80 y 443, mientras que un navegador conectado a esos puertos usaría localmente un puerto efímero.

Los números de puerto estándar para los oyentes de aplicaciones significan que es fácil saber cómo conectarse realmente a un servicio. Por ejemplo, cuando coloca HTTPS en el frente de una URL, su navegador asume de forma predeterminada que necesita conectarse al puerto 443. En algunos casos, los oyentes se configurarán en puertos alternativos. Esto puede deberse a que otro servicio o versión del servicio ya está usando el puerto estándar. También puede ser un intento de seguridad a través de la oscuridad.

Conclusión

Un puerto de red es una dirección lógica. El software puede vincularse a un puerto, por lo que el sistema operativo sabe que cualquier tráfico enviado a ese puerto está destinado a ese proceso. Los números de puerto van de 0 a 65535. Muchos servicios están asociados con un número de puerto estándar. Los servidores usan estos puertos, mientras que los dispositivos que se conectan a ellos usan puertos aleatorios de números altos. Esto permite una fácil conexión predeterminada a los servicios y garantiza que la conexión a dicho servicio no le impida alojar otro servicio usted mismo.