logo
СиСПК (ВАСИН)-лекции

Установление соединения

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

Соединение между двумя устройствами производится в три этапа (рис.2.9).

Рис.2.9.Установление соединения

Во-первых, инициализирующее устройство производит установление связи путем посылки устройству назначения запроса синхронизации SYN (1).

Во-вторых, принимающий узел подтверждает запрос синхронизации и задает свои параметры синхронизации в противоположном направлении ACK (2).

Третья часть – это подтверждение, посылаемое адресату назначения, что обе стороны согласны, чтобы соединение было установлено (3). После того, как соединение было установлено, начинается передача данных.

Такой механизм получил название трехэтапного установления связи (Three-way handshake). Кроме того, оба узла должны согласовать начальную последовательность номеров передаваемых частей информации, что происходит через обмен сегментами, несущими служебный бит синхронизации (SYN) и начальные номера последовательности.

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

  1. Посылающий узел (A) инициализирует соединение, посылая сегмент SYN узлу получения (B), в котором указывает последовательный номер Sequence Number, например, SECА = 101.

  2. Получив сегмент инициализации соединения, узел B делает запись принятого номера последовательности 101 и формирует ответ в виде ACKВ = 101 + 1 = 102. Ответ ACKВ = 102 означает, что хост B получил все байты данных, включая байт с номером 101, и ожидает следующий байт с номером 102. Одновременно хост B формирует начальный номер своей ответной последовательности порций данных, например, SECВ = 51.

  3. Узел A, получив сегмент от B со значениями ACKВ = 102, SECВ = 51, формирует ответ ACKА = 52, SECА = 102, который завершает процесс соединения.