Каковы этапы установления связи TCP?

Каковы этапы установления связи TCP Советы и хитрости

TCP или протокол управления передачей — это стандартный протокол транспортного уровня, который Интернет использует для передачи данных. Запрос на комментарии (RFC) 793 определяет TCP как надежный и ориентированный на соединение протокол. Поскольку он ориентирован на соединение, перед передачей каких-либо данных необходимо установить путь или соединение. TCP использует механизм трехстороннего подтверждения для установления соединения между двумя устройствами. В этом руководстве мы увидим, как работает механизм трехстороннего рукопожатия. Давайте сначала посмотрим на проблемы с моделью двустороннего рукопожатия.

Проблемы с моделью двустороннего рукопожатия

Модель двустороннего рукопожатия не удалась из-за старой проблемы с дублированием пакетов. Предположим, что на серверную машину приходит старый дублированный пакет. Этот старый пакет прибыл из ранее закрытого соединения и содержит порядковый номер «z». В какой-то момент во время нового соединения сервер принимает пакет с порядковым номером «z». Когда он получает этот старый пакет с тем же порядковым номером «z», он неосознанно принимает этот старый пакет и отбрасывает фактический пакет из нового соединения.

В приведенном выше случае, если соединение между клиентом

В приведенном выше случае, если соединение между клиентом и сервером не установлено, получение старого дублированного пакета запроса на соединение по-прежнему вызывает проблемы. Если сервер получит такой пакет, он ответит пакетом SYN + ACK. Этот пакет будет отброшен клиентом, поскольку он не собирался подключаться. Но сервер войдет в состояние тупика, ожидая, пока клиент отправит данные.

Другая проблема заключается в том, что если хост C отправляет серверу запрос на соединение, выдавая себя за клиента, сервер ответит клиенту ACK. Клиент отбросит этот пакет «ACK» и скажет серверу разорвать соединение. В течение этого интервала событий хост C может запустить атаку спуфинга, отправив большое количество пакетов.

Модель трехстороннего рукопожатия в TCP / IP

Модель трехстороннего рукопожатия очень важна. Если мы не используем его и начнем напрямую отправлять данные, принимающее приложение может начать получать дублирующиеся пакеты. Злоумышленник может получить шанс провести атаки (например, DDoS) между подключениями. Процедура трехстороннего рукопожатия запускается одной машиной, а другая сторона на нее отвечает. Для объяснения этой процедуры используется следующее соглашение:

«Если сайт получит пакет с порядковым номером» x, он ответит ACK-номером» x + 1.

Давайте подытожим шаги, выполняемые при трехстороннем рукопожатии между клиентским компьютером и сервером:

Шаг 1. В первом квитировании клиент отправляет серверу пакет запроса на соединение SYN со случайным начальным порядковым номером («x»).

Шаг 2. Во втором квитировании сервер отвечает пакетом SYN со случайным порядковым номером (’y’) и пакетом ACK с порядковым номером (’x + 1′), чтобы подтвердить начальный порядковый номер (’x ’) отправлено клиентом.

Шаг 3. В третьем рукопожатии клиент отправляет пакет ACK с порядковым номером (’y + 1′) на сервер для подтверждения пакета SYN (’y’), отправленного сервером.

Шаг 4. Теперь оба конца синхронизированы и могут начать передачу данных независимо. [1]

Процедура трехэтапного установления связи

Процедура трехэтапного установления связи TCP по-прежнему действует, если обе стороны одновременно начинают процесс инициализации. В такой ситуации каждая машина после отправки пакета «SYN» получит сегмент «SYN» без подтверждения. Если получателю приходит старый дублированный пакет «SYN», получателю может показаться, что в это же время происходит процесс установления соединения. Мы можем использовать пакеты «сброса», чтобы устранить эту двусмысленность.

Завершение TCP-соединения

Любая из двух сторон может завершить TCP-соединение. Для этого любая сторона может передать сегмент TCP с установленным битом FIN. Это будет означать, что у отправляющей стороны больше нет данных для отправки. Принимающая сторона подтвердит этот пакет FIN, отправив пакет подтверждения. Это закроет соединение с одной стороны (со стороны отправителя). Теперь получатель будет использовать те же шаги, чтобы разорвать соединение от своего имени. Это полностью закроет соединение.

Проблемы с моделью трехстороннего рукопожатия

В случае, если ACK от клиента к серверу потерян или заблокирован на третьем этапе установления связи, клиент не будет знать об этой ситуации. Клиент будет считать, что соединение установлено, и начнет отправлять данные. Сервер все еще ожидает ACK, который уже был потерян, поэтому он отбрасывает данные, полученные от клиента. [2]

Заключение

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

Оцените статью
ПОПУЛЯРНЫЕ ТЕХНОЛОГИИ
Добавить комментарий