1. La Capa de Transporte y sus Servicios
La capa de transporte se ubica entre la capa de aplicación y la de red. Sus protocolos proporcionan comunicación lógica entre procesos de aplicación en hosts distintos y operan exclusivamente en los sistemas terminales. Aunque utilizan los servicios del protocolo IP (no fiable) de la capa de red, son independientes de este. Los servicios que ofrecen pueden limitarse a los proporcionados por la capa de red o extenderse para incluir funcionalidades adicionales como fiabilidad y seguridad. Generalmente, una aplicación utiliza un único protocolo de transporte.
La interacción entre la capa de red y la de transporte se realiza a través de operaciones de multiplexación y demultiplexación, que transforman la entrega de datos de host a host en una entrega de proceso a proceso.
2. Multiplexación y Demultiplexación en la Capa de Transporte
La multiplexación es el proceso en el host de origen donde la capa de transporte recopila datos de múltiples sockets de aplicación, los encapsula en segmentos y los pasa a la capa de red. Por otro lado, la demultiplexación es el proceso en el host de destino donde la capa de transporte recibe segmentos de la capa de red y los entrega al socket de aplicación correcto.
La entrega de segmentos al socket receptor adecuado es crucial, especialmente si un proceso tiene varios sockets abiertos. Cada socket se identifica de forma única mediante una tupla de campos, que puede incluir la dirección IP y el número de puerto.
Identificación de Sockets
- En UDP, un socket se identifica principalmente por la dirección IP de destino y el número de puerto de destino.
- En TCP, un socket se identifica por una tupla de cuatro elementos: dirección IP de origen, puerto de origen, dirección IP de destino y puerto de destino.
Ambos tipos de segmentos, TCP y UDP, incluyen información de puerto de origen y destino en sus cabeceras. Al llegar un segmento al host, la capa de transporte examina su número de puerto de destino para dirigirlo al socket apropiado.
Niveles de Direccionamiento en el Host
Existen tres niveles de direccionamiento en cada host, cada uno identificando un aspecto clave:
- La dirección del host (contenida en la cabecera del datagrama IP).
- El protocolo de transporte (también contenido en la cabecera del datagrama IP).
- El proceso (identificado por el número de puerto, contenido en la cabecera del segmento UDP/TCP).
Cuando dos segmentos llegan al host con diferente origen pero el mismo destino:
- En modo no orientado a conexión (socket UDP), ambos se dirigen al mismo socket.
- En modo orientado a conexión (socket TCP), se dirigen a sockets diferentes.
En el modo orientado a conexión (TCP), un servidor puede mantener múltiples sockets TCP abiertos simultáneamente (un socket de escucha y uno por cada conexión activa). En ciertos escenarios de servidores, un número reducido de sockets puede servir a múltiples procesos.
3. Transporte sin Conexión: UDP
El Protocolo de Datagramas de Usuario (UDP) es un servicio de transporte sin conexión que se caracteriza por ser:
- No fiable: No garantiza la entrega de los datagramas.
- Sin estado: No mantiene información sobre el estado de la conexión.
- Sin control de flujo: No regula la velocidad de envío del emisor.
- Sin control de congestión: No adapta su tasa de envío a la capacidad de la red.
- Sin garantías: No asegura el orden de llegada ni la duplicación de paquetes.
- Sin establecimiento de conexión: No requiere un handshake previo.
- Sin segmentación de datos: No divide los datos de la aplicación en segmentos más pequeños a nivel de transporte (aunque la capa de red puede fragmentar el datagrama IP).
UDP implementa las funciones mínimas de un protocolo de transporte: multiplexación y demultiplexación, y una comprobación de errores básica (checksum).
Funcionamiento y Aplicaciones de UDP
UDP se limita a proporcionar un servicio de entrega de proceso a proceso, extendiendo el servicio de ‘mejor esfuerzo’ (best effort) de IP. Esto se debe a que, al recibir datagramas IP, se les añade una mínima información de cabecera para formar los segmentos UDP. Cuando un proceso de aplicación envía datos, estos se empaquetan en un segmento UDP y se entregan directamente a la capa de red.
Este mecanismo, al ser rápido y de baja latencia, es ideal para aplicaciones de tiempo real que requieren retardos mínimos, como la transmisión de voz (VoIP) o video en vivo. La capa de aplicación tiene mayor control sobre los datos enviados.
Desventajas de UDP
Sin embargo, la ausencia de control de flujo y congestión en UDP puede llevar a la saturación de la red y la pérdida de paquetes. Por esta razón, algunos proveedores de servicios de Internet (ISP) pueden bloquear el tráfico UDP, y TCP se utiliza cada vez más para la transmisión de archivos multimedia, a pesar de su mayor latencia, debido a su fiabilidad.
Estructura del Segmento UDP
La cabecera de un segmento UDP tiene un tamaño fijo de 8 bytes y contiene los siguientes campos:
- Número de Puerto de Origen (16 bits): Opcional, identifica el proceso de la aplicación emisora.
- Número de Puerto de Destino (16 bits): Identifica el proceso de la aplicación receptora.
- Longitud (16 bits): Longitud total del segmento UDP en bytes (cabecera + cuerpo de datos).
- Suma de Verificación (Checksum) (16 bits): Mecanismo para la detección de errores en el segmento UDP.
Mecanismo de Suma de Verificación (Checksum)
Para calcular el checksum, se considera una ‘pseudo-cabecera’ del datagrama IP que contiene el segmento UDP, junto con el propio segmento. El campo de checksum en el segmento UDP se inicializa a cero antes del cálculo. Si el valor calculado coincide con el valor recibido, se asume que el segmento UDP no contiene errores. En caso contrario, el segmento se descarta y se notifica a la capa de aplicación.
4. Principios del Control de Congestión en Redes
La congestión de red es un fenómeno crítico que surge del exceso de tráfico. Se manifiesta como un aumento significativo en los retardos, desbordamiento de los búferes en los routers, lo que a su vez provoca la pérdida de paquetes y una drástica reducción del rendimiento de las aplicaciones.
Causas de la Congestión
- Emisión de datos a velocidades inapropiadas para la capacidad de la red.
- Mecanismos de fiabilidad inapropiados, como retransmisiones innecesarias.
- Compartición de enlaces de transmisión y búferes de capacidad limitada en los routers.
Consecuencias de la Congestión
- Grandes retardos de cola en los routers.
- Aumento de retransmisiones, lo que desperdicia recursos de red.
- Descarte de paquetes, incluso aquellos que ya han avanzado en su ruta.
Escenarios de Congestión
Para comprender mejor la congestión, se suelen analizar tres escenarios fundamentales:
Escenario 1: Búfer Ilimitado
Dos hosts emisores y un router con búfer de capacidad ilimitada. Solo se envían datos originales con un protocolo de transporte simple. Ambos hosts comparten la capacidad del enlace de salida del router. En este caso, la congestión se manifiesta principalmente como un aumento de los retardos de cola, ya que los paquetes nunca se descartan.
Escenario 2: Búfer Limitado y Retransmisiones
Dos hosts emisores y un router con búfer de capacidad limitada, utilizando un protocolo de transporte fiable que incluye retransmisiones. Los paquetes se descartan si el búfer está lleno, y ambos hosts comparten la capacidad del enlace de salida del router.
- Caso Ideal: El host conoce el estado del búfer y solo envía datos si no está lleno. No se producen pérdidas y, por lo tanto, no se retransmiten paquetes.
- Caso Realista: El emisor solo retransmite si detecta que un paquete se ha perdido (por ejemplo, por un timeout o ACKs duplicados). El desbordamiento del búfer es una causa común de pérdida.
- Caso Más Realista (Retransmisión Prematura): El timeout del emisor expira, pero el paquete original no se ha perdido, sino que solo se ha retardado. Llegan al receptor tanto el paquete original como el duplicado, lo que resulta en retransmisiones innecesarias y un desperdicio de ancho de banda.
Escenario 3: Múltiples Hosts y Routers
Cuatro hosts emisores, múltiples routers con búferes de capacidad limitada y rutas multisalto solapadas. Este escenario es más complejo y representa una situación de red más realista, donde la interacción entre múltiples flujos de tráfico y puntos de congestión es más pronunciada.
Métodos de Control de Congestión
Los métodos de control de congestión se clasifican en función de la intervención de la capa de red:
Control Terminal a Terminal (End-to-End)
La capa de red no interviene ni proporciona soporte explícito a la capa de transporte para controlar la congestión. Los hosts emisores toman el control basándose en el comportamiento observado de la red (por ejemplo, pérdidas de paquetes o aumento de retardos). TCP es un ejemplo de protocolo que implementa este tipo de control.
Control Asistido por la Red (Network-Assisted)
La capa de red sí interviene activamente. Los routers indican al emisor el estado de congestión de la red. Esta notificación puede ser:
- Directa: Un router envía un mensaje explícito al emisor (ej. ICMP Source Quench, aunque obsoleto).
- Indirecta: El router marca los paquetes (ej. ECN – Explicit Congestion Notification) y el receptor notifica al emisor sobre estas marcas.