Окно приема

Протокол TCP является дуплексным, то есть в рамках одного соединения регла­ментируется процедура обмена данными в обе стороны. Каждая сторона одно­временно выступает и как отправитель, и как получатель. У каждой стороны есть пара буферов: один — для хранения принятых сегментов, другой — для сег­
ментов, которые только еще предстоит отправить. Кроме того, имеется буфер для хранения копий сегментов, которые были отправлены, но квитанции о полу­чении которых еще не поступили (рис. 19.10).

(IP1, п1)


ТСР-соединение

Буфер отправления

Буфер копий

Буфер отправления

Окно Буфер копий

Рис. 19.10. Система буферов ТСР-соединения

И при установлении соединения, и в ходе передачи обе стороны, выступая в роли получателя, посылают друг другу так называемые окна приема. Каждая из сторон, получив окно приема, «понимает», сколько байтов ей разрешается отправить с момента получения последней квитанции. Другими словами, посылая окна прие­ма, обе стороны пытаются регулировать поток байтов в свою сторону, сообщая своему «визави», какое количество байтов (начиная с номера байта, о котором уже была выслана квитанция) они готовы в настоящий момент принять.

На рис. 19.11 показан поток байтов, поступающий с верхнего уровня в выходной буфер протокола TCP. Из потока байтов модуль TCP «нарезает» последователь­ность сегментов и готовит их для отправки другому сокету. Для определенности на рисунке принято направление перемещения данных справа налево. В этом по­токе можно указать несколько логических границ. Первая граница отделяет сег­менты, которые уже были отправлены и на которые уже пришли квитанции. По другую сторону этой границы располагается окно размером W байт. Часть бай­тов, входящих в окно, составляют сегменты, которые также уже отправлены, но квитанции на них пока не получены. Оставшаяся часть окна — это сегменты, ко­торые пока не отправлены, но могут быть отправлены, так как входят в пределы окна. И наконец, последняя граница указывает на начало последовательности сегментов, ни один из которых не может быть отправлен до тех пор, пока не при­дет очередная квитанция и окно не будет сдвинуто вправо.

(IP2, п2)
Буфер приема
Буфер приема

Если размер окна равен W, а последняя по времени квитанция содержала значе­ние N, то отправитель может посылать новые сегменты до тех пор, пока в очеред­ной сегмент не попадет байт с номером N + W. Этот сегмент выходит за рамки
окна, и передачу в таком случае необходимо приостановить до прихода следую­щей квитанции.

Направление движения окна ► W — размер окна
1 1 1   тттшш 1 1 1 1 1
Сегменты отправлены, квитанции получены, последняя квитанция Сегменты отправлены, квитанций Сегменты могут быть отправлены Сегменты, которые еще нельзя отправлять

на байт с номером N пока нет

Направление движения данных <


Рис. 19.11. Особенности реализации алгоритма скользящего окна в протоколе TCP


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: