Назад | Содержание | Вперед

Спецификация для функций протокола



Формат заголовка

Передача TCP сегментов осуществляется в виде Internet датаграмм. Заголовок датаграммы в Internet протоколе имеет несколько информационных полей, включая адреса отправляющего и принимающего хост- компьютеров. Заголовок TCP следует за Internet заголовком и дополняет его информацией, специфической для TCP протокола. Такое деление допускает использование на уровне хост-компьютеров протоколов, иных нежели TCP.

Формат TCP заголовка

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

Source Port

Destination Port

Sequence Number

Acknowledgment Number

Data
Offset


Reserved

U
R
G
A
C
K
P
S
H
P
S
T
S
Y
N
F
I
N


Window

Checksum

Urgent Pointer

Options

Padding

Data

Отметим, что каждая метка указывает здесь место для соответствующего бита.

Source Port (порт отправителя) 16 бит номер порта отправителя
Destination Port (порт получателя) 16 бит номер порта получателя

Номера портов источника и получателя определяют прикладной процесс инициировавший данное соединение. Закрепление номеров портов осуществляется в соответствии с рекомендацией. Список основных портов приведен здесь.

Sequence Number (номер очереди) 32 бита
Номер очереди для первого октета данных в данном сегменте (за исключением тех случаев, когда присутствует флаг синхронизации SYN). Если же флаг SYN присутствует, то номер очереди является инициализационным (ISN), а номер первого октета данных - ISN+1.

Acknowledgment Number (номер подтверждения) 32 бита
Если установлен контрольный бит ACK, то это поле содержит следующий номер очереди, который отправитель данной датаграммы желает получить в обратном направлении. Номера подтверждения посылаются постоянно, как только соединение будет установлено.

Data Offset (смещение данных) 4 бита
Количество 32-битных слов в TCP заголовке. Указывает на начало поля данных. TCP заголовок всегда кончается на 32-битной границе слова, даже если он содержит опции.

Reserved 6 бит
Это резервное поле, должно быть заполнено нулями.

Control Bits (контрольные биты) 6 бит
Биты этого поля слева направо

URG: поле срочного указателя задействовано
ACK: поле подтверждения задействовано
PSH: функция проталкивания
RST: перезагрузка данного соединения
SYN: синхронизация номеров очереди
FIN: нет больше данных для передачи

Window (окно) 16 бит
Количество октетов данных, начиная с октета, чей номер указан в поле подтверждения. Количество октетов, получения которых ждет отправитель настоящего сегмента.

Checksum (контрольная сумма) 16 бит
Поле контрольной суммы - это 16-битное дополнение суммы всех 16- битных слов заголовка и текста. Если сегмент содержит в заголовке и тексте нечетное количество октетов, подлежащих учету в контрольной сумме, последний октет будет дополнен нулями справа с тем, чтобы образовать для предоставления контрольной сумме 16-битное слово. Возникший при таком выравнивании октет не передается вместе с сегментом по сети. Перед вычислением контрольной суммы поле этой суммы заполняется нулями.

Контрольная сумма, помимо всего прочего, учитывает 96 бит псевдозаголовка, который для внутреннего употребления ставится перед TCP заголовком. Этот псевдозаголовок содержит адрес отправителя, адрес получателя, протокол и длину TCP сегмента. Такой подход обеспечивает защиту протокола TCP от ошибшихся в маршруте сегментов. Эту информацию обрабатывает Internet протокол. Она передается через интерфейс протокол TCP/локальная сеть в качестве аргументов или результатов запросов от протокола TCP к протоколу IP.

Адрес отправителя

Адрес получателя

нули PTCL длина TCP

Длина TCP сегмента - это длина TCP заголовка и поля данных, измеренная в октетах. Это не является точным указанием количества передаваемых по сети октетов, она не учитывает 12 октетов псевдозаголовка, но тем не менее расчет этого параметра все же производится.

Urgent Pointer (срочный указатель) 16 бит
Это поле сообщает текущее значение срочного указателя. Последний является положительной величиной - смещением относительно номера очереди данного сегмента. Срочный указатель сообщает номер очереди для октета, следующего за срочными данными. Это поле интерпретируется только в том случае, когда в сегменте выставлен контрольный бит URG.

Options (опции) длина переменная
Опции могут располагаться в конце TCP заголовка, а их длина кратна 8 бит. Все опции учитываются при расчете контрольной суммы.

Опции могут начинаться с любого октета. Они могут иметь два формата:

однооктетный тип опций;
октет типа опции, октет длины опции и октеты данных рассматриваемой опции.

В октете длины опции учитываются октет типа опции, сам октет длины, а также все октеты с данными.

Заметим, что список опций может оказаться короче, чем можно указать в поле Data Offset. Место в заголовке, остающееся за опцией "End-of-Option", должно быть заполнено нулями. Протокол TCP должен быть готов обрабатывать все опции.

В настоящее время определены следующие опции:

Тип Длина Значение
0 - конец списка опций
1 - нет операций
2 4 максимальный размер сегмента

Определения указанных опций

Конец списка опций

00000000 тип 0

Этот код опции определяет конец списка опций. Конец списка может не совпадать с концом TCP заголовка, указанным в поле Data Offset.
Эта опция используется после всех опций, но не после каждой из них. Опцию необходимо использовать только в том случае, если иначе не будет совпадения с концом TCP заголовка.

Нет операций

00000001 тип 1

Опции этого типа могут ставиться между опциями. Целью при этом может служить выравнивание очередной опции по границе слова. Нет гарантии, что отправители будут использовать данную опцию. Поэтому получатели должны быть готовы обрабатывать опции, даже если они не будут начинаться на границе слова.

Максимальный размер сегмента

00000010 00000100 макс.разм.сегм.
тип 2 длина 4 .

Поле данных опции - 16 бит. Если опция присутствует в списке, то она указывает для программы протокола TCP максимальный размер получаемого сегмента, отправившей сегмент с этой опцией. Эту опцию следует посылать лишь при первоначальном запросе на установление соединения (т.е. в сегментах с установленным контрольным битом SYN). Если данная опция не была использована, ограничения на размер отсутствуют.

Padding (выравнивание) длина переменная Выравнивание TCP заголовка осуществляется с тем, чтобы убедиться в том, что TCP заголовок заканчивается, а поле данных сегмента начинается на 32-битной границе. Выравнивание выполняется нулями.

Назад | Содержание | Вперед
Hosted by uCoz