Справочник по сетевым протоколам

       

Передача данных


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

Отправитель данных с помощью значения переменной SND.NXT отслеживает следующий номер в очереди, подлежащий отправке. Получатель данных с помощью переменной RCV.NXT отслеживает следующий номер, прибытие которого он ожидает. В переменную SND.UNA отправитель данных помещает значение самого старого номера, который был отправлен, но еще не получил подтверждения. Если бы поток данных моментально иссяк, а все отправленные данные получили подтверждение, то тогда бы все эти при переменные содержали одинаковое значение.

Когда отправитель информации создает и посылает некий сегмент, он увеличивает значение переменной SND.NXT. Адресат по получении сегмента увеличивает значение переменной RCV.NXT и отправляет подтверждение. Когда программа TCP, пославшая данные, получает подтверждение, она увеличивает значение SND.UNA. Разность в значениях этих переменных является мерой, характеризующей задержку сегментов в сети. Величина, на которую надо всякий раз осуществлять приращение значения этих переменных, является длиной поля данных в сегменте. Заметим, что поскольку соединения находятся в состоянии ESTABLISHED, все сегменты, в дополнение к собственно данным, должны нести некую информацию о подтверждении ранее отправленных сегментов.

Запрос пользователя о закрытии соединения (CLOSE) подразумевает использование функции проталкивания, что осуществляется с помощью контрольного флага FIN приходящем сегменте.



Содержание раздела