Сообщения протокола TCP называются сегментами и состоят из заголовка и блока
данных. Заголовок сегмента имеет следующие поля:
Порт источника (SOURS PORT) занимает 2 байта, идентифицирует
процесс-отправитель;
Порт назначения (DESTINATION PORT) занимает 2 байта, идентифицирует
процесс-получатель;
Последовательный номер (SEQUENCE NUMBER) занимает 4 байта, указывает номер
байта, который определяет смещение сегмента относительно потока отправляемых
данных;
Подтвержденный номер (ACKNOWLEDGEMENT NUMBER) занимает 4 байта, содержит
максимальный номер байта в полученном сегменте, увеличенный на единицу; именно
это значение используется в качестве квитанции;
Длина заголовка (HLEN) занимает 4 бита, указывает длину заголовка сегмента
TCP, измеренную в 32-битовых словах. Длина заголовка не фиксирована и может
изменяться в зависимости от значений, устанавливаемых в поле Опции;
Резерв (RESERVED) занимает 6 битов, поле зарезервировано для последующего
использования;
Кодовые биты (CODE BITS) занимают 6 битов, содержат служебную информацию о
типе данного сегмента, задаваемую установкой в единицу соответствующих бит этого
поля:
URG - срочное сообщение;
ACK - квитанция на принятый сегмент;
PSH - запрос на отправку сообщения без ожидания заполнения буфера;
RST - запрос на восстановление соединения;
SYN - сообщение используемое для синхронизации счетчиков переданных данных
при установлении соединения;
FIN - признак достижения передающей стороной последнего байта в потоке
передаваемых данных.
Окно (WINDOW) занимает 2 байта, содержит объявляемое значение размера окна в
байтах;
Контрольная сумма (CHECKSUM) занимает 2 байта, рассчитывается по сегменту;
Указатель срочности (URGENT POINTER) занимает 2 байта, используется
совместно с кодовым битом URG, указывает на конец данных, которые необходимо
срочно принять, несмотря на переполнение буфера;
Опции (OPTIONS) - это поле имеет переменную длину и может вообще
отсутствовать, максимальная величина поля 3 байта; используется для решения
вспомогательных задач, например, при выборе максимального размера сегмента;
Заполнитель (PADDING) может иметь переменную длину, представляет собой
фиктивное поле, используемое для доведения размера заголовка до целого числа
32-битовых слов.