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