Адреса протокола IPv6 — локальный и глобальный тип

Протокол IPv6 это протокол сетевого уровня, предназначенный для передачи данных. Он призван заменить протокол IPv4, в котором есть проблема нехватки IP адресов. Протокол  IPv6 несовместим с IPv4, основное отличие в том, что длина IP  адреса в протоколе IPv4 это 4 байта, а в протоколе IPv6 16 байт. IP адрес в протоколе IPv4 записываются в виде четырех десятичных чисел разделенных двоеточиями, числа могут быть от 0 до 255. Например, 77.88.8.7.

Адреса IPv6

Длина адреса IPv6 гораздо больше 16 байт или 128 бит, и использовать такую же схему записи как и для адреса IPv4 неудобно, адрес был бы слишком длинным. Вместо этого предложили использовать запись следующего вида: 8 групп шестнадцатеричных чисел отделенных друг от друга двоеточиями, каждое число состоит из четырех шестнадцатеричных цифр и значение может быть от 0 до ffff. Например: 2a02:6b8:0892:ad61:59a2:3149:c5a0:67a4/64.

Префикс IPv6

IPv4 IP  адрес состоит из двух частей: адрес подсети и адрес хоста. Для того, чтобы определить, где в IP  адресе, адрес сети, а где адрес хоста, используется так называемая маска подсети.  Протокол IPv6  использует похожие понятия, но с другими названиями.

IPv6 адрес также состоит из двух частей, адрес сети и адрес компьютера, но адрес сети называется префиксом IPv6, а адрес хоста называется адресом интерфейса. То, что в IPv4 называлось маской подсети в протоколе IPv6 называется длиной префикса.

Длина префикса в протоколе IPv6 показывает, сколько цифр в IP адресе относится к адресу сети, а сколько к адресу компьютера.

Вот пример записи префикса в IPv6: 2a02:6b8:0892:ad61:59a2:3149:c5a0:67a4/64,   маска подсети в IPv4 также может записываться в подобном формате. Кроме этого маска подсети в IPv4 может быть записана в десятичном формате, но в IPv6 десятичный формат не используется.

Длина префикса 64 означает, что первые 64 бита IPv6 адреса относится к адресу сети, а оставшиеся 64 бита к адресу интерфейса или адресу хоста.

Длина префикса 64

Вычисления префикса IPv6

Правила вычисления адреса сети или префикса, как он называется в протоколе IPv6, точно такие же, как и в протоколе IPv4. Необходимо перевести адрес в двоичную форму, отсчитать количество бит которое, соответствует длине префикса, эти биты IP адреса оставить без изменения, а остальные заменить нулями.

Чаще всего в IPv6 можно использовать упрощенную процедуру. Если длина префикса кратна 16, то префикс заканчивается, как раз на одной из групп шестнадцатеричных чисел, поэтому мы можем оставить без изменения те шестнадцатеричные числа, которые входят в префикс, а всё остальное заменить нулями.

Например, если длина префикса /64, то мы можем первые четыре группы шестнадцатеричных чисел оставит без изменения, остальные заменить нулями.

Длина префикса 16

Более сложный случай, если длина префикса кратна 4, в этом случае префикс включает полностью какую-либо шестнадцатеричную цифру, поэтому мы оставляем без изменения всю начальную часть IP адреса, до той цифры на который заканчивается префикс, а  оставшуюся часть заменяем нулями.

Например: длина нашего префикса 52 бита, первые три группы шестнадцатеричных чисел заканчиваются на границе 48 бит, длина нашего префикса 52 на 4 бита больше, соответственно в префикс включается еще одна шестнадцатеричная цифра, здесь у нас находиться цифра а, поэтому в адрес сети мы включаем всю начальную часть IPv6 адреса, в том числе и эту цифру а, а все остальные цифры заменяют нулями.

Длина префикса кратна 4

Так как длина IPv6 адреса очень большая, и таких адресов очень много, то есть возможность использовать именно такие адреса, которые нам удобны. Поэтому сейчас на практике чаще всего используются префиксы длина которых кратна 16 или 4. Однако что делать если вы столкнетесь ситуации когда длина префиксы не кратна 4?

Например, длина нашего префикса 54, нам придется перевести адрес IPv6 в двоичную форму, для простоты мы можем переводить не весь адрес, а только ту часть в которой заканчивается наш префикс. (картинка ниже)

Длина префикса не кратна 4

Например, префикс длиной 54 заканчивается в группе цифр ad61, нам нужно перевести это число из шестнадцатеричного формата в двоичный. Выполнить логическое И (AND) с префиксом, получиться вот такой результат:

Длина префикса не кратна 4 и AND

мы переводим его в обратно 16-ричный формат получилось ac00, все остальные группы цифр заменяются на 0. (картинка ниже)

