Режимы работы протокола ТСР

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

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

 
 

В асинхронном режиме отправитель может отправить без подтверждения все сегменты в рамках окна ответов. Подтверждение высылается на каждый сегмент (да еще и по порядку их нумерации), а не на все окно. Если отправитель, отправив последний в окне сегмент, не получает подтверждения на свой первый сегмент, то передача приостанавливается и по истечении некоторого времени сегмент 1 считается утерянным и передается вновь. После получения подтверждения на определенный сегмент окно ответов сдвигается, потому этот режим называется режимом скользящего окна. Время простоя протокола минимально.

 
 



Функции протоколов транспортного уровня . Процедура установления логического соединения .

Функции протокола TCP

Функции транспортного уровня реализуются только в конечных узлах и представляют собой следующие функции:

· разделение сообщений на дейтаграммы;

· сборка сообщений из дейтаграмм;

· установление виртуального соединения между отправителем и получателем;

· обеспечение заданного уровня услуг, включающих установление времени доставки пакета, типа канала связи, возможности сжатия данных с частичной потерей информации;

· управление сквозными соединениями в сети с помощью специальных команд.

Ориентированные на предварительное установление соединения транспортные протоколы, такие как ТСР (Transmission Control Protocol), делят общий поток данных приложения на раздельные логические потоки и могут дифференцированно распределять ресурсы между ними, что позволяет эффективно использовать общую пропускную способность.

Протокол ТСР – это дуплексный транспортный протокол с установлением соединения. Он описан в документе RFC 793.

Функциями протокола являются:

а) упаковка и распаковка пакетов на концах транспортного соединения. Поступающие к получателю данные буферизуются средствами протокола ТСР. Перед отправкой данные также буферизуются;

б) установление виртуального канала путем обмена запросом и подтверждением на соединение;

в) управление потоком, которое заключается в том, что получатель при подтверждении правильности передачи сообщает размер окна ответов, т.е. диапазон номеров пакетов, которые получатель готов принять;

г) пометка о срочности передаваемых данных, т.е. возможность управлять скоростью передачи.

Протокол TCP работает только в конечных узлах. Протокол TCP представляет собой программу, которая входит в ОС (представляет ее часть), а именно драйвер самого высокого уровня. Программа TCP постоянно находится в режиме ожидания, поэтому она называется «демон». Когда от прикладных программ приходят запросы на посылку сообщений, то TCP программа создает в памяти свою копию для обслуживания запроса, а сама опять переходит в режим ожидания. Число одновременно обслуживаемых запросов зависит от размера оперативной памяти компьютера.

Формат ТСР-пакета

Структура ТСР-пакета (сегмента) имеет следующий формат (рис. 10.1).


Минимальная длина заголовка составляет 20 байт. Такая большая величина обусловлена тем, что один и тот же заголовок используется протоколом для различных целей. Размер всего ТСР пакета с учетом заголовка, который будет потом добавлен протоколом IP, не может превышать 65,5 тыс.байт.

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

Поле «Номер в последовательности» определяет но­мер первого байта в очереди (последовательности) байтов в текущем сег­менте. Исключение составляют случаи, когда установлен бит (флаг) синхронизации в поле «Контрольные биты». Тогда это поле обозначает начальный номер в по­следовательности INS и первый байт данных имеет номер в очереди INS+1.

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

Поле «Смещение данных» определяет количество 32-бит­ных слов в заголовке ТСР. Тем самым указывается начало поля данных. Заголовок протокола ТСР всегда заканчивается на 32-битной границе, даже если он содержит опции.

Поле «Резерв» должно быть заполнено нулями и предназна­чено для будущего расширения протокола.

Поле «Окно» содержит объявляемый размер окна ответов в байтах.

Поле «Контрольная сумма» рассчитывается по сегменту, при этом определяется 16-битное дополнение суммы всех 16-битных слов в заголовке и в поле данных. Если сегмент содержит нечетное количество байтов, то он будет дополнен нулями справа до образования 16-битного слова. Этот выравнивающий байт не передается с сегментом по сети, так как может быть «восстановлен» получателем. Контрольная сумма учи­тывает также 96-битный псевдозаголовок, который ставится перед заго­ловком протокола ТСР.

Псевдозаголовок включает следующие поля из заголовка протокола IP: IP-адреса отправителя и получателя, протокол и длину сегмента. С помощью добавления псевдозаголовка протокол ТСР защищает самого себя от ошибочной доставки протоколом IP. Так, если протокол IP доставляет сегмент, не предназначенный данному работающему приложению, то модуль протокола ТСР на принимающей стороне обнаружит некорректность доставки.

Поле «Указатель срочности» сообщает текущее значение указателя срочности. Эта положительная величина определяет смещение относительно номера в очереди данного сегмента. Этот указатель сообщает номер байта, следующего за срочными данными, то есть, начи­ная с этого байта, данные имеют обычный статус срочности. Поле исполь­зуется совместно с контрольным битом указания срочности в поле «Контрольные биты».

Поле «Опции» имеет переменную длину и может вообще от­сутствовать. Опции располагаются в конце заголовка протокола ТСР и их длина кратна 8 битам. Протокол ТСР должен быть готов обрабатывать все виды опций. Опции используются для решения вспомогательных задач, например, для выбора максимального размера сегмента.

Поле «Выравнивание» может иметь переменную длину и представляет собой фиктивное поле, используемое для доведения размера заголовка до целого числа 32-битных слов.

Некоторые поля в заголовке сегмента протокола ТСР могут быть использо­ваны при его дальнейшем развитии. «Номер в последовательности» и «Номер подтверждения» выравниваются по числу байтов в поле данных, а не по длине всего сегмента. Например, если сегмент содержит в поле «Номер в последо­вательности» значение 1000 и несет в поле данных 600 байт данных, то поле «Номер в последовательности» указывает на номер первого байта в поле дан­ных. Следующий (в логическом порядке) сегмент будет иметь в поле «Номер в последовательности» значение 1601. Протокол ТСР изначально логически ориентирован на работу с потоком данных. Он принимает байты от пользовательского приложения, группирует их, а затем распределяет по сегмен­там и формирует поток сегментов с нумерацией каждого байта.

Наши рекомендации