Преобразование третьей формы IPv6 / IPv4?

Я читаю о том, как настроить IPv6 в Ubuntu, я попал в раздел о чтении адресов IPv6, и хотя первые два примера имеют для меня смысл, последний немного ускользает от моего понимания, так как это было несколько лет назад мой последний сетевой урок:

Как преобразовать третью форму в длинную форму?

Вот пример, с которым у меня проблемы:

  • третья форма: - 2002:: 10: 0.0.1
  • полнаяформа: - 2002: 0000: 0000: 0000: 0000: 0000: 0:00:0001
  • каноническая форма: - 2002:: a00: 1

Я понимаю гекс, поскольку вместо того, чтобы заканчивать числом десять, когда вы считаете больше девяти, вы в конечном итоге получаете A, B, C, D, E и F, прежде чем увеличивать цифру в следующем столбце.

Не могли бы вы показать мне, как это работает с использованием математики, а не просто онлайн-конвертер JavaScript?

Спасибо!

2 ответа

Решение

В IPv4 каждый байт представлен числом от 0 до 255; в IPv6 вместо этого используется шестнадцатеричное представление от 00 до ff. Преобразование, которое здесь выполняется, заключается в сопоставлении четырех байтов адреса IPv4 с последними 4 байтами адреса IPv6:

IPv4:

aaa.bbb.ccc.ddd

IPv6:

XXXX::AABB:CCDD

Итак, с вводом 10.0.0.1байты 0a, 00, 00, 01; ведущий к:

::0a00:0001

(который сокращается до ::a00:1)

Для другого примера, давайте возьмем 192.168.50.254:

::c0a8:32fe

Вы можете посмотреть на преобразование в различные форматы, используя v6decode; попробуйте навести курсор на разные части адреса, чтобы увидеть, как они соотносятся между различными форматами.

Другие вопросы по тегам