Длина префикса не кратна 4 перевод обратно

Правила сокращения IPv6 адресов

Несмотря на то, что мы записываем IPv6 адреса с помощью шестнадцатеричных цифр, адреса все равно получаются очень длинными, поэтому были выработаны правила сокращения IP адресов для повышения удобства их записи.

Первое правило сокращения адресов IPv6 заключается в том, что ведущие нули в каждой группе чисел разделенных двоеточием, можно сократить. Например, мы можем удалить вот эти нули. (картинка ниже)

Сокращаем адреса ipv6

Адрес стал заметно короче, его удобнее записывать.

Но мы можем пойти дальше, следующее правило заключается в том, что если в нашем адресе IPv6 есть две или больше идущих подряд групп нулей, то эти группы можно пропустить. Например, вот эти две группы нулей мы можем пропустить, и у нас получится два двоеточия. (картинка ниже)

правила сокращения ip адресов

Это позволяет получить еще более короткую форму записи адреса IPv6. Данное правило особенно полезно для записи префиксов IPv6 или адресов подсети, в которых очень много нулей, все эти нули можно сократить, и префикс будет записываться гораздо короче. (картинка ниже)

Префикс IPv6

Неправильные сокращения

Однако при сокращении IPv6 адресов нужно быть очень внимательными, и не совершать ошибки. Давайте рассмотрим, какие ошибки случаются чаще всего.

Во-первых нельзя сокращать нули, которые идут в конце группы цифр, например, нельзя удалить вот эти 3 нуля. (картинка ниже)

Удаление нулей в конце группы

Потому что после сокращения не понятно, что должно быть вот в этой группе, должны ли быть нули перед единицей или после нее. (картинка ниже)

Удаление нулей в конце группы ipv6

Допускается сокращение только ведущих нулей в группе, поэтому такое сокращение неправильное. Правильное сокращение вот такое, мы удаляем ведущие нули, а там где нули находятся в конце группы, их необходимо оставить. (картинка ниже)

Удаление нулей в конце группы

Другая проблема возможна, если в нашем адресе IPv6, есть несколько групп идущих подряд нулей. Например, вот такой IP  адрес здесь две подряд идущих группы нулей, и три подряд идущих группы нулей. (картинка ниже)Пропуск двух групп нулей ipv6

Если мы сократим обе группы, то никак нельзя понять куда и сколько нулей вставлять. Правильный вариант сокращения нужно пропустить ту группу, которая содержит больше всего подряд идущих нулей, в нашем случае это вторая группа, так как в ней три подряд идущих группы нулей, а в первой части мы просто сокращаем ведущие нули получаются вот такая форма записи.

Пропуск двух групп нулей

Типы адресов IPv6

Теперь давайте рассмотрим, какие бывают типы адресов IPv6. Точно так же как и в IPv4, есть индивидуальный (unicast) адрес, который соответствуют одному компьютеру, и групповой (multicast) адрес, который соответствует нескольким компьютерам сети.

В IPv6 появился новый тип адресов, который называется произвольный (anycast), это такой тип адреса, который может быть назначен нескольким компьютерам в сети, точно также какие групповой, но в отличие от группового, когда мы отправляем сообщение на anycast адрес его получает только один из компьютеров получателей. В отличии от IPv4 в протоколе IPv6, нет широковещательных адресов, вместо них используются групповые адреса специального вида.

Область действия IP-адресов

IPv6 адреса также различаются по области действия. Глобальный адрес IPv6 действует в интернете. Глобальные адреса должны быть уникальными в интернете, поэтому адреса IPv6 распределяются организации IANA.

Локальные адреса IPv6 (unique local address), могут использоваться внутри организации без обращения в IANA, такие адреса не маршрутизируются в интернет, поэтому ничего страшного не произойдет, если несколько организаций будут использовать одни и те же локальные адреса. Локальные адреса IPv6 это аналоги приватных или частных адресов IPv4.

В IPv6 есть локальные адреса канала связи (link-local address), которые вообще не маршрутизируются, они назначаются автоматически и действуют в пределах одного сегмента сети, одного коммутатора или несколько связанных между собой коммутаторов. Через маршрутизатор сообщения с такими IPv6 адресами не проходят.

Раньше, в стандарте протокола IPv6, был определён локальный адрес площадки (site local address), но сейчас такие типы адресов уже не используются, и они исключены из стандарта, поэтому такие адреса мы рассматривать не будем.

Начальные цифры адресов IPv6

Область действия адреса определяются по его начальным цифрам. Глобальный адрес начинается с цифр 2 или 3. На самом деле глобальные адресом могут начинаться с любых цифр, кроме тех, которые используются для других типов адресов. Однако сейчас, на практике, распределяются глобальные адреса, которые начинаются только с 2 или 3. Это сделано для того, чтобы избежать не эффективного распределения адресов IPv6, как это происходило при начальном распределение адресов IPv4.

