Entendiendo los números de puertos de red, TCP, UDP e ICMP

Introducción

Como estudiante, profesional o entusiasta interesado en el campo de las redes informáticas, es muy importante tener una comprensión firme y la necesidad de puertos lógicos (internos) en un sistema operativo y sus protocolos.

Este artículo te proporciona una introducción para comprender los números de puertos de red, TCP, UDP e ICMP.

El término “puertos” generalmente significa las interfaces físicas o puertos en un dispositivo, como un enrutador, conmutador, servidor o incluso una computadora personal.

Sin embargo, a pesar de que estos son los puertos físicos, también hay puertos lógicos dentro de un sistema operativo o un dispositivo.

Puedes preguntarte, ¿cómo existe un puerto físico dentro de una computadora, servidor o dispositivo de red como un enrutador o conmutador? Aquí, vamos a desglosar aún más los conceptos de estos puertos lógicos o lo que se conoce como puertos de red.

Analogía simple

Para comenzar, utilizaremos una analogía simple para ayudarte a comprender los fundamentos de los puertos lógicos en un sistema.

Imaginemos que posees una organización, la ubicación de la sede central, es un edificio único con muchos pisos. En el centro del edificio están los ascensores para facilitar el acceso a los pisos superiores.

Cada piso está ocupado por un departamento único y sus respectivos miembros del personal de la organización. Cada día, los empleados usan los ascensores que transportan al personal a su departamento relevante y viceversa.

Imaginemos que el edificio físico es un sistema informático como un servidor.  Hay puertas en cada departamento y los empleados de la organización son diferentes tipos de tráfico de red que ingresan y salen del sistema diariamente.

Ahora juntemos todo y hagamos que funcionen en armonía. Cada vez que un empleado (tráfico de red) ingresa al edificio (sistema operativo). El empleado toma el elevador (capa de transporte) que lleva al empleado a su puerta respectiva (puerto lógico) en su departamento (servicio/protocolo en la capa de aplicación).

A partir de esta analogía, es posible que te hayas dado cuenta de que cada tipo de tráfico de red (empleado) ingresa a su departamento utilizando una puerta. Esta puerta es un puerto lógico existente dentro del sistema operativo (edificio) y no será visible para ninguna entidad fuera del sistema.

Cada tipo de tráfico de red se envía a un puerto lógico específico para su posterior procesamiento antes de llevarlo a la capa de aplicación.

Internet Assigned Numbers Authority (IANA)

La Autoridad de Números Asignados de Internet (IANA) es el órgano rector que administra y regula las direcciones de Protocolo de Internet (IP). Asimismo, las asignaciones de Números de Puerto.

Según el registro de número de puerto del protocolo de transporte y nombre de servicio de la IANA, hay un total de 65,535 puertos. Cada uno de los cuales es el tipo de puerto de Transmission Control Protocol (TCP) o User Datagram Protocol (UDP), hay algunos puertos que son tipos TCP y UDP.

Los rangos de los puertos se clasifican en tres categorías simples para una fácil identificación:

Rango de puertos Categoría
0 – 1023 Puertos conocidos
1024 – 49151 Puertos registrado
49152 – 65535 Puertos dinámicos/privados

 

Nota: puedes obtener más información sobre las asignaciones de puertos por parte de la IANA en su sitio web oficial.

El Internet Engineering Task Force (IETF) define los procedimientos para administrar los nombres de servicio y los números de puerto mediante RFC 6335.

Ahora tenemos una comprensión clara de las funciones de los puertos en un sistema. Es momento de profundizar un poco más en la definición de algunos de los puertos conocidos y sus propósitos en una red.

Protocolos de red y sus números de puerto

Un protocolo de red define las reglas y procedimientos en los que se produce la comunicación de datos entre dispositivos a través de una red.

Sin reglas o procedimientos predefinidos, los mensajes que atraviesan una red no tendrían ningún formato en particular. Es decir, podrían no ser significativos para el dispositivo de recepción.

Para analizar más a fondo la importancia de tener protocolos en una red/sistema, utilizaremos una analogía. Esto para proporcionarte una situación del mundo real en comparación con los protocolos de red.

Imaginemos que trabajas para una organización, ACME Corp. Dentro de la empresa, existen muchas políticas y procedimientos que rigen el manejo de las transacciones y actividades diarias dentro de la organización.

Uno de los procedimientos más importantes es el plan de evacuación de emergencia.

Si hay una emergencia con la organización, el procedimiento documenta las reglas y pautas que cada empleado debe seguir para protegerse. Debe contener la ruta hasta el punto de reunión mientras se realizan inspecciones antes de permitir que alguien vuelva a ingresar.

