Funcionamiento de la Capa de Transporte: TCP y UDP
La capa de transporte es fundamental en la comunicación en redes. Sus funciones principales se resumen en:
- Gestión de errores
- Multiplexación: Permite usar una sola tarjeta de red para enviar múltiples flujos de datos de diferentes aplicaciones.
De forma más específica, estas funciones se dividen en las siguientes tareas:
- Rastreo de aplicaciones: TCP y UDP incluyen un número de puerto en los paquetes para identificar el programa correspondiente. Al recibir datos, se utiliza este número para entregarlos a la aplicación correcta.
- Troceado de datos: TCP y UDP dividen los datos en bruto en segmentos. En TCP, cada segmento recibe un número de secuencia para reordenarlos en el destino.
- Control de velocidad (Congestión): TCP puede ajustar la velocidad de envío para adaptarse a la capacidad del receptor, evitando la congestión de la red.
Diferencias Clave entre TCP y UDP
Aunque ambos son protocolos de la capa de transporte, existen diferencias significativas:
- Tamaño de la cabecera: La cabecera de UDP es más pequeña (8 bytes) que la de TCP (20 bytes).
- Número de segmento: TCP incluye el número de segmento en su cabecera; UDP no.
- Checksum: TCP utiliza un campo checksum para la comprobación de errores; UDP, opcionalmente.
- Control de flujo: TCP tiene bits para establecer el control del flujo y la gestión de la conexión; UDP no.
- Tamaño de ventana: TCP utiliza un campo de «tamaño de ventana» para indicar la cantidad de datos que puede recibir antes de enviar una confirmación. Esto optimiza la eficiencia.
Direccionamiento a Nivel de Puerto
Al igual que las direcciones IP, los mensajes de la capa de transporte incluyen direcciones de puerto para el remitente y el destinatario. Estos puertos identifican las aplicaciones específicas.
Es crucial distinguir entre puertos de origen y destino. Los routers suelen bloquear la mayoría de los puertos de destino, excepto aquellos asociados a servicios conocidos.
Números de Puerto
La asignación de puertos sigue una estructura:
- Puertos bien conocidos (0-1023): Reservados para aplicaciones estándar de Internet (ej., HTTP, FTP, SMTP).
- Puertos registrados (1024-49151): Utilizados para aplicaciones no estándar, pero registradas.
- Puertos dinámicos (49152-65535): Asignados dinámicamente por el sistema operativo a las aplicaciones que necesitan un puerto de origen.
Numeración y Reensamblaje
La principal diferencia entre TCP y UDP radica en la numeración y el reensamblaje:
- TCP: Incluye un número de secuencia en cada segmento. El receptor utiliza este número para reordenar los datos y garantizar la entrega completa y correcta. Es un protocolo *orientado a la conexión* y *confiable*.
- UDP: No incluye numeración. Los datos pueden llegar desordenados y no hay mecanismo para reordenarlos. Es un protocolo *no orientado a la conexión* y *no confiable*. La aplicación que use UDP debe gestionar la posible pérdida o desorden de los paquetes.
La elección entre TCP y UDP depende del programador de la aplicación, no del administrador de la red.
El Protocolo TCP
TCP es un protocolo fiable. Utiliza números de secuencia y confirmaciones (ACK) para garantizar la entrega ordenada y completa de los datos. Los receptores almacenan los segmentos en búferes. Esto, aunque más fiable, lo hace más lento que UDP.
Las cabeceras TCP y UDP siempre incluyen:
- Puerto de origen
- Puerto de destino
- IP de origen
- IP de destino
Adicionalmente, TCP incluye:
- Número de secuencia
- Checksum
El checksum es una suma de comprobación. El emisor calcula la suma de los datos y la envía junto con los datos. El receptor realiza el mismo cálculo y compara el resultado. Si coinciden, la transmisión fue exitosa.
Mecanismos de TCP
TCP utiliza varios mecanismos para asegurar una comunicación fiable:
- Inicio de sesión (Conexión de 3 vías):
- SYN (Solicitud de sincronización)
- SYN, ACK (Sincronización y confirmación)
- ACK (Confirmación)
- Finalización de conexión: Envío de un segmento FIN.
- Confirmación de segmentos: Cada segmento enviado es confirmado.
- Control de congestión: Ajusta la velocidad de transmisión para evitar la saturación de la red.
- Temporizadores: Detectan la pérdida de datos si no se recibe una confirmación en un tiempo determinado.
- Confirmaciones en bloque: Se confirman bloques de datos para optimizar el uso de la red.
- Búferes: El receptor almacena los segmentos en búferes.
- Reordenamiento: TCP reordena los segmentos que llegan desordenados.
- Solicitud de segmentos faltantes: Se pueden solicitar solo los segmentos perdidos.
- Descarte de duplicados: Los segmentos duplicados se descartan.
UDP (User Datagram Protocol)
UDP es un protocolo de transporte no orientado a la conexión, diseñado para obtener el máximo rendimiento. Prioriza la velocidad sobre la fiabilidad, por lo que tiene una sobrecarga muy baja.
Reensamblaje en UDP
No hay reensamblaje en UDP. Los datos se procesan tal como llegan. Si llegan desordenados, se entregan desordenados. Si faltan datos, no se solicitan. No hay temporizadores ni mecanismos para detectar la pérdida de datos a nivel de la capa de transporte. La aplicación es responsable de gestionar estos aspectos si necesita fiabilidad.