
Option-type
Option-
length
Option Data
Где Option-type – рассмотренный выше тип опции, Option-length (1 байт) –
длина опции, включающая в себя 1 байт поля Option-type, 1 байт поля Option-
type и количество байт в поле Option Data, которое имеет переменную длину, в
зависимости от типа опции. Таким образом, принимающая сторона,
встречающая в пакете опцию, всегда может понять, где заканчивается та или
иная опция: даже не поддерживая некоторою опцию второго типа, станция или
маршрутизатор может, считав второй байт такой опции, найти где эта опция
заканчивается и перейти к анализу следующей опции, кроме того, многие
опции второго типа могут иметь различную длину поля Option Data, в
зависимости от некоторых обстоятельств. Таким образом, наличие в опции
поля Option-length позволяет четко определить границы каждой опции и
правильно интерпретировать последовательность опций, идущих в одном
заголовке.
Перейдем к рассмотрению опций IP заголовка. Для начала рассмотрим опции
первого типа, которые состоят только из поля Option-type.
Опция «Конец поля опций», EOOF (End Of Option Field).
Эта опция не является копируемой и относится к классу «Управление»,
следовательно первые три бита поля Option-type = 000. Номер этой опции
00000, следовательно, поле Option-type принимает значение 00000000. Эта
опция используется для указания того, что опции IP пакета завершились.
Однако, как мы знаем, в заголовке IP пакета есть поле IHL, которое позволяет
заранее объявить, как много байтов будут занимать опции в заголовке (IHL*4-
20). Зачем же показывать специальной опцией конец поля опций? Это
делается не всегда, а лишь тогда, когда поле опций заканчивается не по
четырехбайтовой границе, в этом случае из-за небольшой длины поля IHL
заголовок IP должен иметь длину, кратную четырем байтам. Так вот, если
предыдущие опции закончились как раз на четырехбайтовой границе, то поле
опций НЕ ставится опция EOOF, а просто начинается поле данных IP пакета,
если же опции закончились не по четырехбайтовой границе, то после всех
опций ставиться опция EOOF. Если использование этой опции привело в к
тому, что вместе с ней поле опций закончилось на четырехбайтовой границе,
то после этого начинается поле данных IP пакета, если же применение опции
EOOF еще не привело к достижению четырехбайтовой границе, то поле этой
опции используется необходимо количество байт заполнителя, в качестве
заполнителя используется байт 00000000.
Рассмотрим примеры:
Пример первый: пусть в заголовке необходимо применить некоторую опцию
длиной 8 байт (6 байт данных, байт типа и байт длины). Тогда в поле IHL
указывается значение 7 (28 байт – длина заголовка), из них 20 байт –
стационарная часть заголовка. Тогда принимающая сторона понимает, что
опции занимают 8 байт. После поля Destination IP Address приемная сторона
начинает считывать опции, и второй байт первой опции имеет значение 8, т.е.
приемная сторона отсчитывает 8 байт опции, знает, на основании