Пакет
IP состоит из заголовка и поля данных. Заголовок пакета имеет следующие поля:
· Поле Номер версии (VERS)
указывает версию протокола IP. Сейчас повсеместно используется версия 4
и готовится переход на версию 6, называемую также IPng (IP next generation).
· Поле
Длина заголовка (HLEN) пакета IP занимает 4 бита и указывает значение длины
заголовка, измеренное в 32-битовых словах. Обычно заголовок имеет длину в 20
байт (пять 32-битовых слов), но при увеличении объема служебной информации эта
длина может быть увеличена за счет использования дополнительных байт в поле
Резерв (IP OPTIONS).
· Поле
Тип сервиса (SERVICE TYPE) занимает 1 байт и задает приоритетность пакета и вид
критерия выбора маршрута. Первые три бита этого поля образуют подполе
приоритета пакета (PRECEDENCE). Приоритет может иметь значения от 0 (нормальный
пакет) до 7 (пакет управляющей информации). Маршрутизаторы
и компьютеры могут принимать во внимание приоритет пакета и обрабатывать более
важные пакеты в первую очередь. Поле Тип сервиса содержит также три бита,
определяющие критерий выбора маршрута. Установленный бит D (delay)
говорит о том, что маршрут должен выбираться для минимизации задержки доставки
данного пакета, бит T - для максимизации пропускной способности, а бит R - для
максимизации надежности доставки.
· Поле
Полная длина (TOTAL LENGTH) занимает 2 байта и указывает общую длину пакета с
учетом заголовка и поля данных.
· Поле
Идентификатор пакета (IDENTIFICATION) занимает 2 байта и используется для
распознавания пакетов, образовавшихся путем фрагментации исходного пакета. Все
фрагменты должны иметь одинаковое значение этого поля.
· Поле
Флаги (FLAGS) занимает 3 бита, оно указывает на возможность фрагментации пакета
(установленный бит Do not Fragment - DF - запрещает маршрутизатору
фрагментировать данный пакет), а также на то, является ли данный пакет
промежуточным или последним фрагментом исходного пакета (установленный бит More Fragments - MF - говорит о том пакет переносит промежуточный фрагмент).
· Поле
Указатель фрагмента (FRAGMENT OFFSET) занимает 13 бит, оно используется для
указания в байтах смещения поля данных этого пакета от начала общего поля
данных исходного пакета, подвергнутого фрагментации. Используется при сборке/разборке
фрагментов пакетов при передачах их между сетями с различными величинами
максимальной длины пакета.
· Поле
Время жизни (TIME TO LIVE) занимает 1 байт и указывает предельный срок, в
течение которого пакет может перемещаться по сети. Время жизни данного пакета
измеряется в секундах и задается источником передачи средствами протокола IP.
На шлюзах и в других узлах сети по истечении каждой секунды из текущего времени
жизни вычитается единица; единица вычитается также при каждой транзитной передаче
(даже если не прошла секунда). При истечении времени жизни пакет аннулируется.
· Идентификатор
Протокола верхнего уровня (PROTOCOL) занимает 1 байт и указывает, какому
протоколу верхнего уровня принадлежит пакет (например, это могут быть протоколы
TCP, UDP или RIP).
· Контрольная
сумма (HEADER CHECKSUM) занимает 2 байта, она рассчитывается по всему
заголовку.
· Поля
Адрес источника (SOURCE IP ADDRESS) и Адрес назначения (DESTINATION IP ADDRESS)
имеют одинаковую длину - 32 бита, и одинаковую структуру.
· Поле
Опции (IP OPTIONS) является необязательным и используется обычно только при
отладке сети. Это поле состоит из нескольких подполей, каждое из которых может
быть одного из восьми предопределенных типов. В этих подполях можно указывать
точный маршрут прохождения маршрутизаторов,
регистрировать проходимые пакетом маршрутизаторы,
помещать данные системы безопасности, а также временные отметки. Так как число
подполей может быть произвольным, то в конце поля Резерв должно быть добавлено
несколько байт для выравнивания заголовка пакета по 32-битной границе.
Максимальная
длина поля данных пакета ограничена разрядностью поля, определяющего эту
величину, и составляет 65535 байтов, однако при передаче по сетям различного
типа длина пакета выбирается с учетом максимальной длины пакета протокола
нижнего уровня, несущего IP-пакеты. Если это кадры Ethernet,
то выбираются пакеты с максимальной длиной в 1500 байтов, умещающиеся в поле
данных кадра Ethernet.