В некоторых странах при встрече двух человек принято обмениваться рукопожатиями. Рукопожатие рассматривается обеими сторонами как сигнал для дружеского приветствия. Подключения в сети осуществляются примерно так же. При первом рукопожатии (на компьютерном языке это называется рукопожатием) отправляется запрос синхронизации. При втором рукопожатии первоначальный запрос синхронизации подтверждается, после чего согласовываются параметры подключения в противоположном направлении. Третий этап рукопожатия — это подтверждение, которое используется для информирования узла назначения о том, что обе стороны согласны установить подключение.
Если два узла взаимодействуют с использованием протокола TCP, соединение устанавливается до того, как обмен данными будет возможен. По завершении обмена данными все сеансы прекращаются, а соединение прерывается. Механизмы подключения и осуществления сеанса связи включают в себя функции TCP, обеспечивающие надёжность. На рисунке показаны этапы установления и прекращения TCP-соединения.
Узлы отслеживают каждый сегмент данных, передаваемых во время сеанса, и обмениваются информацией о полученных данных с использованием сведений в заголовке TCP. TCP — это полнодуплексный протокол, в котором каждое соединение представляет два односторонних потока обмена данными, или сеанса. Для установления связи узлы используют трёхстороннее рукопожатие. Биты управления в заголовке TCP обозначают этап и состояние подключения. При трёхстороннем рукопожатии выполняются следующие процессы.
- Сначала устанавливается, присутствует ли устройство назначения в сети.
- Затем проверяется, имеется ли на устройстве назначения активный сервис и принимает ли он запросы на номер порта назначения, который инициирующий клиент планирует использовать для сеанса.
- Далее устройству назначения сообщается, что клиент источника планирует установить сеанс связи на этом номере порта.
При подключениях по протоколу TCP клиент узла устанавливает связь с сервером. Ниже перечислены три шага для установления TCP-соединения.
Шаг 1. Инициирующий клиент запрашивает сеанс связи клиент-сервер с сервером.
Шаг 2. Сервер подтверждает сеанс связи клиент-сервер и запрашивает сеанс связи сервер-клиент.
Шаг 3. Инициирующий клиент подтверждает сеанс связи сервер-клиент.
Используйте кнопки 1—3 на рисунке, чтобы просмотреть процесс установки TCP-соединения.
Чтобы понять процесс трёхстороннего рукопожатия, посмотрите на различные значения данных, которыми обмениваются два узла. Заголовок сегмента TCP содержит шесть 1-битных полей с контрольной информацией, которая используется для управления процессами TCP. Эти поля приведены ниже.
- URG — поле «Указатель важности» задействовано
- ACK — поле «Номер подтверждения» задействовано
- PSH — протолкнуть данные
- RST — оборвать соединение
- SYN — синхронизировать порядковые номера
- FIN — больше нет данных от отправителя
Поля ACK и SYN имеют отношение к рассматриваемому анализу трёхстороннего рукопожатия.