Документ утратил силу или отменен. Подробнее см. Справку

Таблица N 6. Формат заголовка пакета протокола TCP

N

Поле

Число бит

1

2

3

1

Source Port

16

2

Destination Port

16

3

Sequence Number

32

4

Acknowledgment Number

32

5

Data Offset

4

6

Reserved

6

7

Control Bits

6

8

Window

16

9

Checksum

16

10

Urgent Pointer

16

11

Options

12

Padding

Далее следуют октеты пользовательских данных.

3.3. "Source Port" - номер порта отправителя.

3.4. "Destination Port" - номер порта назначения.

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

3.6. "Acknowledgment Number" - номер подтверждения. Если бит ACK установлен, это поле содержит значение следующего порядкового номера, который отправитель сегмента ожидает получить. После организации соединения это значение передается всегда.

3.7. "Data Offset" - смещение данных. Число 32-битовых слов в заголовке TCP. Это значение указывает начало данных в сегменте. Заголовок TCP (даже при наличии опций) имеет длину, кратную 32 битам.

3.8. "Reserved" - резервное поле. Зарезервировано для использования в будущем и имеет нулевое значение.

3.9. "Control Bits" - биты управления:

URG - указывает на значимость поля Urgent Pointer;

ACK - указывает на значимость поля Acknowledgment Number;

PSH - функция Push;

RST - сброс (Reset) соединения;

SYN - синхронизация порядковых номеров;

FIN - у отправителя больше нет данных.

3.10. "Window" - окно. Число октетов данных, начиная с указанного в поле подтверждения, которые отправитель данного сегмента ожидает принять.

3.11. "Checksum" - контрольная сумма. Контрольная сумма представляет собой число единиц в заголовке и данных, просуммированное по модулю "16" с добавлением "1". Если сегмент содержит в заголовке и данных нечетное число октетов, справа добавляется октет нулей для выравнивания по 16-битовой границе. Биты заполнения не передаются как часть сегмента и используются только для расчета контрольной суммы. При расчете контрольной суммы значение поля "Checksum" принимается нулевым. Контрольная сумма учитывает также 96-битовый псевдозаголовок, предшествующий заголовку TCP. Этот псевдозаголовок содержит адреса отправителя и получателя, тип протокола и длину опций TCP. Перечисленные поля помогают защитить TCP против сегментов с ошибочной маршрутизацией. Эта информация транспортируется протоколом IP и передается через интерфейс TCP-сетевой уровень в качестве аргументов или результатов вызовов из TCP на уровень IP. Поле "Длина опций TCP" содержит размер заголовка TCP и поля данных в октетах (это не явно передаваемое, а расчетное значение), 12-октетный псевдозаголовок при расчете длины не учитывается.

3.12. "Urgent Pointer" - указатель срочности. Это поле содержит указатель на срочные данные - позитивное смещение начала таких данных от порядкового номера данного сегмента. Это поле используется только для сегментов с установленным флагом URG.

3.13. "Options" - опции.

Опции размещаются в конце заголовка TCP и могут занимать целое число октетов. Все опции учитываются при расчете контрольной суммы. Опции начинаются на любой границе октета. Существует два варианта форматирования опций:

1) однооктетное поле признака опций;

2) однооктетное поле признака опций, поле размера опций (1 октет) и собственно опции.

Поле размера опций учитывает и 2 октета полей признака опций и самого поля длины, а также размер опций, как таковых. Поле опций может быть короче, чем указывает поле смещения данных. Неиспользуемые биты поля опций заполняются нулями. В протоколе TCP используются следующие опции:

End of Option List (0) - этот код говорит о завершении списка опций. Конец списка опций может не совпадать с концом заголовка TCP, заданным полем Data Offset. Код используется как индикатор завершения всех опций, а не какой-то конкретной, и использование его требуется лишь в тех случаях, когда конец опций не совпадает с концом заголовка TCP.

No-Operation (1) - этот код используется между опциями (например, для их выравнивания по границе слова).

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

3.14. "Padding" - заполнение. Поле имеет переменную длину. Заполнение заголовка TCP используется для выравнивания размера заголовка по 32-битовой границе. Для заполнения неиспользуемых битов служит "0".

3.15. Состояния соединения - LISTEN, SYN-SENT, SYN-RECEIVED, ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT и фиктивное состояние CLOSED.

LISTEN - ожидание запроса на соединение от любого удаленного TCP и порта.

SYN-SENT - ожидание соответствующего запроса на соединение после передачи своего запроса.

SYN-RECEIVED - ожидание подтверждения соединения после передачи и приема запросов на организацию соединения.

ESTABLISHED - соединение действует и принятые данные могут быть доставлены пользователю. Это нормальное состояние для процесса обмена данными через соединение.

FIN-WAIT-1 - ожидание запроса на разрыв соединения от удаленного TCP или подтверждения для ранее переданного запроса на разрыв соединения.

FIN-WAIT-2 - ожидание запроса на разрыв соединения от удаленного TCP.

CLOSE-WAIT - ожидание запроса на разрыв соединения от локального пользователя.

CLOSING - ожидание подтверждения от удаленного TCP для запроса на разрыв соединения.

LAST-ACK - ожидание подтверждения для запроса на разрыв соединения, переданного удаленному TCP (это подтверждение включается в запрос на разрыв соединения от удаленной стороны).

TIME-WAIT - ожидание пока пройдет достаточно времени, чтобы быть уверенным в приеме удаленным TCP подтверждения для его запроса на разрыв соединения.

CLOSED - соединения уже нет (разорвано).

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

3.16. Пользовательские команды протокола TCP приведены в таблице N 7.