Si no existieran los procedimientos y las pautas adecuadas dentro de ACME Corp, todo sería un caos en una emergencia. Con procedimientos y pautas, los empleados evacuan de manera sistemática.

Este es el mismo concepto que se aplica en la red. Existen muchos protocolos diferentes que utilizan una red para comunicarse con otro dispositivo.

Cada protocolo tiene su propia singularidad en la que formatea la información, las reglas y procedimientos que siguen mientras viaja en la red hasta que es recibida.  Todo esto basado en la Interconexión de Sistemas Abiertos (OSI) o el grupo de Protocolo de Control de Transmisión/ Protocolo de Internet (TCP/IP).

Nota:

La ISO Open Systems Interconnection (OSI) es simplemente un modelo de referencia y en realidad no se implementa en un sistema. Sin embargo, los profesionales de red utilizan este modelo principalmente durante las discusiones de red y seguridad y los conceptos de solución de problemas.

El grupo del Protocolo de control de transmisión/Protocolo de Internet (TCP / IP) se implementa en todos los dispositivos relacionados con la red.

Ahora que has entendido los conceptos de los protocolos de red, analizaremos algunos de los protocolos populares y sus respectivos números de puerto. También veremos su importancia en una red.

Tipos de protocolos

Protocolo de mensajes de control de Internet (Internet Control Message Protocol – ICMP)

Ya sea en una red de área local (LAN) o una red de área amplia (WAN), los dispositivos se comunicarán para intercambiar datos e información. A veces, puede producirse un error.

Imaginemos que estás enviando un paquete a un servidor en Internet. Mientras tu computadora está inicializando la conexión entre sí y el servidor remoto, muestra un error que indica que no te puedes conectar.

Como profesional de redes, es posible que te preguntes por qué ambos dispositivos no pueden establecer con éxito una conexión entre ellos.

El Protocolo de mensajes de control de Internet (ICMP) definido por RFC 792 se usa generalmente para proporcionar informes de errores en una red.

Existen muchos tipos de mensajes de este protocolo que proporcionan diferentes acciones y comentarios si se produce un error, así como el problema que existe.

Tipos de mensajes de ICMP

Hay muchos tipos de mensajes del ICMP, sin embargo, analizaremos los principales que serán muy útiles como profesionales de redes.

ICMP Tipo 0 – Respuesta de eco

El mensaje de tipo 0 es cuando un dispositivo emisor está respondiendo a una solicitud de eco ICMP tipo 8.

ICMP Tipo 3 – Destino inalcanzable

Aquí, el remitente no puede encontrar un destino o simplemente es inalcanzable. Sin embargo, ICMP Tipo 3 brinda un poco más de detalles al agregar un Código al mensaje.

  • Código 0 – Red inalcanzable
  • Código 1 – Host inalcanzable
  • Protocolo inalcanzable – Código 2
  • Código 3 – Puerto inalcanzable

Por lo tanto, combinar el mensaje ICMP Tipo 3 con un Código único te da una mejor idea del error en la red.

ICMP tipo 5 – Redireccionamiento

Un mensaje ICMP Tipo 5 aparece cuando un dispositivo de puerta de enlace predeterminado, como un enrutador, le notifica al remitente que envíe el tráfico directamente a otra puerta de enlace que existe en la misma red.

Una razón puede ser que el segundo dispositivo de puerta de enlace o enrutador pueda tener una mejor ruta hacia el destino o una ruta más corta.

ICMP Tipo 8 – Solicitud de eco

El mensaje ICMP tipo 8 es utilizado por un dispositivo emisor para verificar la conectividad de red básica entre él y el dispositivo receptor previsto. Cualquier dispositivo que recibe un mensaje ICMP Tipo 8, responde con un ICMP Tipo 0 – Respuesta de eco.

ICMP Tipo 11 – Tiempo excedido

El tipo 11 se refiera al tiempo de vida (TTL) que caduca o llega a cero (0) antes de llegar al dispositivo receptor previsto. La última puerta de enlace que ajusta el TTL a 0 notificó al remitente utilizando un mensaje ICMP Tipo 11 como se muestra a continuación:

El parámetro -i ajusta el valor de Tiempo de vida (TTL) en el mensaje ICMP.

Sin ajustar el valor de Tiempo de vida (TTL) del mensaje ICMP Tipo 8, el remitente recibió un mensaje ICMP Tipo 0. Es decir, una transmisión exitosa entre ambos dispositivos.

Nota:

