(RFC 791)
Заголовок пакета может занимать от 20 до 60 байт.
Version | IHL | Type Of Service | Total Lenght | |
Identification | Flags | Fragment Offset | ||
Time To Live | Protocol | Header CheckSum | ||
Source Address | ||||
Destination Address | ||||
Options | Padding |
Поле Version (4 бита) - указывает на версию протокола IP, которой соответствует пакет. В настоящее время пакеты с таким заголовком содержат только значение "4".
IHL (4 бита) - Длина заголовка пакета - используется для определения границы, на которой заканчивается заголовок IP-пакета и начинаются данные, которые он переносит. Длина указывается в 32-битных словах.
Type Of Service (8 бит) - указывает на абстрактные параметры желаемого качества обслуживания для пакета. Может быть использовано маршрутизаторами и другими устройствами 3-го уровня для определения наиболее подходящего по параметрам маршрута. Основной выбор состоит между низкой задержкой, высокой надежностью или высокой пропускной способностью. При этом биты 0-2 указывают на приоритет пакета, бит 3 - на уменьшение задержки при доставке, бит 4 - на выбор маршрута с высокой надежностью доставки, бит 5 - выбор маршрута с наибольшей пропускной способностью, биты 6-7 - зарезервированы. На самом деле используется только внутри одной сети и может не сыграть вообще никакой роли при передаче пакета через Internet, так как политики обработки пакетов устанавливаются конкретной организацией, управляющей автономной системой.
Total Lenght (16 бит) - общая длина IP-пакета в байтах.
ID - очень важное поле, предназначенное для правильной сборки фрагментированных пакетов.
Дело в том, что в различных протколах канального уровня максимальный размер кадра может отличаться, а это значит, что максимальный размер IP-пакета ограничен этим самым размером, который называется MTU - Maximum Transfer Unit. Но так как при прохождении очередного маршрутизатора пакет может попасть в сеть с меньшим MTU, чем в той, в которой он был создан, он может быть разбит на меньшие части. При этом в заголовке каждой части будет указано одинаковое значение ID, которое говорит о том, к какому пакету эти части относились.
Flags - 3 бита - Поле флагов. Первый бит зарезервирован и всегда должен быть установлен в 0. Второй бит, при установке в значение "1" указывает на то, что фрагментация пакета запрещена (и если она понадобится, пакет не будет доставлен). Третий бит указывает на наличие или отсутствие следующего фрагмента этого пакета. Иными словами, установлен в 0 может быть либо, если пакет не фрагментирован, или если это - последний фрагмент пакета.
Fragment Offser - значение смещения начала фрагмента внутри оригинального пакета, единица в этом поле одначает 64 бита. Смещение первого фрагмента всегда равно 0.
Time To Live - используется для решения проблемы "count to infinity" и помогает маршрутизаторам "пристрелить" пакет, который слишком долго находится в сети. Уменьшается на единицу каждым маршрутизатором при пересылке пакета. Таким образом, даже если в сети есть маршрутная петля, пакет не будет пересылаться от одного маршрутизатора к другому и обратно вечно, а будет уничтожен, как только поле TTL примет значение 0.
Protocol - указывает номер протокола, PDU которого вложен внутрь этого IP-пакета.
Header Checksum - контрольная сумма заголовка пакета. Пересчитывается каждый раз при смене заголовка - например, если он проходит через очередной маршрутизатор.
Source Address (4 байта) - IP-адрес источника, отославшего пакет.
Destination Address (4 байта) - IP-адрес назначения, куда был послан пакет.
Поле опций (Options) - может появляться или не появляться в заголовке. Довольно-таки интересное поле. )
Опции могут быть двух типов - однобайтовые и многобайтовые. Многобайтовая опция состоит из полей "Тип опции", "Длина опции" и, собственно "данные опции". При этом "длина опции" - это общая длина поля, включая тип опции и поле длины.
Поле "Тип опции" содержит флаги - 1-й бит - нужно ли копировать опцию в каждый фрагмент пакета при фрагментации. 2-й бит - класс опции. 3-й бит - номер опции.
Классы опций - управляющая (0), зарезервировано (1), отладочная - (2) и опять зарезервированная (3).
Определены следующие номера опций:
Класс | Номер | Длина | Описание |
0 | 0 | - | Конец списка опций. |
0 | 1 | - | Поле-заполнитель, используемое для дополнения поля опций до кратной 32 бит границы заголовка |
0 | 3 | var | Включение мягкой маршрутизации от источника. Позволяет задавать маршрут пакета при его отправке. |
0 | 9 | var | Строгая маршрутизация от источника. |
0 | 7 | var | Запись маршрута. Включает запись адресов исходящих интерфейсов маршрутизаторов внутрь поля опций при пересылке пакетов. |
2 | 4 | var | Тайм-стамп опция. Включает запись временной метки на каждом маршрутизаторе, через который проходит пакет, при его пересылке. |
Подробно об опциях можно почитать в RFC 791.
Комментариев нет:
Отправить комментарий