Специальные адреса
Есть ряд адресов, которые имеют особое значение в IPv6:
Локальные адреса:
::/128
– адрес со всеми нулями является неопределенным адресом, и будет использоваться только в программном обеспечении.::1/128
– адрес внутренней петли («loopback») localhost. Если узел посылает пакеты на этот адрес, IPv6 стек циклично возвращает эти пакеты обратно тому же узлу (соответствует127.0.0.1
в IPv4).fe80::/10
– локальный префикс, указывает, что адрес является действительным только внутри местной физической сети. Это аналог автоконфигурации IP адреса169.254.0.0/16
в IPv4.
Местные адреса:
fc00::/7
– уникальные локальные адреса (unique local addresses, ULA) являются маршрутизируемыми только в рамках набора взаимодействующих сайтов. Они были определены в RFC 4193 в качестве замены для локальных адресов. Адреса включает 40-битное псевдослучайне число, что позволяет свести к минимуму риск конфликтов при объединении сайтов и потерь пакетов.
IPv4
::ffff:0:0/96
– это префикс используется для подключаемых адресов IPv4.2001::/32
– используется для Teredo-туннелей.2002::/16
– это префикс используется для 6to4-адресации.
Групповые:
ff00::/8
– многоадресный префикс используется широковещания, как это определено в ” IP Version 6 Addressing Architecture” (RFC 4291).
Используемые в примерах, не рекомендуюмые или устаревшие:
::/96
– нулевой префикс, используется для IPv4-совместимых адресов, но в настоящее время устарел.2001:db8::/32
– это префикс используется в документации (RFC 3849). Везде, где приводятся примеры IPv6-адресов, следует использовать адреса этого диапазона.fec0::/10
– местный префикс, указывает, что адрес является действительным только внутри сети организации. Не используется с сентябре 2004 года (RFC 3879) и системы не должны поддерживать этот особый тип адреса.
ORCHID:
2001:10::/28
– относится к ORCHID (Overlay Routable Cryptographic Hash Identifiers) согласно (RFC 4843). Это немаршрутизируемые IPv6-адреса, используемые для криптографических хэш-идентификаторов.
IPv6-пакеты и индексы зон
IPv6-пакет, состоит из двух основных частей: заголовка и “полезной нагрузки”.
Заголовок находится в первых 40 октетах (320 бит) в пакете и содержит поля:
- Версия – версии IP (4 бита).
- Класс трафика – приоритет пакета (8-бит). Существует два класса: где источник обеспечивает контроль и где источник не обеспечивает контроль трафика.
- Метка потока – QoS-менеджмент (20 бит). Первоначально был создан для предоставления специальных сервисов в реальном времени, но в настоящее время не используется.
- Длина полезной нагрузки – длина полезной нагрузки в байтах (16 бит). Если заполнена нулями, значит используется Jumbo payload.
- Следующий заголовок – определяет следующий инкапсулированный протокол. Значения, совместимы с теми, что определенны для протокола IPv4 (8 бит).
- Лимит скачков – заменяет поле time to live в IPv4 (8 бит).
- Источник и адрес назначения – 128 бит каждый.
Полезная нагрузка может быть размером до 64 Kб в стандартном режиме, или большего размера в Jumbo payload режиме.
Фрагментация производится только в отправляющем узле IPv6: маршрутизаторы никогда не фрагментируют пакеты, и ожидается, что узлы будут использовать PMTU.
Поле “Протокол” из IPv4 заменяется на поле “Следующий заголовок”. Это поле, как правило, определяет уровень транспортного протокола, используемого в “полезной нагрузке”.
Так же это поле может задавать дополнительные заголовки, которые следуют за основными.
Индексы зоны
Локальные адреса несут в себе проблему для систем с несколькими интерфейсами. Так как каждый интерфейс может быть подключен к разным сетям и охватывает всю подсеть, могут возникать неясности, которые не могут быть решены с помощью таблиц маршрутизации.
Например, хост имеет два интерфейса, которые автоматически получают локальные адреса: fe80::1/64
и fe80::2/64
, только один из которых подключен к той же физической сети в качестве принимающей стороны, которая имеет адрес fe80::3/64
. Если хост попытается связаться с fe80::3
как он узнает, какой интерфейс (fe80::1
или fe80: 2
) следует использовать?
Решение определено в RFC 4007 и представляет собой добавление уникальных индексов зоны для местных интерфейсов. Текстуально оно может представлено в виде <address>%<zone_id>, например: http://[fe80::1122:33ff:fe11:2233%eth0]:80/. Однако это вызывает новые проблемы из-за похожести на %-кодировку URI.
- Microsoft Windows IPv6-стек использует цифровые идентификаторы зоны: fe80::3%1
- BSD-приложения, как правило, используют имя интерфейса в качестве зоны: fe80::3%pcn0
- Linux-приложения, как правило, тоже используют имя интерфейса в качестве зоны ID: fe80:: 3%eth0, хотя GNU/Linux утилиты конфигурации сетевого интерфейса, такие как ifconfig и iproute2, не показывают индексы зоны.
Только относительно небольшое число IPv6-приложений, способных понять синтаксис адреса с индексом зоны, в результате чего использование локальных адресов сильно ограничено.
Постовой
Недавно ездил на родину в Тверскую область. Соблазнили на экскурсию в город Бежецк. Очень понравилось, все же в этих старых небольших городах есть какой то свой неповторимый дух. Рекомендую всем…