También puedes encontrar más información sobre ICMP en: https://tools.ietf.org/html/rfc792.  Puedes encontrar más información sobre todos los ICMP en: https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml#icmp-parameters-codes-7.

Una utilidad simple y fácil de usar es Ping. Ping aprovecha la funcionalidad del ICMP y te informa si la comunicación es exitosa o no, redirigida, el host o la red de destino es inalcanzable, etc.

Ping está integrada en casi todos, si no todos los modernos sistemas operativos, desde computadoras de escritorio, servidores e incluso sistemas operativos móviles.

El comando ping se puede ejecutar en el símbolo del sistema de Windows o en la terminal de los sistemas operativos basados ​​en Linux.

Cuando un usuario inicia el comando ping con una dirección de destino, la utilidad ping enviará un mensaje ICMP Tipo 8 al destino deseado. La sintaxis para verificar la conectividad básica es la siguiente:

Protocolo de control de transmisión (Transmission Control Protocol – TCP)

Cuando envías una carta a través de tu servicio postal local, ¿Alguna vez te has preguntado si tu carta llega al destino con éxito? ¿Se le dio prioridad a tu carta dentro del sistema de procesamiento del servicio de correo para la entrega? ¿Qué confirmación recibirías cuando la carta se entregue con éxito?

Imagínate en una red, estas son las mismas preocupaciones con los dispositivos. Si un dispositivo envía un datagrama a otro dispositivo, ya sea una misma Red de área local (LAN) o una red remota. ¿Qué seguridad se da para la garantía del datagrama (mensaje) entre el remitente y el receptor?

El Protocolo de control de transmisión (TCP) definido por RFC 793 está orientado a la conexión. El protocolo que opera es la capa de transporte tanto del modelo de referencia OSI como en el conjunto TCP/IP.

Está diseñado para proporcionar un transporte confiable de los datagramas a través de una red. Proporciona tranquilidad al inicializar un protocolo de enlace de 3 vías antes de comunicar los datos entre el remitente y el receptor.

Piensa que hay dos (2) dispositivos que desean comunicarse y utilizar TCP para garantizar que sus mensajes se entreguen correctamente.

Ejemplo

Usaremos una analogía simple para explicar mejor el protocolo de enlace TCP 3-Way, tenemos dos (2) dispositivos, Bob y Alice. Bob quiere intercambiar datos con Alice, pero necesita asegurarse de que los datos que se envían se entreguen correctamente. Por lo tanto, Bob decide utilizar el Protocolo de control de transmisión (TCP) para garantizar la entrega.

Bob inicializa el protocolo de enlace de 3 vías TCP enviando un paquete de sincronización TCP (SYN) a Alice indicando que desea establecer una sesión. Alice, al recibir el paquete SYN, responde a Bob indicando que también quiere establecer una sesión. Lo hace utilizando un paquete de sincronización y reconocimiento TCP (SYN/ACK). Bob, al recibir el paquete TCP SYN de Alice, responde con un paquete de Reconocimiento TCP (ACK).

Ahora que se ha establecido el protocolo de enlace TCP en 3 vías, se pueden intercambiar datos entre los (2) dispositivos. Cada datagrama enviado a través de la sesión entre Bob y Alice, enviará un paquete ACK para confirmar la entrega exitosa del mensaje.

¿Qué pasa si Bob envía un mensaje a Alice y Bob no recibe un ACK de Alice? En esta situación, Bob retransmitiría los datos nuevamente después de ciertos intervalos hasta que se envíe un paquete ACK a Bob.

Otra pregunta que puedes tener es, ¿cómo el Protocolo de Control de Transmisión (TCP) termina una sesión con gracia? Cada dispositivo envía un paquete TCP Finish (FIN) entre sí indicando que les gustaría terminar la sesión.

Si utilizamos herramientas de análisis de protocolos de red como Wireshark, podemos ver la composición de paquetes de cada datagrama que pasa por la red. La siguiente es una captura usando Wireshark para demostrar el protocolo de enlace TCP de 3 vías.

Protocolo de datagramas de usuario (User Datagram Protocol – UDP)

El Protocolo de datagramas de usuario (UDP), definido por RFC 768, es un protocolo sin conexión. Este protocolo también funciona en la capa de transporte tanto del modelo OSI como en el conjunto TCP/IP.

A diferencia del Protocolo de control de transmisión (TCP), el Protocolo de datagramas de usuario (UDP) no proporciona ninguna garantía de la entrega de datagramas.

No todos los protocolos en la capa de aplicación usan TCP, hay muchos protocolos de capa 7 que usan el protocolo de datagramas de usuario (UDP).

Quizás te preguntes, ¿por qué un protocolo de capa superior usaría UDP en lugar de TCP?

Hagamos un breve resumen de TCP. Cuando los dispositivos están utilizando TCP como su protocolo de capa de transporte preferido, cada mensaje enviado entre el remitente y el receptor, devuelven un paquete de reconocimiento (ACK).

Esto significa que, si un remitente como Bob envía 100 paquetes a Alice a través de la red, Alice devolverá 100 paquetes (ACK) a Bob. Imaginemos una red más grande con cientos, miles o incluso Internet, donde todos usarían TCP. El tráfico devuelto, en este caso, los paquetes ACK, crearían una gran sobrecarga en la red y, por lo tanto, causarían congestión.

Esto es un poco similar a tener una carretera donde el número de vehículos aumenta, esto causaría tráfico.

Ejemplo

Usaremos otra analogía, muchas personas en todo el mundo usan YouTube por muchas razones. Supón que el tráfico de video usa TCP en lugar de UDP, YouTube tiene millones de usuarios diarios que ven contenido en el sitio.

Si cada usuario enviara un paquete TCP ACK a YouTube a esa escala muy grande, la red de YouTube e incluso Internet se congestionarían. La gran cantidad de paquetes TCP ACK causarían una degradación del rendimiento de la red. Por lo tanto, no todos los protocolos de capa superior usan TCP debido a este problema.

La forma en que se comporta UDP es simplemente enviando datagramas sin ninguna garantía ni entrega del mensaje. Cuando los dispositivos se comunican a través de una red, la ruta con cada paquete puede ser diferente de la otra. Por lo tanto, puede recibirse en una secuencia fuera de orden.

El Protocolo de datagramas de usuario (UDP) no proporciona ningún mecanismo para el reensamblaje del paquete. Por su parte el protocolo de control de transmisión (TCP) ayuda a reensamblar y reordenar los paquetes cuando se reciben del remitente.

Nota: El tráfico de voz y video usa UDP como el protocolo preferido de la capa de transporte.

Comparación de TCP y UDP

TCP

  • De confianza
  • Utiliza acuses de recibo para confirmar la recepción de datos
  • Los reenvíos de datos de cualquiera de los paquetes se pierden durante la transmisión
  • Entrega los datos en orden secuencial y maneja el reensamblaje
  • Aplicaciones: HTTP, FTP, SMTP, Telnet.

UDP

  • Muy rápido en la entrega de datos
  • Muy baja sobrecarga en la red
  • No requiere ningún paquete de reconocimiento
  • Si se pierden paquetes durante la transmisión, no reenvía ningún dato perdido
  • No envía datos en orden o administra el reensamblaje
  • Aplicaciones: DHCP, DNS, SNMP, TFTP, VoIP, IPTV.

Nota: Existen protocolos que utilizan TCP y UDP, como DNS y SNMP.

Protocolo de internet (Internet Protocol – IP)

El Protocolo de Internet definido por RFC 791 fue creado para operaciones en sistemas interconectados de redes de comunicación de computadora con conmutación de paquetes. El Protocolo de Internet (IP) opera en la capa de red del modelo OSI y en la capa de Internet en TCP/IP.

Sin embargo, el Protocolo de Internet (IP) tiene tres características principales:

  • Sin conexión: el remitente del mensaje no sabe si el destinatario está disponible o no, el protocolo envía los mensajes tal como están. Si el mensaje se entrega con éxito al destinatario previsto, el remitente no sabe si el mensaje llegó o no. Dado que IP se comporta un poco como UDP, no hay sesión creada antes de la comunicación de datos. Esto lleva al receptor a no tener conocimiento de ningún mensaje entrante.
  • Utiliza Best Effort: Best Effort implica que el Protocolo de Internet no es confiable. De manera similar a UDP, IP no proporciona ninguna garantía de los datos entre un remitente y un receptor. Además, si se pierden datos durante la transmisión, IP no tiene la funcionalidad para facilitar el reenvío de los paquetes perdidos.
  • Independiente de los medios: El beneficio de usar IP es que es independiente del tipo de medio que se usa para transportar los datos entre el remitente y el receptor. A veces, hay muchos tipos diferentes de medios entre el emisor y el receptor, como cables de cobre, radiofrecuencia, fibra óptica, etc. Los datagramas de IP se pueden transportar a través de cualquier tipo de medio. El enlace de datos es responsable de formatear el marco para cada tipo de medio a medida que sale de un dispositivo.