RFC: 2460
Оригинал: Internet Protocol, Version 6 (IPv6) Specification
Предыдущие версии: RFC 1883
Категория: Проект стандарта
Дата публикации:
Авторы: ,
Перевод: Мельников Дмитрий Анатольевич

4.2. Дополнительные функции

Только два заголовка расширения определяют дополнительные функции, а именно «Дополнительные функции: ретрансляция» («Hop-by-Hop Options») и «Дополнительные функции: узел-получатель» («Destination Options»). Каждый из них включает три поля (рис.3):

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - - - - - -
|   Тип дополнительной    | Длина поля «Данные      | Данные дополнительной
|         функции         | дополнительной функции» |        функции
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - - - - - -

Рис.3. Формат заголовков «Дополнительные функции: …»
  1. «Тип дополнительной функции» («Option Type»):

    8-битовое беззнаковое целое число, которое представляет идентификатор, определяющий тип дополнительной функции.

  2. «Длина поля «Данные дополнительной функции» («Opt Data Len»):

    8-битовое беззнаковое целое число, которое определяет длину поля «Данные дополнительной функции» в октетах.

  3. «Данные дополнительной функции» («Option Data»):

    поле переменной длины, содержащее специфические данные дополнительной функции.

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

Кодирование идентификаторов, определяющих тип дополнительной функции, имеет следующее правило. Два старших бита идентификатора должны выбираться таким образом, чтобы IPv6-узел «понимал» что делать дальше с принятым IPv6-пакетом, если он не определил тип функции. Эти старшие дебиты могут иметь следующие значения:

  • «00» — пропустить эту функцию и продолжить обработку заголовка;

  • «01» — уничтожить пакет;

  • «10» — уничтожить пакет и, не обращая внимания на поле «Адрес получателя пакета» с точки зрения, содержит оно групповой IPv6-адрес или нет, передать отправителю этого пакета ICMP-сообщение, содержащее значение «2» в поле «Код ошибки» («Обнаружен неопределённый тип дополнительной функции»);

  • «11» — уничтожить пакет и, если только поле «Адрес получателя пакета» не содержит групповой IPv6-адрес, передать отправителю этого пакета ICMP-сообщение, содержащее значение «2» в поле «Код ошибки» («Обнаружен неопределённый тип дополнительной функции»).

Третий старший бит идентификаторов, определяющих тип дополнительной функции, указывает на возможность изменения (будут изменяться или нет) данных этой дополнительной функции (в поле «Данные дополнительной функции») во время доставки IPv6-пакета на конечный узел-получатель. Этот бит имеет следующее кодирование:

  • «0» — данные дополнительной функции не будут изменяться во время доставки IPv6-пакета;

  • «1» — данные дополнительной функции могут изменяться во время доставки IPv6-пакета.

Если в IPv6-пакете представлен заголовок аутентификации («Authentication»), то тогда при вычислении соответствующих параметров аутентификации данные дополнительной функции (в поле «Данные дополнительной функции»), которые могут быть изменены во время доставки IPv6-пакета, должны восприниматься как полностью нулевая последовательность (последовательность из нулевых октетов).

2007 - 2017 © Русские переводы RFC, IETF, ISOC.