En TCP (capa de transporte), ¿es mejor tener un tamaño de ventana grande o pequeño? ¿Cómo funciona el tamaño de la ventana y qué es la ventana deslizante?

Las conexiones TCP garantizan que los flujos de datos lleguen en orden, pero tiene que hacerlo utilizando los servicios de una capa de enlace subyacente que no garantiza tal cosa. Por lo tanto, debe numerar todas las cosas transmitidas, para asegurarse de que el receptor pueda volver a ordenarlas. Dado que no hay límite sobre cuánto tiempo puede seguir llegando un flujo de datos, esto requiere un rango potencialmente infinito de números de secuencia, pero los enteros arbitrariamente grandes no se pueden transmitir en un conjunto de datos de control bien definidos, esos necesitan un tamaño fijo. En cambio, es necesario usar solo fragmentos de los (64k) números de secuencia disponibles a la vez, y asegurarse de que se reconoce la recepción de todas las cosas transmitidas antes de volver a usar los números de secuencia que transportaron.

El rango de números permitidos en vuelo en un momento dado es la ventana. Si se almacenan más cosas para la transmisión cuando ya se ha llenado toda la ventana, es necesario esperar los reconocimientos de lo que ya se ha ido antes de enviar algo más. Su tamaño es útil para controlar el uso del ancho de banda de una conexión: un tamaño de ventana determinado limita la cantidad de datos que un programa puede transferir en un momento dado, independientemente de qué tan rápido pueda generar más cosas para enviar. La parte ‘deslizante’ es solo un conjunto finito de índices modulándolo sobre el número total disponible; una ventana deslizante de tamaño 3 sobre 9 índices disponibles (de 1) asignaría {1,2,3}, luego {4,5,6} y {7,8,9} antes de volver a usar {1,2, 3} de nuevo.

Los tamaños grandes versus pequeños no son buenos o malos, se eligen para lograr un efecto, como comenzar con un ancho de banda bajo y aumentarlo lentamente (hasta no superar) un límite sostenible, o para garantizar que una conexión codiciosa no acaparar una parte irrazonable de toda capacidad. Las ventanas grandes son buenas para las redes de gran ancho de banda, ya que no limitan las conexiones para transmitir fragmentos más pequeños a la vez de lo que podrían, solo porque se quedan sin números enteros para numerar partes.

O al menos, eso me dijeron en la escuela. 🙂