Получение IPv6 адреса с помошью EUI-64
Механизм EUI-64 позволяет хосту в IPv6 самостоятельно генерировать себе идентификатор интерфейса – то есть вторую половину IPv6 адреса. Перед прочтением этой статьи следует ознакомиться со структурой IPv6 адреса, так же, рекомендуется прочесть материал по автоматической конфигурации адресов в IPv6.
Когда устройство получает адрес в процессе автоматической конфигурации (SLAAC), оно получает не непосредственный готовый IP адрес, состоящий из 128 бит, а только префикс и сеть. Например, оно может получить следующую информацию:
- Сеть 2001:0DB8:0001:0001:0000:0000:0000:0000
- Префикс /64
- Адрес шлюза 2001:0DB8:001:001:0000:0000:0000:0001
Видно, что мы знаем только сеть, в которой находимся, а не получаем IP адрес полностью. Оставшиеся 64 бита (справа) устройство заполняет самостоятельно либо случайными числами, либо с помощью алгоритма EUI-64.
EUI-64
64 бита для идентификатора интерфейса формируются на основании MAC адреса устройства. MAC адрес состоит из 48 бит. Для получения из него 64-битного идентификатора, выполняется следующий алгоритм:
- MAC адрес делится на две части по 24 бита каждая.
- Между этими частями вставляются шестнадцатеричные цифры FFFE.
- Седьмой по порядку бит полученного адреса меняется на противоположный (1 – на 0, 0 – на единицу)
Пример
Устройство получило в процессе автоконфигурации информацию о том, что оно находится в сети 2001:0DB8:0001:0001::/64. Идентификатор интерфейса строится на основании MAC адреса. Допустим, MAC у устройства 1234.5678.9ABC. По приведённому выше алгоритму, адрес делится на две части (1234.56 и 78.9ABC), между ними вставляется FFFE – получаем адрес 1234:56FF:FE78:9ABC. В соответствии с третьим шагом, нам надо поменять седьмой бит. Каждая шестнадцатеричная цифра – это 4 бита, переведём первые две цифры (12) в двоичный вид, получится 0001 0010. В этой последовательности седьмой бит «1» поменяем на противоположный, получится 0001 0000, что соответствует шестнадцатеричным цифрам 10. Вернем цифры на место и получим готовый идентификатор интерфейса по EUI-64 – 1034:56FF:FE78:9ABC. Этот идентификатор вместе с полученной сетью и станет адресом нашего устройства в результате автоконфигурации. Итоговый адрес 2001:0DB8:0001:0001:1034:56FF:FE78:9ABC/64.
Комментарии
Павел (не проверено)
пн, 01/16/2017 - 05:13
Постоянная ссылка (Permalink)
Материал очень интересно и понятно преподнесен, но в этой главе приходится долго изучать так как все перемешано. Приходится прыгать и снизу в верх, в центр, в верх и т.д. чтобы понять все основательно.
Hyper666 (не проверено)
ср, 08/28/2019 - 08:46
Постоянная ссылка (Permalink)
ИМХО, все норм описано, про EIU 64 есть на хабре вот там вообще не понятно
Добавить комментарий