Межсетевой протокол IP специфицирован в RFC 791. Его основные характеристики перечислены ниже:

  • реализует обмен информации пакетами, которые будем называть IP-сегментами (максимальный размер IP-сегмента - 65535 байт);
  • является протоколом взаимодействия без установления логического соединения;
  • для адресации узлов сети используется адрес длиной 4 байта;
  • обеспечивает в случае необходимости фрагментацию IP-сегментов;
  • IP-сегменты имеют конечное время жизни в сети;
  • не гарантирует надежность доставки IP-сегментов адресату;
  • не имеет средств управления интенсивностью передачи IP-сегментов посылающей стороной (flow control);
  • не гарантирует правильную последовательность IP-сегментов на принимающей стороне.

Заголовок IP-сегмента

На рис. 3.1 приведен формат заголовка IP-сегмента.

0 3 7 15 18 23 31+------+-------+---------------+-----+---------+---------------+|Версия| Длина | Тип | Длина || |заг-ка | обслуживания | сегмента |+------+-------+---------------+-+-+-+---------+---------------+| Идентификатор | |D|M| Смещение || | |F|F| фрагмента |+--------------+---------------+-+-+-+-------------------------+| Время | Транспорт | Контрольная сумма || жизни | | заголовка |+--------------+---------------+-------------------------------+| Адрес || источника |+--------------------------------------------------------------+| Адрес || приемника |+----------------------------------------------+---------------+| Дополнительные | Данные || данные заголовка | выравнивания |+----------------------------------------------+---------------+ Рис. 3.1

Версия

4-хбитовое поле, содержащее номер версии протокола IP (номер текущей версии равен 4);

Длина заголовка

4-хбитовое поле, содержащее длину заголовка IP-сегмента в 32-битных словах. Минимальная (и типичная) длина заголовка - пять слов.

Тип обслуживания

байт, содержащий набор критериев, определяющих тип обслуживания IP-сегментов. Детальное описание отдельных битов дано ниже:

    • биты 0...2 - приоритет (precedence - предпочтение) данного IP-сегмента;
    • бит 3 - требование ко времени задержки (delay) передачи IP-сегмента (0 - нормальная, 1 - низкая задержка);
    • бит 4 - требование к пропускной способности (throughput) маршрута, по которому должен отправляться IP-сегмент (0 - низкая, 1 - высокая пропускная способность);
    • бит 5 - требование к надежности (reliability) передачи IP-сегмента (0 -нормальная, 1 - высокая надежность);
    • биты 6...7 - зарезервированы.

На практике в большинстве реализаций протокола IP данное поле почти всегда равно 0, в UNIX-реализациях это поле не используется вовсе.

Длина сегмента

двухбайтовое поле, содержащее длину (в байтах) всего IP-сегмента, включая длину заголовка. Максимальная длина IP-сегмента (включая заголовок) - 65535 байт. Спецификация IP протокола устанавливает, что что любой узел сети должен быть способен обрабатывать IP-сегменты длиной, по крайней мере, не менее 576 байт (что соответствует 512 байтам данных при возможной длине заголовка до 64 байт). На практике же узлы сети могут обрабатывать IP-сегменты много длинее, чем 576 байт (как правило, допустимая длина IP-сегмента связана с максимальной длиной кадра нижележащего сетевого уровня).

Идентификатор

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

DF, MF

биты, используемые при обработке фрагментированных IP-сегментов.

Если бит DF (Don't Fragment) установлен в 1, то это означает, что IP-сегмент не может быть разбит на фрагменты ни при каких условиях (даже, если он не может быть передан без этого далее к адресату и должен быть уничтожен).

Бит MF (More Fragments) указывает, является (MF=0) или нет (MF=1) данный IP-"подсегмент" последним в цепочке IP-"подсегментов", в которую был преобразован (фрагментирован) исходный IP-сегмент.

Алгоритм фрагментации описан ниже в разделе "Фрагментация IP-сегментов".

Смещение фрагмента

13-битное поле, используемое только в IP-сегменте, являющемся фрагментом (IP-фрагментом) другого (исходного) IP-сегмента. Это поле содержит смещение данных, содержащихся в IP-фрагменте, по отношению к началу данных исходного IP-сегмента. Смещение измеряется в восьмибайтных единицах, поэтому 13 битов достаточно для представления смещения в IP-сегменте максимальной возможной длины (8 * 2^13 - 1 = 65535).

Время жизни

однобайтовое поле, заполняемое создающим IP-сегмент узлом сети количеством единиц времени жизни IP-сегмента в сети. RFC 791 специфицирует в качестве этих единиц секунды и требует, чтобы каждый транзитный узел сети, через который проходит IP-сегмент, уменьшал содержимое этого поля по крайней мере на 1 (даже при условии, что обработка сегмента на самом деле заняла меньше одной секунды). Таким образом, на практике, время жизни (TTL - Time To Live) - это максимальное количество узлов, которое может пройти до своего уничтожения IP-сегмент.

Каждый IP-модуль на любом узле сети обязан уничтожать IP-сегменты, для которых поле "время жизни" стало равным нулю. Этим предотвращается появление в сети IP-сегментов, "блуждающих" по ней бесконечное время. При этом узлу-источнику уничтоженного IP-сегмента посылается ICMP-сегмент, извещающий об этом событии.

В UNIX-реализациях, как правило, это поле заполняется источником IP-сегмента числом из диапазона 15...30.

Транспорт

поле размером в байт, содержащее идентификатор протокола более высокого (обычно, транспортного) уровня, для которого предназначены данные IP-сегмента. Ниже приведены идентификаторы для ряда протоколов.

Наши рекомендации