Как стать автором
Обновить

Операции над IPv6-адресами — краткий экскурс

Время на прочтение4 мин
Количество просмотров7.7K
Автор оригинала: Wendell Odom

Введение

Данная статья является переводом конкретного раздела, описывающего базовые операции над IPv6-адресами из учебника CCNA 200-301 Volume 1 от автора Wendell Odom.

Сокращение IPv6 адресов

Базовые правила:

  • Два двоеточия подряд - это 2 или более гекстета адреса с нулями.

  • Их "::" можно использовать всего один раз на весь IPv6-адрес.

    Можно так 3124::DEAD:CAFE:0:0:0 или так 3124:0:0:DEAD:CAFE::, но нельзя вот так 3124::DEAD:CAFE::

    Например: 210F::CCCC:0:0:D - считаем, у нас 210F - первый гекстет, далее двойное двоеточие, далее идут CCCC:0:0:D - это еще 4 гекстета, итого 5 гекстетов. Так всего в IPv6-адресе 8 гекстетов, то 8-5=3 гекстета недостающих, заполняем их нулями и получаем 210F:0000:0000:0000:CCCC:0000:0000:000D

  • Если перед буквами (hex) или цифрами, кроме нуля в гекстете идут нули, то их можно отсекать.

  • Если нули идут после букв (hex) или цифр - их оставляем , иначе после обратного процесса мы получим другой адрес.
    Например: ABCD:0020 - в сокращенном виде выглядит как ABCD:20, а ABCD:2000 - не сокращается.

Разберем несколько примеров:

Дано

С сокращением

2340:0000:0010:0100:1000:ABCD:0101:1010

2340:0:10:100:1000:ABCD:101:1010

30A0:ABCD:EF12:3456:0ABC:B0B0:9999:9009

30A0:ABCD:EF12:3456:ABC:B0B0:9999:9009

2222:3333:4444:5555:0000:0000:6060:0707

2222:3333:4444:5555:0:0:6060:707

3210:0000:0000:0000:0000:0000:0000:0000

3210::

210F:0000:0000:0000:CCCC:0000:0000:000D

210F::CCCC:0:0:D

34BA:000B:000B:0000:0000:0000:0000:0020

34BA:B:B::20

FE80:0000:0000:0000:DEAD:BEFF:FEEF:CAFE

FE80::DEAD:BEFF:FEED:CAFE

FE80:0000:0000:0000:FACE:BAFF:FEBE:CAFE

FE80::FACE:BAFF:FEBE:CAFE

Нахождение части подсетей IPv6-адреса

Допустим, на ПК клиента установлен такой адрес: 2000:1234:5678:9ABC:1234:5678:9ABC:1111/64. Так как максимальный префикс для IPv6 =128, то 64 - есть половина - то есть 4 гекстета из 8, таким образом, 2000:1234:5678:9ABC - часть подсети, а 1234:5678:9ABC:1111 - часть хостов.

Для написания номера подсети приводим часть хостов к нулю и получаем такое: 2000:1234:5678:9ABC:0000:0000:0000:0000/64, а в сокращенном виде: 2000:1234:5678:9ABC::/64

Разберем несколько примеров:

Дано

Подсеть

С сокращением

2340:0:10:100:1000:ABCD:101:1010/64

2340:0:10:100:0000:0000:0000:0000/64

2340:0:10:100::/64

30A0:ABCD:EF12:3456:ABC:B0B0:9999:9009/64

30A0:ABCD:EF12:3456:0000:0000:0000:0000/64

30A0:ABCD:EF12:3456::/64

2222:3333:4444:5555::6060:707/64

2222:3333:4444:5555:0000:0000:0000:0000/64

2222:3333:4444:5555::/64

3210::ABCD:101:1010/64

3210:0000:0000:0000:0000/64

3210:0:0:0:0/64

А теперь разберем несколько более сложных примеров:

