El síndrome de la ventana tonta ( SWS ) es un problema en las redes informáticas causado por un control de flujo TCP mal implementado . Puede surgir un problema grave en la operación de la ventana deslizante cuando el programa de aplicación que envía crea datos lentamente, el programa de aplicación que recibe consume datos lentamente, o ambas cosas. Si un servidor con este problema no puede procesar todos los datos entrantes, solicita a sus clientes que reduzcan la cantidad de datos que envían a la vez (la configuración de la ventana en un paquete TCP ). Si el servidor continúa sin poder procesar todos los datos entrantes, la ventana se hace cada vez más pequeña, a veces hasta el punto de que los datos transmitidos son más pequeños que el encabezado del paquete, lo que hace que la transmisión de datos sea extremadamente ineficiente. El nombre de este problema se debe a que el tamaño de la ventana se reduce a un valor "tonto".
Dado que existe una cierta cantidad de sobrecarga asociada con el procesamiento de cada paquete, el aumento de la cantidad de paquetes significa un aumento de la sobrecarga para procesar una cantidad decreciente de datos. El resultado final es la destrucción de datos .
Cuando no hay sincronización entre el emisor y el receptor en cuanto a la capacidad del flujo de datos o el tamaño del paquete, se crea el problema del síndrome de la ventana. Cuando el síndrome de la ventana tonta lo crea el emisor, se utiliza el algoritmo de Nagle . La solución de Nagle requiere que el emisor envíe el primer segmento , incluso si es pequeño, y luego espere hasta que se reciba un ACK o se acumule un segmento de tamaño máximo (MSS).
Cuando el síndrome de la ventana tonta es creado por el receptor, se utiliza la solución de David D Clark. [ cita requerida ] La solución de Clark cierra la ventana hasta que se pueda recibir otro segmento de tamaño de segmento máximo (MSS) o hasta que el búfer esté medio vacío.
Existen 3 causas del SWS:
Durante SWS, la eficiencia de la comunicación es casi cero, por lo que la duración de SWS debe ser lo más breve posible.
Un método heurístico en el que el TCP de envío debe permitir que la aplicación de envío realice llamadas de "escritura" y recopile los datos transferidos en cada llamada antes de transmitirlos a un segmento grande. El TCP de envío retrasa el envío de segmentos hasta que puede acumular cantidades razonables de datos, lo que se conoce como agrupamiento.
Método heurístico que utiliza un receptor para mantener un registro interno de la ventana disponible y retrasar la notificación de un aumento del tamaño de la ventana al remitente hasta que pueda avanzar una cantidad significativa. Esta cantidad depende del tamaño del búfer del receptor y del tamaño máximo del segmento. Al utilizar este método, se evitan las notificaciones de ventanas pequeñas en las que las aplicaciones recibidas extraen octetos de datos lentamente.
Algunas implementaciones de TCP no protegían contra el síndrome de la ventana tonta.