Заголовок TCP сегмента состоит из 32-разрядных слов (32 бита) и имеет переменную длину, зависящую от размера поля «Options» и «Padding», но всегда кратную 32 битам. Формат заголовка TCP сегмента представлен в таблице 6.
Таблица 6 - Формат заголовка TCP сегмента
Source Port | Destination Port | |||||||
Sequence Number (SN) | ||||||||
Acknowledgment Number (ACK) | ||||||||
Data Offset (0-3) | Reserved (4-9) | U R G | A C K | P S H | R S T | S Y N | F I N | Window |
Checksum | Urgent Pointer | |||||||
Options | Padding | |||||||
Data | ||||||||
Поле «Source Port» и поле «Destination Port» (порт отправителя и получателя) указывает номера портов источника и получателя cooтветственно.
Поле «Sequence Number» (номер последовательности) определяет порядковый номер первого байта в поле данных сегмента среди всех октетов потока данных для текущего логического соединения (TCP сессия). Если в TCP сегменте передаются октеты с 5- го по 87-ой, то SN = 5. В случае начальной установки соединения (TCP сегмент с флагом «SYN») в поле SN записывается случайный номер ISN (Initial Sequence Number = начальный номер последовательности), в первом TCP сегменте без флага «SYN» поле SN = ISN + 1.
|
|
Поле «Acknowledgment Number» (номер подтверждения) указывает (в совокупности с флагом «АСК») порядковый номер октета, который отправитель данного сегмента желает получить подразумевая тем самым, что все предыдущие байты (с номерами от ISN+1 до АСК-1) были успешно получены.
Поле «Data Offset» (смещение данных, 4 бита) указывает смещение начала данных TCP в сегменте относительно начала сегмента. Поле указывает длину TCP заголовка. Минимальная длина заголовка без параметров может быть равна 5-ти 32-х битным словам или 160 байтам. Максимальная длина заголовка - 480 байт.
Поле «Reserved» (зарезервировано, 6 бит) зарезервировано для дальнейшего использования, заполняется нулями.
Поле «Flags» (флаги, 6 бит) содержит управляющие биты, для контроля над соединением.
• Флаг URG (Urgent - срочно) указывает срочность доставки сегмента;
• Флаг АСК (Acknowledgment - подтверждение) указывает, что поле «Acknowledgment Number» указывает следующий октет, который предполагает принять получатель;
• Флаг PSH (Push - протолкнуть) указывает на незамедлительность отправки данных из TCP сегмента процессу прикладного уровня, даже, если приёмный TCP буфер не заполнен. Используется при передаче данных интерактивных приложений;
• Флаг RST (Reset - перезагрузка) указывает на необходимость перезагрузки текущего TCP соединения;
• Флаг SYN (Synchronization - синхронизация) указывает на то, что данный TCP сегмент является запросом на установление соединения;
• Флаг FIN (Finish - конец) указывает на закрытие TCP соединения;
Поле «Window» (окно) указывает размер TCP «окна» в октетах. Размер «окна» указывает отправителю максимально возможное число TCP сегментов, которые могут быть отправлены без подтверждения.
|
|
Поле «Checksum» (контрольная сумма) содержит контрольную сумму всего TCP сегмента. Обеспечивает поразрядную проверку целостности.
Поле «Urgent Pointer» (указатель срочности) используется для указания длины срочных данных, которые размещаются в начале поля данных сегмента. Число в этом поле указывает смещение октета срочных данных относительно первого октета данных в сегменте. Например, если в TCP сегменте передаются окном с 5-го по 87-ой и первые 15 из них срочные, то поле «Urgent Pointer» = 15. Протокол TCP не регламентирует, как должны обрабатываться срочные данные, определено только, что они должны быть максимально быстро отправлены прикладному процессу. Поле «Urgent Pointer» действует в совокупности флагом «URG».
Поле «Options» (опции, поле переменной длины) поле указывает на реализацию работы дополнительных услуг (опций) протокола TCР. Поле конкретной опции в поле «Options» состоит из октета «Option Kind» (тип опции), октета «Option Length» (длина опции) и октетов «Option Octets» (октетов с данными опции). Стандарт протокола TCP определяет три опции:
«End of Option List» (конец списка опций) имеет тип опции, равный «О», и длину в один октет. Определяет конец списка опций. Не используется, если набор опций TCP выходит за 32-битную границу.
«No Operation» (бездействие) имеет тип опции, равный «1», и длину в один октет. Используется между TCP опциями для 32- битного выравнивания.
«Maximum Segment Size» имеет тип опции, равный «2», и длину в четыре октета. Описывает максимальный размер сегмента, который может быть передан по TCP соединению. Вычисляется на основании MTU (Maximum Transfer Unit - максимальный блок передачи), который может быть передан по соединению за вычетом IP и TCP заголовков. Данная опция включается только на стадии установки соединения, вместе с флагом «SYN».
Поле «Padding» (заполнение) заполняется нулями до выравнивания по 32-битной границе в случае, если поле «Options» не укладывается в 32-битное слово.