Шрифт:
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) для участка следующего попадания.
Когда в узле источника создается фрагмент, в пакет включается заголовок Fragmentation, формат которого показан на рис. 22.6.
Рис. 22.6. Формат заголовка Fragmentation
Как и в версии 4, поле смешения имеет длину 13 бит и измеряет смещение фрагмента в 8-октетных блоках. Бит M (more — больше) указывает, является ли этот фрагмент последним. Поле идентификации расширено до 32 бит.
22.7.5 Варианты Destination
Заголовок Destination Option (варианты точки назначения) обеспечивает сведения о точке (точках) назначения для многоадресной рассылки. В настоящее время для этого заголовка не специфицировано никаких вариантов, кроме полей заполнения. Формат заголовка показан на рис. 22.7.
Рис. 22.7. Формат заголовка Destination Option
Если в пакете есть заголовок Routing, то могут присутствовать два заголовка Destination Option. Первый из них (расположен до Routing) содержит варианты, рассматриваемые каждым узлом, перечисленным в заголовке. Второй заголовок стоит после всех остальных и применяется только в точке назначения.