Уменьшение размера окна

Ещё одним способом управления потоком данных является использование динамических размеров окон. Когда сетевые ресурсы ограничены, TCP может уменьшить размер окна, чтобы потребовать более частого подтверждения получения сегментов. Это позволяет эффективно снизить скорость передачи данных, поскольку источник чаще ожидает подтверждения их получения.

Принимающий узел отсылает значение размера окна на отправляющий узел, чтобы указать количество байтов, которое он готов принять. Если узлу назначения необходимо снизить скорость передачи данных из-за ограниченной памяти буфера, он может, например, пересылать узлу источника меньшее значение размера окна как часть подтверждения.

Как показано на рисунке, если на принимающем узле наблюдается перегрузка, он может ответить отправляющему узлу, переслав сегмент, который указывает меньший размер окна. На этом рисунке видно, что один из сегментов был потерян. В этом сеансе связи получатель уменьшил поле окна в заголовке TCP возвращаемых сегментов с 3000 до 1500, вследствие чего отправителю пришлось изменить размер окна 1500.

После периода передачи данных без потерь или ограничения ресурсов получатель начинает увеличивать поле окна, что уменьшает нагрузку на сеть, поскольку требуется отправка меньшего количества подтверждений. Размер окна продолжает увеличиваться до тех пор, пока не начнутся потери данных, в результате чего размер окна будет уменьшаться.

Этот динамический процесс увеличения и уменьшения размера окна в протоколе TCP происходит постоянно. В высокопроизводительных сетях размеры окон могут быть очень большими, поскольку потери данных отсутствуют. В сетях, в которых базовая инфраструктура находится под нагрузкой, размер окна, скорее всего, остается небольшим.