Варьируя величину окна, можно повлиять на загрузку сети. Чем больше окно, тем
большую порцию неподтвержденных данных можно послать в сеть. Если сеть не
справляется с нагрузкой, то возникают очереди в промежуточных
узлах-маршрутизаторах и в конечных узлах-компьютерах.
При переполнении приемного буфера конечного узла "перегруженный"
протокол TCP, отправляя квитанцию, помещает в нее новый, уменьшенный размер
окна. Если он совсем отказывается от приема, то в квитанции указывается окно
нулевого размера. Однако даже после этого приложение может послать сообщение на
отказавшийся от приема порт. Для этого, сообщение должно сопровождаться пометкой
"срочно" (бит URG в запросе установлен в 1). В такой ситуации порт
обязан принять сегмент, даже если для этого придется вытеснить из буфера уже
находящиеся там данные.
После приема квитанции с нулевым значением окна протокол-отправитель время от
времени делает контрольные попытки продолжить обмен данными. Если
протокол-приемник уже готов принимать информацию, то в ответ на контрольный
запрос он посылает квитанцию с указанием ненулевого размера окна.
Другим проявлением перегрузки сети является переполнение буферов в
маршрутизаторах. В таких случаях они могут централизовано изменить размер окна,
посылая управляющие сообщения некоторым конечным узлам, что позволяет им
дифференцировано управлять интенсивностью потока данных в разных частях сети.
|