Представление и структура адреса IPv6
Увеличение длины адреса IPv6 до 128 бит значительно расширило доступное адресное пространство, но привело к неудобствам, связанным с его использованием. Адрес очень длинный, что приводит к трудностям при его запоминании и вводе. Для удобства восприятия и запоминания адреса IPv4 используется десятично-точечная нотация. Для того чтобы использовать десятично-точечную нотацию для представления адреса IPv6 его надо было бы разбить на 16 октетов и представить каждый из них десятичным числом от 0 до 255. Однако запоминать пришлось бы не 4 цифры как в IPv4, а 16. Запись и запоминание адреса IPv6 в двоичном виде еще сложнее, т.к. количество цифр в нем становится равным 128.
Для того чтобы сделать адрес IPv6 короче было принято решение использовать его шестнадцатеричное представление. Шестнадцатеричная нотация адреса IPv6 похожа на представление МАС-адреса в технологии Ethernet, где 48 битов представляются 6 октетами, разделенными знаком «-» или двоеточием. Например:
0x1A-С7-64-07-AF-D0
Так как адрес IPv6 длиннее, то он записывается как восемь групп по четыре шестнадцатеричные цифры, разделенные двоеточием:
705B:2D9D:DC28:0000:0000:FC57:D3F8:1CAF
Существует несколько способов, которые позволяют сократить запись адреса IPv6:
● нули в начале группы можно заменить одним;
● одна или несколько идущих подряд групп, состоящих из нулей, может быть заменена знаком «::»;
● конечные нули в группе должны присутствовать.
Рассмотрим приведенный ниже адрес. Цифры, выделенные жирным шрифтом, представляют позиции, в которых адрес может быть сокращен.
2001:1000:0000:0000:0000:ABCD:0000:0001
Варианты возможных сокращений:
2001:1000::ABCD:0:0001
2001:1000::ABCD:0:1
Внимание: знак «::» не может использоваться дважды, поскольку такая запись воспринимается неоднозначно. Поэтому, например, адрес 2001:1000::ABCD::1 является недействительным. |
Альтернативной формой записи адреса, которая более удобна для использования в смешанной среде с узлами IPv4 и IPv6, является запись вида х:х:х:х:d.d.d.d, где х – шестнадцатеричное значение 6 первых групп адреса; d – десятичное значение 4 последних групп адреса (стандартное представление адреса IPv4). Например:
0:0:0:0:0:0:13.1.68.3 или в сокращенном виде ::13.1.68.3
0:0:0:0:0:FFFF:129.144.52.38 или в сокращенном виде ::FFFF:129.144.52.38
Аналогично классовым адресам IPv4, адреса IPv6 состоят из двух логических частей – битов идентификатора сети и следующими за ними битами идентификатора узла. Часть адреса, отведенная под идентификатор сети/подсети, называется префиксом (Prefix). Количество битов, отведенных под идентификатор сети, называется длиной префикса (Prefix length). Часть адреса, идентифицирующая интерфейс, называется идентификатором интерфейса (Interface ID). Он должен быть уникальным внутри сети/подсети.
Представление префикса адреса IPv6 аналогично записи префикса адреса IPv4 в нотации CIDR. Он записывается в виде нотации «адрес IPv6/длина префикса», где «адрес IPv6» - адрес IPv6 записанный с помощью любой формы записи, «длина префикса» - десятичное число, показывающее, сколько битов адреса отведено под префикс.
Для примера приведем запись 60-битного префикса 12AB00000000CD3 (аналогично записи номера сети/подсети в IPv4):
12AB:0000:0000:CD30:0000:0000:0000:0000/60
или
12AB::CD30:0:0:0:0/60
или
12AB:0:0:CD30::/60
Записать адрес узла, принадлежащего подсети 12AB:0:0:CD30::/60, можно следующим образом:
12AB:0:0:CD30:123:4567:89AB:CDEF/60
Типы адресов IPv6
Адресное пространство протокола IPv6 разделено на три типа адресов:
● индивидуальные (unicast) адреса;
● групповые (multicast) адреса;
● альтернативные (anycast) адреса.
Индивидуальные адреса идентифицируют один интерфейс устройства. Пакеты, отправленные на этот адрес, доставляются только на этот интерфейс.
Групповые адреса IPv6, подобно одноименным адресам IPv4, определяют группу интерфейсов. Пакеты, посылаемые на этот адрес, доставляются всем интерфейсам – участникам группы рассылки.
Альтернативные адреса позволяют адресовать группу интерфейсов (обычно принадлежащих разным узлам). Однако в отличие от групповых адресов, пакеты, передаваемые на альтернативный адрес, доставляются на один из интерфейсов (обычно «ближайший», согласно метрике маршрутизации), определяемых этим адресом.
Внимание: альтернативные адреса назначаются только интерфейсам маршрутизатора. |
Широковещательные адреса (Broadcast), которые используются в IPv4, в IPv6 отсутствуют, что способствует уменьшению сетевого трафика и снижению нагрузки на большинство систем. Широковещательные адреса заменены групповыми.
Типы адресов IPv6 определяются по их битам высокого порядка как показано в таблице 2.2.
Таблица 2.2. Типы адресов IPv6
Тип адреса | Двоичный префикс | Нотация IPv6 |
Unspecified | 00...0 (128 битов) | ::/128 |
Loopback | 00...1 (128 битов) | ::1/128 |
Multicast | FF00::/8 | |
Unique-Local Unicast | FC00::/7 | |
Link-Local Unicast | FE80::/10 | |
Global Unicast | Все остальное |
Альтернативные адреса берутся из адресного пространства индивидуальных адресов и поэтому синтаксически от них не отличаются.
Индивидуальные адреса
Существует несколько типов индивидуальных адресов IPv6:
● Global Unicast;
● Unique-Local Unicast;
● Link-Local Unicast.
Также имеется специальный подтип адресов Global Unicast: адреса IPv6 со встроенными адресами IPv4.
Для каждого типа индивидуального адреса определен свой диапазон.
Рис. 2.5 Диапазоны индивидуальных адресов IPv6
Идентификатор интерфейса
Идентификатор интерфейса (Interface ID) в индивидуальных адресах IPv6, аналогично идентификатору узла адреса IPv4 используется для определения интерфейса в сегменте сети. Он должен быть уникальным внутри сети/подсети. При этом уникальность идентификатора интерфейса не зависит от уникальности адреса IPv6.
Для всех индивидуальных адресов, за исключением тех, которые начинаются с 000, идентификатор интерфейса должен иметь длину 64 бита и быть сформирован в соответствии с форматом Modified EUI-64.
Вместо того чтобы придумывать идентификаторы интерфейсов для узлов, их можно получать из адресов нижележащего канального уровня, т.к. их длина не превосходит 64 бита. В зависимости от нижележащей технологии канального уровня существует несколько методов формирования идентификатора интерфейса в соответствии с форматом Modified EUI-64.
Наиболее распространенным типом адреса канального уровня является МАС-адрес, используемый технологиями IEEE 802. МАС-адрес, длина которого составляет 48 битов, разделяется на две части. В первой части указывается уникальный идентификатор производителя оборудования (Organizationally Unique Identifier, OUI), который присваивается производителю институтом IEEE. Старшие 24 бита МАС-адреса назначаются непосредственно производителем и позволяют идентифицировать оборудование.
IEEE также определил формат, который называется 64-bit Extended Unique Identifier (EUI-64). Он аналогичен формату МАС-адреса, но для идентификации оборудования используется 40 битов вместо 24. Идентификатор OUI остается без изменений. Модифицированный для использования в IPv6 вариант этого формата называется модифицированным EUI-64 (Modified EUI-64).
Если на канальном уровне узел или линия связи используют адрес в формате EUI-64, то идентификатор интерфейса IPv6 получается из него очень просто. В 64-х битовом адресе значение 7-го бита слева (бит "u" (universal/local)) изменяется с «0» на «1».
Большинство устройств используют МАС-адреса. Его преобразование в идентификатор интерфейса выполняется в два этапа. Сначала МАС-адрес преобразуется в формат EUI-64, из которого затем создается модифицированный EUI-64.
Рассмотрим процесс получение идентификатора интерфейса из МАС-адреса узла.
1. Преобразуем МАС-адрес в формат EUI-64. Так как МАС-адрес состоит из 48 битов, а для идентификатора интерфейса необходимо 64 бита, вставляем два октета со значениями 0xFF и 0xFE в середину МАС-адреса (между OUI и идентификатором, назначаемым производителем).
2. В полученном адресе EUI-64 значение бита 7 (слева) изменяем с «0» на «1».
Рис. 2.6 Преобразование MAC-адреса в идентификатор интерфейса
При формировании идентификатора интерфейса из МАС-адреса существует возможность определения и отслеживания трафика конкретного узла, независимо от его префикса. Для обеспечения определенного уровня анонимности в документе RFC 3041 описан метод генерации узлом псевдослучайного идентификатора интерфейса IPv6, сменяемого с течением времени.
Итоговый адрес IPv6, основанный на таком псевдослучайном идентификаторе интерфейса, называют временным адресом. Временные адреса рекомендуется создавать для префиксов глобальных адресов, используемых для подключения в Интернет.
По умолчанию Windows Vista, Windows 7 и выше не используют технику генерации идентификатора интерфейса из МАС-адреса. Они генерируют псевдослучайные числа для использования в качестве идентификатора интерфейса, как для префиксов глобальных уникальных адресов, так и для адресов Link-Local Unicast. Адреса имеют неограниченное время жизни.
Рис. 2.7 Генерация идентификатора интерфейса на основе псевдослучайных чисел в ОС Windows