Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2013-04-08 Транспортный уровень модели OSI.docx
Скачиваний:
32
Добавлен:
26.05.2015
Размер:
174.06 Кб
Скачать

Трехэтапное квитирование

Протокол TCP использует алгоритм работы с установлением соединения, поэтому перед передачей данных должно быть установлено логическое соединение. Для того чтобы установить сетевое соединение между двумя рабочими станциями, необходимо синхронизировать их начальные порядковые номера (ISN - Initial Sequence Number). Синхронизация достигается за счет обмена специализированными сегментами, которые содержат контрольный бит SYN (сокращение от synchronization) и номера ISN. Модули, которые несут в себе бит SYN, также иногда называют SYN-сообщениями. Для решения задачи установления нужно подобрать соответствующий механизм выбора ISN-номеров методом установки начального соединения для обмена ISN-номерами.

Для синхронизации необходимо, чтобы каждая сторона отправляла свой начальный порядковый номер ISN и принимала подтверждение в виде сообщения-уведомления ACK (сокращение от acknowledgment) от другого участника соединения. Кроме того, каждая сторона должна получать ISN-номер коммуникационного партнера и отправлять уведомление ACK об этом. Последовательность обмена сообщениями между двумя узлами сети, А и Б, описана ниже.

Такой обмен сообщениями называется трехэтапным квитированием (three-way handshake) (рис. 5).

Рис. 5. Трехэтапное квитирование

1. A Б SYN. Мой начальный порядковый номер ISN равен X, номер ACK = 0, бит SYN установлен, однако бит ACK не установлен.

2. Б A ACK. Твой порядковый номер равен X+1, мой ISN-номер равен Y, биты SYN и ACK установлены.

3. A Б ACK. Твой порядковый номер равен Y+1, мой порядковый номер = Х+1, бит ACK установлен, а бит SYN не установлен.

Трехэтапное квитирование является асинхронным механизмом соединения, который необходим для синхронизации порядковых номеров, поскольку такие номера не зависят от некоторого виртуального глобального счетчика в сети. Поэтому в сети, работающей под управлением протокола TCP, используются различные механизмы назначения ISN-номеров. Одним из них является трехэтапное квитирование. Однако этот механизм предназначен не только для получения ISN-номера. При помощи него конечные устройства обмениваются информацией о размере окна передачи данных, параметре MTU и задержке передачи данных в сети. Получатель первого сигнала SYN не имеет в наличии средств, которые позволят определить, был ли полученный сегмент отложенным старым или новым сообщением, до тех пор, пока не будет получено следующее сообщение; единственным исключением является случай, когда получатель хранит последний порядковый номер, используемый при соединении (что не всегда возможно). Таким образом, получатель должен запросить у отправителя проверку такого сообщения SYN.

Механизм скользящего окна

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

Однако если отправитель вынужден ждать подтверждения после посылки каждого сегмента, как показано на рис. 6, то скорость передачи при таком способе значительно снижается. Поскольку с того момента, как отправитель заканчивает отсылку пакета данных, до момента завершения обработки какого-либо принятого подтверждения проходит определенный интервал времени, он может быть использован для передачи дополнительной порции данных. Количество пакетов данных, которое разрешается пересылать отправителю без получения подтверждения, называется окном (window).

В протоколе TCP используются так называемые ожидаемые подтверждения; они содержат номер, относящийся к октету, который ожидается следующим. Механизм скользящего окна заключается в том, что согласование размеров окна происходит динамически в течение TCP-сеанса. Механизм скользящего окна — это механизм управления потоком данных, который требует, чтобы получатель принимал подтверждение от отправителя после передачи некоторого количества данных.

Рис. 6. Размер окна равен одному

Для управления потоком данных, передаваемых между двумя устройствами, в протоколе TCP используется механизм управления потоком (flow-control mechanism). Получатель докладывает отправителю о получении данных; получение такого уведомления позволяет установить размер окна. Окно определяет количество октетов, отсчитываемое от текущего номера подтверждения, которое TCP-устройство способно принять в заданный момент времени.

Например, при размере окна, равном 3, отправитель может передать получателю три октета. После этого он должен дождаться подтверждения от получателя. Если получатель получил три октета, он должен отправить подтверждение об этом отправителю октетов. После этого отправитель может передать следующие три октета. Если же получатель не получил три октета, например, при переполнении буфера, то он не отправит подтверждение. Если отправитель не получает подтверждение, это означает, что последние октеты нужно передать повторно и при этом снизить скорость передачи.

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

Когда отправитель передает три октета, он переключается в режим ожидания сигнала ACK для четырех октетов. Если получатель способен обработать блок данных размером в два октета, то он отбрасывает третий октет и обозначает его как следующий ожидаемый блок данных. При этом указывается новый размер окна, который равен двум. Отправитель передает следующие два октета, однако размер окна все еще остается равным трем (предположим, устройство все же может обработать три октета одновременно). Получатель запрашивает октет с номером 5 и устанавливает новый размер окна, равный двум.