Чтение онлайн

ЖАНРЫ

TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)

Фейт Сидни М.

Шрифт:

22.7 Дополнительные заголовки IPv6

Использование дополнительных заголовков (extension header) — это прогрессивная идея, позволяющая последовательно добавлять в IP версии 6 новые функциональные возможности.

Напомним, что в заголовке IP версии 4 поле протокола служит для идентификации типа заголовка (например, TCP или UDP), следующего за заголовком IP. Версия 6 использует более общее поле Next Header. Если следующий заголовок определен как TCP или UDP, значением поля будет 6 или 17.

Между заголовком IPv6 и заголовком верхнего уровня можно вставить

несколько дополнительных заголовков для необязательных вариантов, подобных маршрутизации от источника или поддержке безопасности. Фрагментация также может быть перенесена в дополнительные заголовки.

Как показано на рис. 22.3, каждый дополнительный заголовок имеет поле Next Header, что позволяет связать все эти заголовки в цепочку. Протокол следующего уровня идентифицируется включенным в общую последовательность дополнительным заголовком.

Рис. 22.3. Дополнительные заголовки

Такая схема обеспечивает большую гибкость. По мере необходимости могут определяться новые возможности, поскольку нет ограничений на общую длину. Отметим, что заключительный дополнительный заголовок может ссылаться на заголовок полностью независимого протокола, например ISO или DECnet.

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

Таблица 22.2 Заголовки IPv6

Заголовок Номер из предыдущего поля Next Header
Hop-by-Hop Options (варианты "от попадания к попаданию") 0
Destination Options (варианты для точки назначения) 60
Routing (маршрутизация) 43
Fragment (фрагмент) 44
Authentication (аутентификация) 51
Encapsulating Security Payload (инкапсуляция с обеспечением безопасности полезной нагрузки) 50
No Next Header (следующего заголовка не существует) 59

Показанный на рис. 22.3 порядок отражает рекомендации по размещению заголовков. Отметим, что могут присутствовать два заголовка Destination Options. Первый из них стоит перед Routing и применяется к каждому из попаданий, указанных в заголовке Routing. Второй присутствует как последний заголовок и применяется только в точке назначения.

Возможно, потребуется отправить пакет, состоящий из одних заголовков и не несущий полезной информации. В этом случае заключительное поле Next Header будет равно 59, что означает "дальше данных нет".

22.7.1 Использование заголовка Routing

Заголовок Routing выполняет очень важную функцию в версии 6. В комбинации с несколькоадресной рассылкой его можно применять для управления путем следования пакета на основе предварительных

предположений или для указания специализированных провайдеров (например, обращения к мобильному пользователю). Несколькоадресные рассылки позволяют указать вариант доставки "Перейти к ближайшему маршрутизатору провайдера X".

Когда применяется заголовок Routing, точка назначения может вернуть полученный пакет назад к источнику по тому же самому пути.

22.7.2 Операции с заголовком Routing

В заголовке Routing содержится поле типа, обеспечивающее добавление в будущем различных типов для данного заголовка. В настоящий момент определен только тип 0, аналогичный маршрутизации от источника в IPv4.

Формат заголовка Routing типа 0 представлен на рис. 22.4. В таком заголовке содержится список узлов, которые нужно пройти по пути в точку назначения.

Рис. 22.4. Заголовок Routing типа 0

Как и в IP версии 4, конечной точкой назначения является "Адрес n". Сначала пакет направляется на адрес из главного заголовка IPv6. Затем обращаются к заголовку Routing и меняют местами "Адрес 1" с адресом назначения из заголовка IPv6. Счетчик количества последующих сегментов уменьшается на 1, а пакет направляется дальше. Последний адрес из заголовка Routing определяет реальную точку назначения, по прибытии в которую адресный список будет содержать адреса всех узлов, через которые прошел пакет.

Битовая маска точности/потери указывает, было ли соответствующее попадание соседним (strict) или нет (loose).

22.7.3 Дополнительный заголовок Hop-by-Hop

Заголовок Hop-by-Hop переносит информацию, которая должна проверяться на каждом участке попадания по пути следования пакета. Формат этого заголовка показан на рис. 22.5.

Рис. 22.5. Заголовок Hop-by-Hop

Заголовок Hop-by-Hop может выполнять различные функции. Каждая из них самоидентифицируется и кодируется тремя полями:

Тип варианта Длина варианта Содержимое
8 бит 8 бит n бит

Jumbo Payload (гигантская нагрузка) является одним из вариантов Hop-by-Hop. Он используется для декларирования полезной нагрузки, превышающей 64 Кбит. Длина содержимого (в октетах) задается 4-байтным значением. Указанная длина полезной нагрузки учитывает весь пакет, за исключением заголовка IPv6.

22.7.4 Фрагментация

В отличие от версии 4 фрагментация никогда не выполняется маршрутизаторами, а только в исходном узле. Ее следует по возможности избегать, хотя и допустимо пользоваться этим способом. Фрагментировать пакет должен узел-источник, а сборка пакета будет выполнена в узле назначения.

Если маршрутизатор получает слишком большой для пересылки пакет, он отбрасывает его и отсылает назад сообщение ICMP, анонсирующее максимальный пересылаемый элемент (MTU) для участка следующего попадания.

Поделиться с друзьями: