Протокол ТСP

Протокол TCP – это надежный протокол с установлением соединения, работающий с байтовыми потоками. Это означает, что он проверяет правильность доставки данных по сети в указанном порядке. Данные, предоставленные этим протоколом, можно рассматривать как поток

Структура сегмента TCP.
Порядковый номер – порядковый номер первого байта передаваемых данных в этом сегменте. Если установлен флаг SYN, порядковый номер – это начальный порядковый номер (ISN), а первый байт данных — ISN + 1.

Номер подтверждения – если установлен флаг ACK, это поле содержит значение следующего порядкового номера, который отправитель ожидает получить. Как только соединение установлено, это значение всегда отправляется. Смещение [4 бита] (смещение данных) – количество 32-битных слов в заголовке TCP.
Флаги [6 бит] – последующие биты означают:
URG – обозначение поля индикатора срочности,
ACK – символы поля подтверждения,
PSH – функция push,
RST – сбросить соединение,
SYN – синхронизировать последовательные числа,
FIN – больше не получать данные от отправителя.
Окно [16 бит] – количество байтов данных, которые отправитель соглашается принять. Это поле используется для управления потоком данных. Окно с нулевым значением указывает отправителю приостановить передачу до тех пор, пока он не получит сегмент с другим значением в этом поле.
Протокол TCP использует механизм PAR для своей надежности Положительное подтверждение с повторной передачей. Данные отправляются до тех пор, пока отправляющая система не получит подтверждение, что данные прошли без ошибок. Каждый сегмент TCP содержит контрольную сумму, используемую получателем для проверки правильности передаваемых данных. Если сегмент данных был получен без ошибок, отправляется подтверждение того, что данные были получены. Если сегмент поврежден, получатель не отправляет подтверждение. Через некоторое время отправитель повторно передает сегмент, для которого он не был подтвержден.
Соединение устанавливается путем отправки управляющих сообщений, так называемых рукопожатие. Установка бита SYN в поле флага подтверждает, является ли данный сегмент управляемым. Протокол TCP использует трехуровневое подтверждение:
1. Подключение к хосту A отправляет сегмент с битом SYN, установленным на хосте B. Этот сегмент определяет начальный порядковый номер данных, которые будут передаваться хостом A.
2. Хост B отвечает сегментом с установленными битами ACK (подтверждение) и SYN (синхронизация), подтверждая получение предыдущего сегмента. В поле порядкового номера он указывает начальный номер последовательности данных, отправленных им.
3. Хост A отправляет сегмент, подтверждающий получение сегмента от B (установлен бит ACK) и содержащий первые переданные данные.
После завершения передачи данных хосты обмениваются тремя сегментами подтверждения с установленным битом FIN (конец данных), что приводит к разрыву соединения между ними.
Поскольку данные, предоставляемые TCP, обрабатываются как поток, он должен позаботиться об их порядке. Не имеет значения, с какого номера системы начинают нумерацию данных, она может быть произвольной, поэтому эти значения перечисляются во время установления соединения (с установленными битами SYN) в полях последовательных номеров. Эти числа известны как ISN начального порядкового номера. Байтам данных присваиваются номера, начинающиеся с ISN + 1.
Сегменты с установленным битом подтверждения ACK имеют две функции: подтверждать получение данных и контролировать их поток. Протокол TCP не требует подтверждения каждого сегмента данных. Сегмент с установленным битом ACK подтверждает, что он получил все данные с начала передачи. Значение в поле номера подтверждения равно количеству правильно полученных данных в байтах.

Оцените статью
Добавить комментарий