Сидни Фейт - TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
Напомним, что в заголовке 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) для участка следующего попадания.
Когда в узле источника создается фрагмент, в пакет включается заголовок 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) содержит варианты, рассматриваемые каждым узлом, перечисленным в заголовке. Второй заголовок стоит после всех остальных и применяется только в точке назначения.
22.8 Автоконфигурация в версии 6
Раньше сети IP требовали большой работы по конфигурации и обслуживанию. Одним из преимуществ версии 6 является обеспечение эффективной автоматической инициализации. Очень важно помочь в переводе сайтов на новый формат адресов. Кроме того, не менее важно автоматизировать изменение адресов, связанное с изменениями у провайдера.
В независимых локальных сетях хосты IPv6 могут автоматически строить адреса IP на основе адреса адаптера сетевого интерфейса или иных уникальных идентификаторов на уровне связи данных.
Когда организации потребуется маршрутизировать данные или подключиться к провайдеру, маршрутизаторы обеспечат хосты всей необходимой информацией для автоконфигурации своих адресов и начала работы в сети.
22.8.1 Назначение маршрутизаторов
Каждый маршрутизатор предоставляет хостам следующие сведения:
■ Свой адрес
■ Список всех адресных префиксов, используемых связью
■ Конкретный префикс, который должен использоваться хостом для создания своего адреса
■ Предполагаемое максимальное значение предела счетчика попаданий
■ Будет ли хост извлекать конфигурационную информацию из сервера DHCP
■ MTU для связи, где возможны различные значения MTU