Спецификация

Up Функционирование Идеология Спецификация ICMP Словарь

Поле опций
Коментарий
Интерфейсы
Примеры

Спецификация протокола IP

Формат заголовка Internet
Коментарии
Интерфейсы
Примеры и сценарии

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

Межсетевые дейтаграммы (МД) содержат полные адреса и могут передаваться независимо друг от друга, в том числе по различным маршрутам. Межсетевая маршрутизация МД осуществляется в шлюзах (маршрутизаторах). Данные, поступившие для передачи, могут разбиваться на сегменты и передаваться в виде нескольких самостоятельных МД. Длина МД определяется характеристиками шлюзов, подключенных к сети. Рекомендуемые размеры МД - не более 576 байт, но возможна передача дейтаграмм длиной до 2048 байт (в последней спецификации Unix допускаются дейтаграммы до 64 кбайт).

Структура протокольного блока

Разряды

Описание

7 6 5 4 3 2 1 0  

Версия = 4 протокола

Длина заголовка дейтаграммы

 

1
байт

Type of Service
Вид обслуживания

старший байт

Общая длина дейтаграммы в байтах

младший байт

старший байт

Identification
Идентификатор дейтаграммы

Формируется исходным абонентом, формирующим дейтаграмму, служит для идентификации конкретной дейтаграммы. Выглядит как 16-ти разрядный счетчик

младший байт

O DF MF
Flags
Смещение фрагмента
старшая тетрада

Поле флагов
и поля смещения фрагмента данных от начала исходного блока данных (используется при сегментации)

младший байт

1 байт

Time to Live
Время жизни
Поле показывает количество переходов через маршрутизаторы

1 байт

Protocol.
Тип следующего протокола

2 байта

Header Checksum
Контрольная сумма заголовка

старший байт

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

1 байт

1 байт

младший байт

старший байт

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

1 байт

1 байт

младший байт

. .  .

Options
Поле дополнительных услуг (может отсутствовать)
Длина поля дополнительных услуг определяется как разность заданной длины заголовка и размера фиксированной части.

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

. . .

Данные

 

Version (версия) 4 бита

Поле версии показывает формат заголовка Internet. Данный документ описывает версию 4.

IHL (длина Internet заголовка) 4 бита

Длина Internet заголовка измеряется в словах по 32 бита каждый и указывает на начало поля данных. Заметим, что корректный заголовок может иметь минимальный размер 5 слов.

Type of Service (тип сервиса) 8 бит

Тип сервиса определяет с помощью неких абстрактных параметров тип требуемого обслуживания. Эти параметры должны использоваться для управления выбором реальных рабочих характеристик при передаче датаграммы через конкретную сеть. Некоторые сети осуществляют обслуживание с приоритетом, которое неким образом дает преимущество для продвижения данной датаграммы по сравнению со всеми остальными.

Реально выбор осуществляется между тремя альтернативами: малой задержкой, высокой достоверностью и высокой пропускной способностью.

биты 0-2 приоритет
бит 3 0 - нормальная задержка,
1 - малая задержка
бит 4 0 - нормальная пропускная способность,
1 - высокая пропускная способность
бит 5 0 - обычная достоверность,
1 - высокая достоверность
биты 6-7 зарезервированы
0 1 2 3 4 5 6 7
приоритет D T R 0 0

Приоритет

111 - управление сетью
110 - межсетевое управление
101 - CRITIC/ECP
100 - более, чем мгновенно
011 - мгновенно
010 - немедленно
001 - приоритетно
000 - обычный маршрут

Использование индикации задержки, пропускной способности и достоверности может, в некотором смысле, увеличить стоимость обслуживания. Во многих сетях улучшение одного из этих параметров связано с ухудшением другого. Исключения, когда имело бы смысл устанавливать два из этих трех параметров, очень редки.

Тип обслуживания используется для указания типа обработки датаграммы при ее прохождении через систему Internet. Примеры отображения типа обслуживания в протоколе Internet на реальные услуги, предоставляемые такими сетями, как AUTODIN II, ARPANET, SATNET и PRNET даны в документе "Service Mapping" [8]. Значение "управление сетью" следует присваивать приоритету только для использования внутри локальной сети. Управление и реальное использование этого аргумента должно находиться в согласии с каждой применяющей его сетью. Аргумент "межсетевое управление" предназначен только для использования шлюзами, берущими на себя управление. Если вышеописанные аргументы приоритета находят применение в какой-либо сети, то это означает, что данная сеть может управлять приемом и использованием этих аргументов.

