2. Objetivos de la capa de transporte

La capa de transporte convierte la red en una autopista utilizable por las aplicaciones: divide datos en unidades seguras, regula el ritmo de envío, permite que muchos programas usen simultáneamente la misma conexión física y ofrece herramientas para detectar errores antes de que dañen la experiencia del usuario.

Sus objetivos combinan matemática, estadística y conocimiento del hardware para ofrecer una comunicación robusta sin exigir a la aplicación que reescriba la lógica cada vez. A continuación se desarrollan los pilares que todo administrador o desarrollador debe dominar antes de analizar protocolos específicos.

2.1 Segmentación y reensamblado de datos

Cada aplicación genera flujos de bytes de tamaño impredecible. La capa de transporte los segmenta para respetar el tamaño máximo de transmisión (MTU), optimizar el uso de buffers y facilitar la numeración de cada porción. Al recibirlos, el host remoto reensambla siguiendo los números de secuencia aun si los segmentos llegaron fuera de orden.

  • Segmentación lógica: el emisor decide cuánto cabe en cada segmento considerando cabeceras y políticas de la capa de red.
  • Encapsulamiento: a cada fragmento se le añade una cabecera con número de secuencia, confirmaciones esperadas y puertos.
  • Reensamblado: el receptor guarda temporalmente los segmentos, corrige huecos y descarta duplicados.

Simulación de segmentación en Python

Este proceso puede ponerse a prueba con un script sencillo que divide un mensaje, baraja los segmentos y vuelve a unirlos siguiendo su número de secuencia:

def segmentar_flujo(cadena, tam_segmento):
    segmentos = []
    for inicio in range(0, len(cadena), tam_segmento):
        fin = inicio + tam_segmento
        segmentos.append((len(segmentos), cadena[inicio:fin]))
    return segmentos

def reensamblar(segmentos):
    segmentos_ordenados = sorted(segmentos, key=lambda item: item[0])
    return "".join(parte for _, parte in segmentos_ordenados)

mensaje = "La confiabilidad extremo a extremo nace en la capa de transporte."
pares = segmentar_flujo(mensaje, 16)
print(pares)
respuesta = reensamblar(pares[::-1])
print(respuesta)

Aun siendo un ejemplo breve, evidencia por qué la numeración y el almacenamiento temporal son imprescindibles cuando la red entrega piezas fuera de orden.

2.2 Control de flujo y de congestión

El control de flujo protege al receptor de un emisor demasiado rápido, mientras que el control de congestión protege a la red completa de la saturación. Ambos mecanismos se confunden con frecuencia, por lo que conviene contrastarlos explícitamente:

Aspecto Control de flujo Control de congestión
Alcance Entre emisor y receptor. Entre todos los nodos de la red.
Objetivo Evitar que el receptor se quede sin memoria. Prevenir la pérdida masiva de paquetes en la red.
Mecanismo típico Ventana deslizante y avisos de tamaño de buffer. Algoritmos como slow start, congestion avoidance y fast recovery.
Señal de ajuste ACKs demorados o tamaño de ventana reducido. Detección de pérdidas, aumentos de RTT o explícitos ECN.

Para observar estos comportamientos en un sistema Windows se puede usar PowerShell y listar conexiones junto a su estado actual:

Get-NetTCPConnection | Select-Object -First 10 LocalAddress,LocalPort,RemoteAddress,State

Analizar las transiciones de estado y el volumen de sockets ayuda a detectar si el límite de recursos se alcanza por falta de control de flujo o por congestión en la ruta.

2.3 Multiplexación mediante puertos

La multiplexación permite que múltiples aplicaciones compartan una misma interfaz física. Esto se logra gracias a los números de puerto, un campo de 16 bits que crea identificadores virtuales dentro de cada host. Un socket completo incluye dirección IP, puerto de origen y puerto de destino, lo que vuelve única cada conversación.

  • Puertos bien conocidos (0-1023): reservados para servicios estándar como HTTP 80 o HTTPS 443.
  • Puertos registrados (1024-49151): asignados a aplicaciones específicas por la IANA.
  • Puertos dinámicos (49152-65535): elegidos automáticamente por el sistema operativo para clientes efímeros.

Gracias a esta multiplexación, un servidor puede atender correo, web y VPN en paralelo sin que los flujos se mezclen. Además, los puertos facilitan políticas de firewall y diagnósticos, porque basta con filtrar por número para aislar una aplicación.

2.4 Detección y recuperación de errores

La capa de transporte integra varios niveles de defensa contra errores. El checksum de la cabecera detecta alteraciones de bits durante el tránsito, mientras que la numeración y las confirmaciones permiten saber si falta un segmento completo. Cuando algo falla, el protocolo puede retransmitir o notificar a la aplicación para que decida.

  • Detección: checksum, números de secuencia discontinuos, expiración de temporizadores.
  • Corrección: retransmisión selectiva, repetición rápida de un segmento perdido o abortar la conexión.
  • Prevención: combinar control de flujo y congestión para evitar que el error ocurra por saturación.

Al monitorear estos eventos en herramientas de captura como Wireshark se puede identificar rápidamente dónde se origina una pérdida o duplicación, información clave para el soporte técnico.

2.5 Protocolos orientados y no orientados a conexión

Los objetivos anteriores se implementan de forma distinta según el protocolo elegido. TCP es orientado a conexión: establece un canal lógico antes de transferir datos y mantiene estados complejos para garantizar fiabilidad. En cambio, UDP es no orientado a conexión, por lo que envía datagramas independientes sin verificar que lleguen.

Elegir uno u otro depende de las necesidades del servicio. Transferir archivos bancarios exige garantías estrictas, mientras que una videollamada tolera cierta pérdida en favor de la inmediatez. Entender los objetivos de la capa de transporte permite combinar protocolos, priorizar el uso de recursos y diseñar arquitecturas resilientes.