Дано: 2000:1234:5678:9ABC:1234:5678:9ABC:1111/56
Каждый гекстет есть 16 бит, так как всего 8 гекстетов и 128 бит, таким образом 16*8 = 128, значит половина гекстета = 8 бит.
В данном случае, нам нужно отсчитать 3 целых гекстет и половину 4-го, получаем 3*16+8=56 бит.

Итого получаем такую часть подсети: 2000:1234:5678:9A00:0000:0000:0000:0000/56
или в сокращенном виде: 2000:1234:5678:9A00::/56

Тут можно легко допустить ошибку, посчитав, что, так как у нас префикс=56 бит, то после 9A мы должны были отсечь 2 символа, но это не так. Они остаются: 9A00, потому что, если отсечь два нуля в конце в дальнейшем может превратится в 009А, что является уже другим адресом.

Разберем несколько примеров с различными префиксами:

Дано

С сокращением

34BA:B:B:0:5555:0:6060:707/80

34BA:B:B:0:5555::/80

3124::DEAD:CAFE:FF:FE00:1/80

3124:0:0:DEAD:CAFE::/80

2BCD::FACE:BEFF:FEBE:CAFE/48

2BCD:0000:0000::/48

3FED:F:E0:D00:FACE:BAFF:FE00:0/48

3FED:F:E0::/48

210F:A:B:C:CCCC:B0B0:9999:9009/40

210F:A:0::/40

34BA:B:B:0:5555:0:6060:707/36

34BA:B:0::/36

3124::DEAD:CAFE:FF:FE00:1/60

3124:0:0:DEA0::/60

2BCD::FACE:1:BEFF:FEBE:CAFE/56

2BCD:0000:0000:FA00::/56

Учимся понимать как работает механизм по автоматической выдаче IPv6-адресов на основе MAC-адресов хостов

Дано: 2001:DB8:1:1::/64
MAC: B8:0C:BE:EF:CA:FE, в дальнейшем буду разделять точкой на 3 октета: B80C.BEEF.CAFE

Первым делом необходимо разделить MAC-адрес пополам
и добавить посередине значение: FFFE, по итогу получаем такую запись: B80C:BEFF:FEEF:CAFE

Далее, берем первые 2 символа получившейся записи - это B8, очевидно, что это в шестнадцатеричном (HEX) формате.

Необходимо перевести B8 в двоичный вид, получаем: 1011 1000, но это еще не все. Из двоичной записи берем 7-й бит и инвертируем его (1 в 0 или 0 в 1) и получаем такую запись: 1011 1010, а теперь обратно переводим в HEX-формат, получаем BA (B=1011, A=1010). Наконец-то подставляем вместо B8 наш результат BA и получаем: BA0C:BEFF:FEEF:CAFE, а эту запись добавляем в конец адреса из Дано и получаем результат: 2001:DB8:1:1:BA0C:BEFF:FEEF:CAFE

Разберем несколько примеров:

Префикс

MAC-адрес

Результат

Мои расчеты

2001:DB8:1:1::/64

0013.ABAB.1001

2001:DB8:1:1:0213:ABFF:FEAB:1001

 

2001:DB8:1:1::/64

AA13.ABAB.1001

2001:DB8:1:1:A813:ABFF:FEAB:1001

AA=1010 1010=1010 1000, 1010=A, 1000=8

2001:DB8:1:1::/64

000С.BEEF.CAFE

2001:DB8:1:1:020C:BEFF:FEEF:CAFE

 

2001:DB8:1:1::/64

B80C.BEEF.CAFE

2001:DB8:1:1:BA0C:BEFF:FEEF:CAFE

B8=1011 1000=1011 1010, BA

2001:DB8:FE:FE::/64

0C0C.ABAC.CABA

2001:DB8:FE:FE:0E0C:ABFF:FEAC:CABA

0C=0000 1100=0000 1110, 0E

2001:DB8:FE:FE::/64

0A0C.ABAC.CABA

2001:DB8:FE:FE:080C:ABFF:FEAC:CABA

0A=0000 1010=0000 1000, 08

Теги:
Хабы:
+2
Комментарии11

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн