TCP y UDP: Fundamentos de la Comunicación Fiable y Direccionamiento de Puertos en Redes

Fiabilidad en la Comunicación de Redes: El Rol de TCP

TCP es un protocolo de capa de transporte implementado para asegurar una entrega fiable de datos. En términos de redes, la fiabilidad garantiza que cada fragmento de datos enviado desde el origen llegue a su destino. En la capa de transporte, las tres operaciones fundamentales para la fiabilidad son:

  • Seguimiento de los datos transmitidos
  • Acuse de recibo de los datos recibidos
  • Retransmisión de los datos no reconocidos

La capa de transporte del host emisor rastrea todos los fragmentos de datos de cada conversación y retransmite aquellos que el host receptor no haya confirmado con un acuse de recibo. Estos procesos de fiabilidad añaden una sobrecarga adicional a los recursos de la red debido al acuse de recibo, el seguimiento y la retransmisión. Para soportar estas operaciones de fiabilidad, se intercambian más datos de control entre los hosts emisor y receptor. Esta información de control está contenida en la cabecera de la capa 4.

Esto genera un equilibrio entre el valor de la fiabilidad y la sobrecarga que implica para la red. En la capa de transporte, los protocolos especifican métodos para una entrega fiable y garantizada, o de «mejor esfuerzo». En el contexto de las redes, una entrega de «mejor esfuerzo» se denomina inestable o no fiable, porque el destino no acusa recibo de los datos.

Aplicaciones como bases de datos, páginas web y correo electrónico están diseñadas para usar un protocolo de capa de transporte con fiabilidad implementada. Se considera entonces que la sobrecarga adicional de la red es necesaria para estas aplicaciones.

Otras aplicaciones son más tolerantes en cuanto a la pérdida de pequeñas cantidades de datos.

TCP y UDP: Protocolos Clave de la Capa de Transporte

Los dos protocolos de capa de transporte más comunes de la suite de protocolos TCP/IP son TCP y UDP. Ambos protocolos gestionan la comunicación de diversas aplicaciones. Las diferencias entre ambos radican en las funciones específicas que cada uno implementa.

Protocolo de Datagrama de Usuario (UDP)

Es un protocolo sencillo y sin conexión, descrito en la RFC 768. Ofrece la ventaja de proporcionar una entrega de datos con baja sobrecarga. Los segmentos de comunicación UDP se denominan datagramas. UDP envía datagramas bajo el principio de «mejor esfuerzo». Las aplicaciones que utilizan UDP incluyen:

  • Sistemas de Nombres de Dominio (DNS)
  • Streaming de video
  • Voz sobre IP (VoIP)

Protocolo de Control de Transmisión (TCP)

Es un protocolo orientado a la conexión, descrito en la RFC 793. TCP implica una sobrecarga adicional para ofrecer sus funcionalidades. Las funciones adicionales especificadas por TCP son la entrega en el mismo orden, la entrega fiable y el control de flujo. Cada segmento TCP tiene 20 bytes de sobrecarga en la cabecera al encapsular los datos de la capa de aplicación, mientras que cada segmento UDP solo tiene 8 bytes de sobrecarga.

Las siguientes aplicaciones utilizan TCP:

  • Navegadores web (HTTP/HTTPS)
  • Correo electrónico (SMTP, POP3, IMAP)
  • Transferencias de archivos (FTP)

Direccionamiento de Puertos en TCP y UDP

Los servicios basados en TCP y UDP rastrean las distintas aplicaciones que se están comunicando. Para diferenciar los segmentos y datagramas destinados a cada aplicación, tanto TCP como UDP poseen campos de cabecera que permiten identificar inequívocamente estas aplicaciones.

Identificación de Conversaciones y Sockets

La cabecera de cada segmento o datagrama contiene un puerto de origen y un puerto de destino. El número del puerto de origen es el número asociado a la comunicación de la aplicación originaria en el host local. El número del puerto de destino es el número asociado a esa comunicación de la aplicación de destino en el host remoto.

Los números de puerto se asignan de distintas formas, en función de si el mensaje es una solicitud o una respuesta.

Cuando una aplicación cliente envía una solicitud a una aplicación servidor, el puerto de destino contenido en la cabecera es el número de puerto asignado al demonio de servicio que se está ejecutando en el host remoto. El software cliente debe conocer el número de puerto asociado al proceso servidor en el host remoto. Este número de puerto de destino se configura de forma predeterminada o manualmente.

El puerto de origen en la cabecera de un segmento o datagrama de un cliente se genera de manera aleatoria. Siempre y cuando no entre en conflicto con otros puertos en uso en el sistema, el cliente puede elegir cualquier número de puerto. El número de puerto actúa como dirección de retorno para la aplicación que realiza la solicitud. La capa de transporte mantiene un seguimiento de este puerto y de la aplicación que generó la solicitud, de modo que cuando se devuelva una respuesta, pueda ser enviada a la aplicación correcta. El número de puerto de la aplicación que realiza la solicitud se utiliza como número de puerto de destino en la respuesta que proviene del servidor.

La combinación del número de puerto de la capa de transporte y de la dirección IP de la capa de red asignada al host identifica de manera exclusiva un proceso particular que se ejecuta en un dispositivo host específico. Esta combinación se denomina socket. A menudo, los términos número de puerto y socket se utilizan de forma indistinta. El término socket hace referencia solo a la combinación exclusiva de dirección IP y número de puerto. Un par de sockets, que consiste en las direcciones IP y los números de puerto de origen y de destino, también es exclusivo e identifica la conversación entre dos hosts.

Tipos de Direccionamiento de Puerto y la IANA

La Autoridad de Números Asignados en Internet (IANA) asigna los números de puerto. La IANA es un organismo de estandarización responsable de asignar diversos estándares de direccionamiento.

Los distintos tipos de números de puerto son los siguientes:

  • Puertos bien conocidos (números 0 a 1023).
  • Puertos registrados (números 1024 a 49151).
  • Puertos dinámicos o privados (números 49152 a 65535).

Puertos Bien Conocidos

Los puertos bien conocidos (números 0 a 1023) están reservados para servicios y aplicaciones. Por regla general, se utilizan para aplicaciones como HTTP, POP3/SMTP y Telnet. Ejemplos de puertos bien conocidos:

  • Puerto 20: Datos de Protocolo de Transferencia de Archivos (FTP) – Protocolo: TCP
  • Puerto 21: Control del Protocolo de Transferencia de Archivos (FTP) – Protocolo: TCP
  • Puerto 23: Telnet – Protocolo: TCP
  • Puerto 25: Protocolo Simple de Transferencia de Correo (SMTP) – Protocolo: TCP
  • Puerto 69: Protocolo Trivial de Transferencia de Archivos (TFTP) – Protocolo: UDP
  • Puerto 80: Protocolo de Transferencia de Hipertexto (HTTP) – Protocolo: TCP
  • Puerto 110: Protocolo de Oficina de Correo versión 3 (POP3) – Protocolo: TCP
  • Puerto 194: Internet Relay Chat (IRC) – Protocolo: TCP
  • Puerto 443: HTTP Seguro (HTTPS/SSL) – Protocolo: TCP
  • Puerto 520: Protocolo de Información de Enrutamiento (RIP) – Protocolo: UDP

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.