Поэтому протоколы сетевого уровня и выше инвариантны к сетевой физической среде. |
Транспортный уровень моделей OSI, TCP/IP
9.2. Установление соединения
Поскольку TCP является протоколом, ориентированным на предварительное соединение (connection-oriented), то сначала необходимо установить сессию между приложениями конечных устройств. Узел отправитель инициализирует соединение, которое должно быть подтверждено узлом получателем. Программное обеспечение протокола TCP обменивается сообщениями через сеть, чтобы проверить, что передача разрешена и что обе стороны готовы к ней.
Соединение между двумя устройствами производится за три этапа ( рис. 9.4).
Во-первых, узел отправитель инициализирует установление связи путем посылки узлу получателю запроса синхронизации SYN (1).
Во-вторых, узел получатель подтверждает запрос синхронизации и задает свои параметры синхронизации ACK (2).
В-третьих, узлу получателю посылается подтверждение, что обе стороны готовы для передачи данных (3).
Такой механизм получил название трехэтапного установления связи (Three-way handshake). Оба узла должны согласовать начальные номера последовательности передаваемых частей информации, что происходит через обмен сегментами синхронизации (SYN) и подтверждения (ACK).
Синхронизация требует, чтобы каждая сторона послала собственный начальный номер последовательности и получила подтверждение от другой стороны. Каждая сторона, получив начальный номер последовательности от другой стороны, отвечает подтверждением ACK. Например, последовательность, соответствующая рис. 9.4, будет следующей:
- Узел отправитель (A) инициализирует соединение, посылая сегмент с флагом SYN узлу получателю (B), в котором указывает номер своей последовательности Sequence Number длиной 32 бита, например, . Флаг SYN установлен в поле Код (рис. 9.1). Начальное значение номера последовательности SEC выбирается случайным образом и инкрементируется (увеличивается на единицу) при передаче каждого байта данных, что позволяет отслеживать поток данных.
- Получив сегмент инициализации соединения, узел B делает запись принятого номера последовательности 101 и формирует ответ с флагами ACK и SYN. Подтверждение формируется в следующем виде . Ответ означает, что хост B получил сегмент данных, включая байт с номером 101, и ожидает следующий байт с номером 102. Одновременно хост B формирует начальный номер своей последовательности данных, например, .
- Узел A, получив сегмент от B со значениями , формирует ответ , который завершает процесс соединения. При этом установлен флаг ACK.