Interested Article - IPv6-адрес
- 2020-01-25
- 2
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 ) .
- 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
Стандарт определяет вид 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 бит будет содержать 2 128 − 48 = 2 80 адресов. Уменьшение длины префикса позволит вмещать больше адресов.
См. также
- IPv6
- IPv4
- IPv5
- Teredo — протокол инкапсуляции IPv6 в IPv4 UDP
- 6to4 — протокол инкапсуляции IPv6 в IPv4
- 6rd — механизм перехода с IPv4 на IPv6 в пределах одной сети
- TCP/IP
- SCTP
- Международный день IPv6
Примечания
- R. Hinden, S. Deering (February 2006) от 7 февраля 2012 на Wayback Machine , IETF . .
- 2020-01-25
- 2