IPv6-адрес
IPv6-адрес (англ. Internet Protocol Version 6 address) — цифровая метка, используемая для идентификации сетевого интерфейса компьютера или любого другого сетевого узла, работающего в IPv6-сети. В отличие от обычных IP-адресов вроде 192.168.0.3, IPv6-адрес имеет вид вроде 2001:0db8:85a3:0000:0000:8a2e:0370:7334.
Протокол IPv6 призван заменить протокол IPv4, широко используемый в сети Интернет. В отличие от IPv4, в котором используются 32-битные адреса, в IPv6 используются адреса длиной 128 бит. Поэтому IPv6 обладает значительно большим адресным пространством, нежели IPv4.
Типы IPv6-адресов
[править | править код]IPv6-адреса можно классифицировать по способу адресации: одноадресные (Unicast), Anycast и групповые (Multicast)[1].
- Unicast адреса идентифицируют только один сетевой интерфейс. Протокол IPv6 доставляет пакеты, отправленные на такой адрес, на конкретный интерфейс.
- Anycast адреса назначаются группе интерфейсов, обычно принадлежащих различным узлам. Пакет, отправленный на такой адрес, доставляется на один из интерфейсов данной группы, как правило наиболее близкий к отправителю с точки зрения протокола маршрутизации.
- Multicast адрес также используется группой узлов, но пакет, отправленный на такой адрес, будет доставлен каждому узлу в группе.
В IPv6 не реализованы широковещательные адреса. Традиционная роль широковещательной рассылки реализована с помощью групповой рассылки на адрес ff02::1, однако использование этой группы не рекомендуется.
Структура адреса
[править | править код]IPv6-адрес состоит из 128 бит, которые, в зависимости от типа адреса, делятся на различные логические группы.
Структура Unicast и Anycast адреса
[править | править код]Unicast и Anycast адреса как правило состоят из двух логических частей: 64-битного префикса сети, используемого для маршрутизации и 64-битного идентификатора интерфейса, используемого для идентификации сетевого интерфейса узла.
биты | 48 (или больше) | 16 (или меньше) | 64 |
---|---|---|---|
поле | routing prefix | subnet id | interface identifier |
Префикс сети (комбинация полей префикс маршрутизации (routing prefix) и идентификатор подсети (subnet id)) содержится в старших 64 битах адреса. Размер префикса маршрутизации может увеличиваться, отнимая биты адреса у поля subnet id. Биты поля subnet id могут использоваться сетевым администратором для создания подсетей. Поле идентификатор интерфейса (interface identifier) может быть получено одним из способов:
- автоматически сгенерирован из MAC-адреса с помощью модифицированного EUI-64;
- получен от DHCPv6 сервера;
- автоматически установлен случайным;
- настроен вручную.
Локальные (англ. Link-local) адреса также основываются на идентификаторе интерфейса, но используют другой формат префикса сети.
биты | 10 | 54 | 64 |
---|---|---|---|
поле | prefix | нули | interface identifier |
Поле prefix содержит двоичное значение 1111111010, а 54 нуля делают префикс сети одинаковым для всех сетей, что делает локальные адреса немаршрутизируемыми.
Структура Multicast адреса
[править | править код]Multicast адрес формируется в соответствии с несколькими правилами, в зависимости от применения.
биты | 8 | 4 | 4 | 112 |
---|---|---|---|---|
поле | prefix | flg | sc | group ID |
Поле prefix содержит двоичное значение 11111111 в любом multicast адресе.
Запись адреса
[править | править код]IPv6 адрес, состоящий из 128 битов, можно представить в виде восьми групп из четырёх шестнадцатеричных цифр, по 16 битов на группу. В тексте они разделяются двоеточием:
- 2001:0db8:85a3:0000:0000:8a2e:0370:7334
Стандарт RFC 5952 определяет вид IPv6 адреса в тексте, определяя однозначный способ записи адреса в тексте максимально коротким способом, удобным при этом для символьной обработки программами:
- В записи используются латинские буквы только нижнего регистра. Несмотря на то, что шестнадцатеричные цифры сравниваются по коду символа без учёта регистра, IETF предлагает использовать только строчные буквы, например 2001:db8::1 вместо 2001:DB8::1.
- Незначащие нули в каждом поле можно опустить, однако каждая группа должна иметь хотя бы один знак, даже если она состоит из одних нулей. Например, 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:0:1::1. Символ "::" не может использоваться для сокращения последовательности из только одного нулевого поля, то есть 2001:db8:0000:1:1:1:1:1 сокращается до 2001:db8:0:1:1:1:1:1, но не до 2001:db8::1:1:1:1:1.
Эти правила позволяют очень коротко записывать некоторые распространённые адреса. Например, localhost 0:0:0:0:0:0:0:1 записывается как ::1, а незаданный адрес 0:0:0:0:0:0:0:0 как ::.
Для плавного перехода от IPv4 к IPv6 предусмотрена специальная нотация, при которой IPv4-адреса могут быть записаны в IPv6 таким образом: последние 32 младших бита записываются как IPv4-адрес, а перед ними идут только нулевые поля и одно единичное, записанные в нотации IPv6. Так, IPv6-адрес ::ffff:c000:0280, соответствующий IPv4-адресу 192.0.2.128, записывается как ::ffff:192.0.2.128.
Символ ":" может быть неправильно интерпретирован в других синтаксисах, в частности в URI и URL. Двоеточие традиционно используется для завершения пути к хосту перед номером порта, потому IPv6-адрес ограничивается квадратными скобками, например
- http://[2001:db8:85a3:8d3:1319:8a2e:370:7348]/
или вариант с портом:
- https://[2001:db8:85a3:8d3:1319:8a2e:370:7348]:443/.
Для адресов с областью действия, отличной от глобальной, и, в частности, для адресов локальной связи, выбор сетевого интерфейса для отправки пакета может зависеть от того, к какой зоне принадлежит адрес: один и тот же адрес может быть действительным в разных зонах и использоваться разными хостами в каждой из этих зон. Даже в том случае, если адрес не используется в разных зонах, префиксы для адресов в этих зонах могут быть идентичными, что мешает операционной системе выбрать исходящий интерфейс, основываясь только на информации в таблице маршрутизации (основанной на префиксах). Чтобы устранить такую неоднозначность, к адресу при помощи знака "%" должен быть добавлен индекс зоны, синтаксис которого в общем случае определяется реализацией. Например, локальный адрес
- fe80::1ff:fe23:4567:890a
может быть записан как
- fe80::1ff:fe23:4567:890a%eth2
или
- fe80::1ff:fe23:4567:890a%3.
Первый вариант (с помощью указания имени интерфейса) распространён в Unix-подобных системах, второй вариант же является стандартными синтаксисом в Windows. Этот же вариант является стандартным, и потому должен поддерживаться во всех системах.
Подсети
[править | править код]Сеть IPv6 использует блоки адресов, представляющие собой непрерывную группу адресов размером равным одной из степеней двойки. Согласно нотации CIDR, эти блоки обозначаются первым адресом в блоке (оканчивающимся нулями), косой чертой "/" и десятичным значением, равным числу бит, которое занимает префикс. Префикс определяется левой ненулевой частью первого адреса. Например, сеть, записанная как 2001:db8:1234::/48, имеет префикс 2001:db8:1234, начинается с адреса 2001:db8:1234:0000:0000:0000:0000:0000 и заканчивается на 2001:db8:1234:ffff:ffff:ffff:ffff:ffff.
Префикс сети может быть указан вместе с адресом, как например адрес 2001:db8:a::123 в подсети 2001:db8:a::/64 может быть записан как 2001:db8:a::123/64.
Размер блока, то есть число адресов в нём, зависит от размера префикса. Например, блок с префиксом длины 48 бит будет содержать 2128 − 48 = 280 адресов. Уменьшение длины префикса позволит вмещать больше адресов.
См. также
[править | править код]- IPv6
- IPv4
- IPv5
- Teredo — протокол инкапсуляции IPv6 в IPv4 UDP
- 6to4 — протокол инкапсуляции IPv6 в IPv4
- 6rd — механизм перехода с IPv4 на IPv6 в пределах одной сети
- TCP/IP
- SCTP
- Международный день IPv6
Примечания
[править | править код]- ↑ R. Hinden, S. Deering (February 2006) IP Version 6 Addressing Architecture Архивная копия от 7 февраля 2012 на Wayback Machine, IETF. RFC 4291.