Формат ТСР-сегмента

Информация, поступающая к протоколу TCP от протоколов более высокого уров­ня, рассматривается протоколом TCP как неструктурированный, поток байтов. Поступающие данные буферизуются средствами TCP. Для передачи на сетевой уровень из буфера «вырезается» некоторая непрерывная часть данных, которая называется сегментом[36] и снабжается заголовком (рис. 19.4).


Процесс   Процесс   Процесс
FTP /\   DNS Л   telnet

IP

Входная очередь сегментов
Порт 21 Порт 53 Az___ TCP

Порт 23
Выходная очередь сегментов

X


Сетевой интерфейс!

> Сеть

Рис. 19.4. Формирование TCP-сегментов из потока байтов

Заголовок TCP-сегмента содержит значительно больше полей, чем заголовок UDP,

что отражает более развитые возможности первого протокола:

□ Порт источника (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 байта и указывает на конец данных, которые необходимо срочно принять, несмотря на переполнение бу­фера. Указатель срочности используется совместно с кодовым битом URG. То есть если какие-то данные необходимо переслать приложению-получате­лю вне очереди, то приложение-отправитель должно сообщить об этом прото­колу TCP путем установки в единицу бита URG.

□ Параметры (options) имеют переменную длину и могут вообще отсутствовать. Максимальная величина поля составляет 3 байта; оно используется для ре­шения вспомогательных задач, например для выбора максимального размера сегмента. Поле параметров может располагаться в конце заголовка TCP, а его длина кратна 8 бит.

□ Заполнитель (padding) может иметь переменную длину. Это фиктивное поле, используемое для доведения размера заголовка до целого числа 32-битовых слов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: