Middle
¿Qué puedes contarme sobre la ventana TCP?
sobes.tech AI
Respuesta de la IA
La ventana TCP (o ventana de recepción TCP) es un mecanismo de control de flujo de datos en el protocolo TCP. Define la cantidad de datos que el emisor puede enviar sin esperar una confirmación del receptor (ACK). El tamaño de la ventana se adapta dinámicamente, evitando el desbordamiento del búfer del receptor y controlando la velocidad de transmisión.
Puntos clave:
- Control de flujo: La función principal es evitar que el emisor envíe datos más rápido de lo que el receptor puede procesarlos.
- Tamaño de la ventana: Es anunciado por el receptor en cada segmento TCP (en el campo "Window Size") y indica cuántos bytes está dispuesto a aceptar, comenzando desde el siguiente byte esperado.
- Dinamicidad: El tamaño de la ventana puede cambiar durante la conexión dependiendo de la carga del búfer del receptor.
- Búfer de recepción: El tamaño real de la ventana está limitado por el tamaño del búfer de recepción en el lado del receptor.
- Escalado de ventana (Window Scaling): Opción TCP que permite usar ventanas de mayor tamaño (hasta 1 GB) para redes de alta velocidad o con alta latencia, usando un multiplicador anunciado durante el establecimiento de la conexión (SYN/SYN-ACK).
- "Síndrome de ventana estrecha" (Slim Window): Situación en la que el tamaño de la ventana se vuelve muy pequeño, lo que puede llevar a una transmisión ineficiente de datos.
- Ventana cero: Si el búfer del receptor está completamente lleno, el tamaño de la ventana se anuncia como 0. El emisor debe detener la transmisión de datos, excepto por segmentos Keep-Alive (si la opción está habilitada), y reenviar el último segmento para solicitar una actualización del tamaño de la ventana.
// Ejemplo de encabezado TCP, donde se indica el tamaño de la ventana
// (campo "Window Size")
// Puerto de origen: 12345
// Puerto de destino: 80
// Número de secuencia: 1000
// Número de reconocimiento: 2000
// Desplazamiento de datos: 20 bytes (5 palabras)
// Reservado: 0
// Banderas: [ACK, PSH]
// Tamaño de la ventana: 65535 // Tamaño máximo de ventana sin escalado
// Suma de comprobación: 0xABCD
// Puntero urgente: 0