Начальные цифры адресов IPv6

Локальные адреса, которые действуют только в рамках одной организации, начинаются с цифр FD. Локальный адрес канала связи действующий в рамках одного сегмента сети, начинается с цифр FE80, и групповые IPv6 адреса начинаются с цифр FF.

Структура глобального IPv6 адреса

Подробнее рассмотрим структуру адресов IPv6 каждой области действия. Глобальный адрес IPv6, состоит из двух частей, адрес сети и адрес интерфейса.

Структура глобального IPv6 адреса

Длина адреса сети и идентификаторов интерфейса — 64 бита. Адрес сети в свою очередь делится на две части, глобальный префикс маршрутизации, длина которого 48 бит, глобальные префиксы должны быть уникальными и они распределяются IANA, среди организаций. Следующие 16 бит могут использоваться организацией, для того чтобы разбить сеть на отдельные подсети, Пример, глобального IP адреса он начинается с двойки: 2a02:06b8:0000:0001:0000:0000:feed:a11

Структура локального IPv6 адреса

Локальный адрес IPv6 начинается цифр FD. Здесь адрес подсети составляет 64 бита, и 64 бита выделено на адрес интерфейса, то есть адрес компьютера.

Структура локальный IPv6 адреса

В отличии от глобальных адресов, для формирования локального адреса IPV6, организации не обязательно обращаться в агентства IANA, такие адреса не распространяются в интернет, и их можно формировать самостоятельно.

Адрес сети в этом случае состоит из двух частей, глобальный идентификатор организации длиной 40 бит, идентификатор может быть любой на выбор организации, однако рекомендуется использовать специальные правила выбора этого глобального идентификатора, таким образом, что с очень высокой вероятностью этот глобальный идентификатор будет уникальным для разных компаний.

Эти правила описаны в документе RFC 4193. Если вы выбрали глобальный идентификатор другим способом, не так как описано в этих правилах, то ничего страшного не произойдет. Однако, наши сети развиваются, возможна такая ситуация, что одна организация поглощает другую организацию, поэтому очень удобно, если глобальные идентификаторы в разных организациях отличаются. Тогда сети разных организаций очень легко объединять между собой.

Следующие 16 бит, так же как и в случае глобального адреса используются для того, чтобы разбить сеть IPv6 на отдельные подсети, и могут использоваться организацией по своему усмотрению. Пример локального адреса IPv6: fde8:86a5:fc91:0001:59a2:3149:c5a0:67a4.

Локальный адрес канала связи, который действует в рамках одного сегмента сети, начинается с цифр FE80, так как пакеты из таких адресов не проходят через маршрутизаторы, то в адресе подсети установлены нули.

Структура локального адреса

И последние 64 бита это идентификатор интерфейса. Вот здесь показан пример локального адреса канала связи:  fe80:0000:0000:0000:59a2:3149:c5a0:67a4

Специальные IPv6 адреса

Также как и IPv4 в протоколе IPv6 есть адреса специального вида, примерно с тем же назначением, что и в IPv4. Адрес состоящей из одних нулей с префиксом (::/128) сокращенная запись мы пропускаем все нули просто два двоеточия (::) — это адрес текущего хоста, он используется, если компьютер не знают свой IPv6 адрес, но ему необходимо передавать данные по сети. Например, для получения адреса по протоколу DHCP.

Адрес, который состоит из всех нулей с префиксом ноль (::/0) — это маршрут по умолчанию, обратная петля или lookback интерфейс аналог адреса 1270.0.1 в IPv4 — это адрес, который состоит из всех нулей, и только последняя цифра единица, в сокращенном виде записывается ::1/128.

В IPv6 нет широковещательных адресов, вместо них используются групповые адреса IPV6.  Например, такой групповой адрес (ff02::1) означает, все узлы в канале связи, а вот такой (ff02::2) IPv6 адрес это все маршрутизатор в канале связи.

Итоги

Мы рассмотрели формат адресов IPv6. В отличии от адресов IPv4, длина адреса IPv6 16 байт. Адреса очень длинные, поэтому они записываются в виде 8 шестнадцатеричных чисел разделенных двоеточиями, каждое число состоит из 4 цифр.

Есть три типа адресов IPv6: индивидуальный, групповой были в IPv4, произвольный новый тип адресов IPv6. Кроме этого IPv6 не использует широковещательные адреса, которые были в IPv4. Также адреса IPv6 различаются по областям действия:

  • глобальный, который используется в интернет;
  • локальный, который используется внутри сети одной или нескольких организаций, но не используется в интернет, это аналог частных адресов IPv4;
  • локальный адрес канала связи.
Ссылка на основную публикацию