Состав и назначение полей заголовка

Пакеты протокола TCP переносятся в поле «Данные» IP-дейтаграммы. Заголовок пакета TCP следует за заголовком дейтаграммы. Структура заголовка пакета TCP представлена на рис. 4.5.

 

Порт отправителя Порт получателя
Порядковый номер
Номер при подтверждении
Смещение данных Резерв U R G А С К Р S Н R S Т S Y N FIN Окно
Контрольная сумма Указатель срочности
Опции | Заполнение
Данные
                   

 

Рис. 4.5 Заголовок пакета TCP Порт отправителя (Source Port, 6 битов). Порт получателя (Destination Port, 16 битов).

 

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

 

Номер при подтверждении (Acknowledgment Number, 32 бита) -если пакет содержит установленный флаг АСК, то это поле содержит номер следующего ожидаемого получателем октета данных. При установленном соединении пакет подтверждения отправляется всегда.

Поле величины смещения данных (Data Offset,4 бита) указывает количество 32-битовых слов заголовка TCP-пакета.

Резерв (Reserved, 6 битов) - зарезервированное поле. Флаги управления (слева направо):

URG - флаг срочности,

АСК - флаг пакета, содержащего подтверждение получения,

PSH - флаг форсированной отправки,

RST - сброс соединения,

SYN - синхронизация порядковых номеров,

FIN - флаг окончания передачи со стороны отправителя.

Окно (Window, 16 битов) - поле содержит количество байтов данных, которое отправитель данного сегмента может принять, считая от байта с номером, указанным в поле Номер при подтверждении.

Поле контрольной суммы (Checksum, 16 битов).

Поле указателя срочности данных (Urgent Pointer, 16 битов). Это поле содержит номер пакета, начиная с которого следуют пакеты повышенной срочности. Указатель принимается во внимание только в сегментах с установленным флагом URG.

Опции (Options) - поле дополнительных параметров, может быть переменной длины.

Заполнение (Padding) - поле, заполняемое нулями для выравнивания заголовка до размера, кратного 32-битам.

Более подробное описание протокола TCP можно найти в RFC-793, RFC-1180.