Формат ТСР-сегмента
Рис. 19.4. Формирование TCP-сегментов из потока байтов |
Заголовок TCP-сегмента содержит значительно больше полей, чем заголовок ƯDP,
что отражает более развитые возможности первого протокола:
? Порт источника (sourc port) занимает 2 байта и идентифицирует процесс-отправитель.
? Порт приемника (destination port) занимает 2 байта и идентифицирует процесс-получатель.
? Последовательный номер (sequence number) занимает 4 байта и представляет собой номер байта, который определяет смещение сегмента относительно потока отправляемых данных (другими словами, номер первого байта данных в сегменте).
? Подтвержденный номер (acknowledgement number) занимает 4 байта и содержит максимальный номер байта в полученном сегменте, увеличенный на единицу. Именно это значение используется в качестве квитанции. Если установлен контрольный бит АСК, то это поле содержит следующий номер очереди, который отправитель данного сегмента желает получить в обратном направлении.
? Длина заголовка (hlen) занимает 4 бита и представляет собой длину заголовка TCP-сегмента, измеренную в 32-битовых словах. Длина заголовка не фиксирована и может изменяться в зависимости от значений, устанавливаемых в поле параметров.
? Резерв (reserved) занимает 6 бит.
? Кодовые биты (code bits) числом 6 содержат служебную информацию о типе данного сегмента. Положительное значение сигнализируется установкой этих битов в единицу:
О URG — срочное сообщение;
О АСК — квитанция на принятый сегмент;
О PSH — запрос на отправку сообщения без ожидания заполнения буфера (протокол TCP может выжидать заполнения буфера перед отправкой сегмента, но если требуется срочная передача, то приложение сообщает об этом протоколу TCP с помощью данного бита);
О RST — запрос на восстановление соединения;
О SYN — сообщение, используемое для синхронизации счетчиков переданных данных при установлении соединения;
О FIN — признак достижения передающей стороной последнего байта в потоке передаваемых данных.
? Окно (window) занимает 2 байта и задает количество байтов данных, ожидаемых отправителем данного сегмента, начиная с байта, номер которого указан в поле подтвержденного номера.
? Контрольная сумма (checksum) занимает 2 байта.
? Указатель срочности (urgent pointer) занимает 2 байта и указывает на конец данных, которые необходимо срочно принять, несмотря на переполнение буфера. Указатель срочности используется совместно с кодовым битом ƯRG. То есть если какие-то данные необходимо переслать приложению-получателю вне очереди, то приложение-отправитель должно сообщить об этом протоколу TCP путем установки в единицу бита URG.
? Параметры (options) имеют переменную длину и могут вообще отсутствовать. Максимальная величина поля составляет 3 байта; оно используется для решения вспомогательных задач, например для выбора максимального размера сегмента. Поле параметров может располагаться в конце заголовка TCP, а его длина кратна 8 бит.
? Заполнитель (padding) может иметь переменную длину. Это фиктивное поле, используемое для доведения размера заголовка до целого числа 32-битовых слов.
Еще по теме Формат ТСР-сегмента:
- Жанры и форматы
- ЗАБЫТЫЕ ФОРМАТЫ
- МОЗГ СПИННОЙ
- ЖИВОТНОЕ: ДЕЯТЕЛЬНОСТЬ КОНСТРУКТИВНАЯ
- в) Позиционирование
- б) Сегментирование
- Эксперимент
- Дело вкуса
- Стиль
- ДВЕНАДЦАТИПЕРСТНАЯ КИШКА (ЯЗВА)
- Сила уединения
- Задачи и упражнения