Total Length (общая длина) 16 бит

Общая длина - это длина датаграммы, измеренная в октетах, включая Internet заголовок и поле данных. Это поле может задавать длину датаграммы вплоть до 65535 октетов. В большинстве хост-компьютеров и сетей столь большие датаграммы не используются. Все хосты должны быть готовы принимать датаграммы вплоть до 576 октетов длиной (приходят ли они целиком или по фрагментам). Хостам рекомендуется отправлять датаграммы размером более чем 576 октетов, только если они уверены, что принимающий хост готов обслуживать датаграммы повышенного размера.

Значение 576 выбрано с тем, чтобы соответствующим образом ограниченный блок данных передавался вместе с требуемой информацией в заголовке. Например, этот размер позволяет заполнять датаграмму полем данных размером в 512 октетов и заголовком в 64 октета. Наибольший Internet заголовок занимает 60 октетов, а его типичный размер составляет всего 20 октетов, что оставляет место под заголовки протоколов более высокого уровня.

Identification (идентификатор) 16 бит

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

Flags (различные управляющие флаги) 16 бит

бит 0 зарезервирован, должен быть нуль
бит 1 (DF) 0 - возможно фрагментирование,
1 - запрет фрагментации
бит 2 (MF) 0 - последний фрагмент,
1 - будут еще фрагменты
0 1 2
0 DF MF

Fragment Offset (смещение фрагмента) 13 бит

Это поле показывает, где в датаграмме находится этот фрагмент. Смещение фрагмента изменяется порциями по 8 октет (64 бита).

Первый фрагмент имеет смещение нуль.

Time to Live (Время жизни) 8 бит

Это поле показывает максимальное время, в течении которого датаграмме позволено находиться в системе Internet. Если это поле имеет значение нуль, то датаграмма должна быть разрушена. Значение этого поля изменяется при обработке заголовка Internet. Время измеряется в секундах. Однако, поскольку каждый модуль, обрабатывающий датаграмму, должен уменьшать значение поля TTL по крайней мере на единицу, даже если он обрабатывает эту датаграмму менее, чем за секунду, то поле TTL следует понимать как максимальный интервал времени, в течении которого датаграмма может существовать. Внимание следует обратить на разрушение датаграмм, не могущих достигнуть получателя, а также на ограничение времени жизни датаграммы.

Protocol (Протокол) 8 бит

Это поле показывает, какой протокол следующего уровня использует данные из Internet датаграммы. Значение поля определяется рекомендациями RFC (RFC1700). Неполный список основных типов протоколов приведен здесь.

Header Checksum (Контрольная сумма заголовка) 16 бит

Поскольку некоторые поля заголовка меняют свое значение (например, время жизни), это значение проверяется и повторно рассчитывается при каждой обработке Internet заголовка.

Алгоритм контрольной суммы следующий:
Поле контрольной суммы - это 16 бит, дополняющие биты в сумме всех 16 битовых слов заголовка. Для вычисления контрольной суммы значение этого поля устанавливается в нуль.

Контрольную сумму легко рассчитать и опытным путем доказать ее адекватность, однако это временная мера и должна быть заменена CRC процедурой в зависимости от дальнейшего опыта.

Адреса

Source Address (адрес отправителя) 32 бита
Destination Address (адрес получателя) 32 бита

Опции

Options (опции) поле переменной длины. Опции могут появиться в датаграммах, а могут и не появляться. Признаком наличия опций является превышение указанной в первом байте длины заголовка значения длины фиксированной части заголовка (=20).
Длина поля опций Lopc определяется по следующей формуле:

Lopc=4*Lzag - 20;
где Lzag - значение поля длина заголовка в первом байте,
20 - длина фиксированной части заголовка.

Опции  должны поддерживаться всеми Internet модулями (хостами и шлюзами). Не обязательно каждая конкретная датаграмма несет опции, но нести их все же может. В некоторых приложениях опция секретности должна присутствовать во всех датаграммах. Поле опций не имеет постоянной длины. Опций может не быть, а может быть несколько.
Типы и форматы полей опций можно найти здесь.

Padding (Выравнивание)

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