IPv6-адрес
IPv6-адрес (англ. IPv6 address) — это числовая метка, используемая для идентификации и локализации сетевого интерфейса компьютера или другого сетевого узла в компьютерной сети, использующей протокол IPv6. IP-адреса указываются в заголовке пакета для обозначения источника и получателя, а адрес назначения применяется для принятия решений о маршрутизации пакетов IP между сетями[1]. IPv6 является преемником первой адресной схемы для — протокола Internet версии 4 (IPv4). В отличие от IPv4, где адрес занимал 32 англ. бита, IPv6-адрес имеет длину 128 англ. битов, что обеспечивает значительно больший адресный простор[1].
Методы адресации
IPv6-адреса классифицируются по основным методам адресации и маршрутизации: уникаст, эникаст и мультикаст[1].
- Уникаст (англ. unicast) — идентифицирует один-единственный сетевой интерфейс. Пакеты, адресованные уникаст-адресу, доставляются именно ему.
- Эникаст (англ. anycast) — назначается группе интерфейсов (обычно на разных узлах). Пакет, отправленный на эникаст-адрес, поступает одному из членов группы, как правило, ближайшему по определению маршрутизации. Эникаст-адреса имеют тот же формат, что и уникаст, отличаясь только тем, что один адрес присутствует на нескольких интерфейсах.
- Мультикаст (англ. multicast) — используется группой хостов, присоединившихся к определённой рассылке. Пакет, отправленный на мультикаст-адрес, доставляется на все интерфейсы, входящие в соответствующую группу. В IPv6 не реализован механизм широковещательной передачи (англ. broadcast) — его функции заменяет мультикаст-адрес группы всех узлов ff02::1, но использование этого адреса не рекомендуется; обычно применяют специализированные группы.
Форматы адресов
IPv6-адрес состоит из 128 битов[1]. Для разных методов адресации определены различные форматы, где 128 бит делятся на группы, позволяющие выделять префиксы сети и специальные области.
Уникаст- и эникаст-адреса обычно состоят из двух логических частей: 64 бит префикса сети, используемых для маршрутизации, и 64 бит идентификатора интерфейса.
| Область | Префикс маршрутизации | Идентификатор подсети | Идентификатор интерфейса |
|---|---|---|---|
| Биты | 48 (или больше) | 16 (или меньше) | 64 |
Префикс сети (объединение префикса маршрутизации и идентификатора подсети) расположен в старших 64 битах адреса. Длина префикса маршрутизации может быть разной, а уменьшение его длины увеличивает количество возможных подсетей. Младшие 64 бита формируют идентификатор интерфейса, который может автоматически формироваться по адресу MAC с помощью формата модифицированный EUI-64, быть получен через DHCPv6, сгенерирован случайным образом или присвоен вручную.
Адреса локальной уникальности аналогичны приватным адресам IPv4.
| Область | Префикс | L | Случайные биты | Идентификатор подсети | Идентификатор интерфейса |
|---|---|---|---|---|---|
| Биты | 7 | 1 | 40 | 16 | 64 |
Префикс всегда равен 11111102. Бит L указывает глобальную или локальную назначенность, 40 бит «случайно» выбираются при генерации данного /48-префикса.
Адрес англ. link-local также базируется на идентификаторе интерфейса, но использует иной формат префикса.
| Область | Префикс | Нули | Идентификатор интерфейса |
|---|---|---|---|
| Биты | 10 | 54 | 64 |
Префикс фиксирован: 11111110102. 54 следующих бита — нули (всегда одинаковый префикс fe80::/64), что делает такие адреса не маршрутизируемыми.
Мультикаст-адреса формируются по разным форматам в зависимости от назначения.
| Область | Префикс | flg | sc (scope) | ID группы |
|---|---|---|---|---|
| Биты | 8 | 4 | 4 | 112 |
Префикс для всех мультикаст-адресов — 111111112. Назначение битов флагов отражено в таблице:
| Бит | Флаг | Значение при 0 | Значение при 1 |
|---|---|---|---|
| 8 | зарезервировано | зарезервировано | зарезервировано |
| 9 | R (rendezvous, точка встречи)[3] | не встроен | встроен |
| 10 | P (префикс)[4] | нет информации о префиксе | адрес на основе префикса сети |
| 11 | T (transient, временный)[1] | известная группа | динамически присвоенная |
4-битное поле «sc» определяет область действия адреса.
Мультикаст-адрес "нода по запросу" (Solicited-Node multicast) формируется на основе последних 24 бит уникаст-/эникаст-адреса интерфейса.
| Область | Префикс | flg | sc | Нули | Единицы | Уникаст-адрес |
|---|---|---|---|---|---|---|
| Биты | 8 | 4 | 4 | 79 | 9 | 24 |
4-битное поле sc=00102 (англ. link-local). Для группы формируются адреса "ff02::1:ffXX:XXXX", где XX:XXXX — 24 младших бита уникаст-/эникаст-адреса.
Представление
IPv6-адрес записывается как восемь групп по четыре шестнадцатеричных цифры (одна группа = 16 бит или два октета[5][6]), разделённых двоеточиями:
- 2001:0db8:85a3:0000:0000:8a2e:0370:7334
Существует гибкость в способах сокращения записи:
- Начальные нули в группе могут быть опущены (2001:0db8::0001:0000 → 2001:db8::1:0)
- Наиболее длинная последовательность полностью нулевых групп заменяется двумя двоеточиями ("::"), например, 2001:db8:0:0:1:0:0:1 → 2001:db8::1:0:0:1. Если таких последовательностей несколько, сокращается самая левая.
- Сокращение "::" не применяется для одной нулевой группы (например, 2001:db8:0:1:1:1:1:1 → 2001:db8:0:1:1:1:1:1)
Такое представление позволяет записывать адреса очень коротко: ::1 (адрес), :: (не определённый адрес).
Также в переходных сценариях допускается смешанная запись, в которой последние 32 бита адреса записываются по точечной десятичной нотации IPv4, например, ::ffff:192.0.2.128.
Сеть IPv6 обозначается в виде блока из смежных адресов, размер которого всегда — степень двойки. Запись блока выполняется по нотации CIDR: начало блока, слэш и длина префикса в битах, например, 2001:db8:1234::/48 определяет диапазон от 2001:db8:1234:0000:0000:0000:0000:0000 до 2001:db8:1234:ffff:ffff:ffff:ffff:ffff. Префикс узла может быть записан как 2001:db8:a::123/64.
Для корректной работы IPv6-литералов в URI и URL адрес заключают в квадратные скобки: http://[2001:db8:85a3:8d3:1319:8a2e:370:7348]/; с портом — https://[2001:db8:85a3:8d3:1319:8a2e:370:7348]:443/[7].
В операционных системах Microsoft Windows, где двоеточие запрещено в UNC-путях, введена запись адреса как доменного имени — 2001-db8-85a3-8d3-1319-8a2e-370-7348.ipv6-literal.net. Если есть индекс зоны, он добавляется с буквой s (fe80--1ff-fe23-4567-890as3.ipv6-literal.net).
Адреса с локальной областью действия, например, для уточнения интерфейса могут дополняться индексом зоны через знак процента, например: fe80::1ff:fe23:4567:890a%eth2 или fe80::1ff:fe23:4567:890a%3[8]. При использовании в URI символ % записывается как %25.
Области действия (scopes)
Каждый IPv6-адрес, кроме не определённого (::), имеет область действия (scope), определяющую, где он уникален и валиден[8].
Для уникаст-адресов различаются как минимум два scope: локальный для сегмента и глобальный. Адреса имеют область действия локальной сети; остальные — глобальную.
Для мультикаста область действия кодируется в поле scope во втором октете, например:
- 0x1 — interface-local
- 0x2 — link-local
- 0x5 — site-local
- 0x8 — organization-local
- 0xe — global
Адресное пространство
Выделением пространства IPv6-адресов управляет IANA[9] через делегирование крупным региональным регистрам и далее — операторам и абонентам. На июнь 2024 года для Интернет-адресации выделен только диапазон 2000::/3; остальные диапазоны зарезервированы или имеют специальные назначения[10].
Регистраторы выделяют блоки /32—/48 провайдерам, которые затем делят их абонентам, часто по /56 и /64[11].
В отличие от IPv4, организации получают гораздо более значительные по размеру блоки, обычно /48, содержащие 280 адресов.
Для независимых пользователей предусмотрен диапазон 2001:678::/29. Для точек обмена трафиком — 2001:7f8::/29[12]. Особые адреса выделены и для других целей.
| CIDR-блок | Первый адрес | Последний адрес | Количество адресов | Назначение | Описание |
|---|---|---|---|---|---|
| ::/0 | :: | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | 2128 | Маршрутизация | Маршрут по умолчанию |
| ::/128 | :: | :: | 1 | Программное обеспечение | Не определённый адрес |
| ::1/128 | ::1 | ::1 | 1 | Хост | Loopback-адрес — возвращает трафик самому себе |
| ::ffff:0:0/96 | ::ffff:0.0.0.0 | ::ffff:255.255.255.255 | 232 | Программное обеспечение | Адреса IPv4, сопоставленные с IPv6 |
| fc00::/7 | fc00:: | fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | 2121 | Частные сети | Уникальные локальные адреса |
| fe80::/10 | fe80:: | fe80::ffff:ffff:ffff:ffff | 264 | Локальный канал (link) | Link-local адрес |
| ff00::/8 | ff00:: | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | 2120 | Глобальная сеть (Internet) | Мультикаст-адрес |
Автоматическая настройка адреса
Каждый узел IPv6 формирует адрес на каждом активном интерфейсе даже при отсутствии глобально маршрутизируемых адресов, используя механизм модифицированного EUI-64 и протокол обнаружения соседей (NDP)[13].
Модифицированный EUI-64
Наиболее часто идентификатор интерфейса формируется из 48-битного MAC-адреса путём вставки двух байтов FFFE посередине; далее инвертируется 7-й бит (universal/local) в структуре EUI-64. Это обеспечивает уникальность идентификатора[1].
Обработка дублирования адресов
Перед использованием уникаст-адреса интерфейс проверяет его уникальность протоколом NDP через сообщения соседних запросов/ответов (ICMPv6) — до подтверждения адрес считается временным.
Временные адреса
Во избежание слежения по постоянным идентификаторам используются временные адреса с псевдослучайным идентификатором интерфейса, действительные в течение ограниченного времени[14].
Стабильные приватные адреса
Подобные адреса предназначены для повышения приватности: они стабильны в пределах одной сети, но при переходе в другую — меняются[15].
Выбор адреса по умолчанию
В большинстве ОС интерфейс получает несколько адресов единовременно (link-local, глобальный, временные). Выбор источника и назначения регулируется алгоритмом RFC 6724, где предпочтение отдается адресам меньшего scope и с большим приоритетом[16].
Система доменных имен
В DNS сопоставление имён хостов IPv6 осуществляется через записи AAAA[17]. Для обратного поиска резервируется зона ip6.arpa с иерархией по 4 битам.
| NAME | Имя домена |
| TYPE | AAAA (28) |
| CLASS | Internet (1) |
| TTL | Время жизни (сек) |
| RDLENGTH | Длина поля RDATA |
| RDATA | 128-битный IPv6-адрес в сетевом порядке байтов |
Примечания
Литература
- Beijnum, Iljitsch van. Running IPv6 : [англ.]. — 2005. — ISBN 978-1-59059-527-5.
- Elz, Robert A compact representation of IPv6 addresses (англ.). IETF (1 апреля 1996). — «Предлагается альтернативный кодированный (base-85) способ представления любого IPv6-адреса.» Дата обращения: 10 июня 2024.