Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы организации компьютерных сетей.doc
Скачиваний:
57
Добавлен:
04.12.2018
Размер:
1.78 Mб
Скачать

Открытое tcp-соединение с трехсторонним квитированием

 

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

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

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

1. А > В SYN – мой порядковый номер X.

2. А < В АСК – твой порядковый номер X.

3. А < В SYN – мой порядковый номер Y.

4. А > В АСК – твой порядковый номер Y.

Так как второй и третий шаги могут объединяться в одном сообщении, то такой обмен называется открытым с трехсторонним квитированием (three-way handshake / open). Как показано на рис. 10.5, обе стороны соединения синхронизируются, выполняя последовательность открытого соединения с трехсторонним квитированием.

 

 

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

 

Эта последовательность похожа на разговор двух людей. Первый хочет поговорить со вторым и говорит: «Я бы хотел с Вами поговорить» (SYN). Второй отвечает: «Хорошо, я хочу с Вами говорить» (SYN, ACK). Тогда первый говорит: «Прекрасно, давайте поговорим» (АСК).

Трехстороннее квитирование необходимо, поскольку порядковые номера не привязываются к глобальным часам сети и протоколы TCP могут использовать различные механизмы для выбора номера ISN. У приемника первого сегмента SYN нет способа узнать, не был ли этот сегмент старым задержавшимся, если он не помнит последний порядковый номер, использованный в соединении, что не всегда возможно, и поэтому он должен попросить отправителя верифицировать этот сегмент SYN.

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

 

Простое подтверждение и работа с окнами в протоколе tcp

 

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

Размер окна определяет объем данных, который может принять принимающая станция за один раз. Если размер окна равен 1, подтверждаться должен каждый сегмент, и только после этого передается следующий. Это приводит к неэффективному использованию хост-машиной полосы пропускания.

Целью введения механизма окон является улучшение управления потоком и надежности.