Управление потоком

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

Для управления потоком TCP в первую очередь определяет количество сегментов данных, которое может принять устройство назначения. Заголовок TCP включает в себя 16-битное поле, которое называется размером окна. Это количество байтов, которое устройство назначения сеанса TCP способно принять и обработать единовременно. Исходный размер окна согласовывается во время запуска сеанса через трёхстороннее рукопожатие между устройствами источника и назначения. После согласования исходное устройство должно ограничить количество сегментов данных, отправленных устройству назначения, в соответствии с размером окна. Только после того как исходное устройство получит подтверждение того, что сегменты данных получены, оно может продолжить отправку остальных данных в этом сеансе.

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

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

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