Назад | Перейти на главную страницу

Почему адреса IPv6 не представлены в виде десятичных чисел с точками, как IPv4

Может быть, здесь не место для этого вопроса, но ничего лучше я не нашел.

Текстовое представление адресов IPv6, определенных в RFC 2373 утверждает, что адреса должны быть представлены как 8 шестнадцатеричных 16-битных значений соответствующих частей, например 2001: 0db8: 5f62: ab41: 0000: 0000: 0000: 0801 или (сокращенно) 2001: db8: 5f62: ab41 :: 801

Итак, какова была причина (RFC 2373 не указывает ни одной) не использовать «старую добрую» десятичную нотацию с точками с 16-битными частями (так что эквивалентная нотация для нее будет 8193.3512.24418.43841.0.0.0.2049)?

Его по-прежнему можно легко отличить от IPv4-адреса (просто из-за использования другого количества слов и точек) и не требуется специального синтаксиса (например, скобок) при указании порта (например, [2001: db8: 5f62: ab41 :: 801]: 8080 выглядит немного неудобно, поскольку он использует двоеточие для разных целей (отделяет слова в IP-адресе и сам адрес от номера порта, поэтому нам нужны скобки), а также смешивает десятичную (для порта) и шестнадцатеричную нотацию).

32-значное число с основанием 16 легче для понимания, чем 8-значное число 65 536. Hex относительно компактен, имеет степень двойки, и уже используется в других контекстах, таких как UUID, хэш-функции и адреса памяти.

Битовая маска CIDR-нотации проста, если оставаться на 4-битных границах = одна шестнадцатеричная цифра.

  • 2001:db8:1234::/48
  • 2001:db8:1234:5600::/56
  • 2001:db8:1234:5678::/64

Кроме того, шестнадцатеричный формат, разделенный двоеточиями, позволяет однозначно использовать сопоставленные адреса IPv4. Где биты v4 представляют собой немодифицированные десятичные дроби с точками. Например: ::FFFF:129.144.52.38. Подробнее об этом в RFC 4038.

Конечно, упаковка кронштейнов выглядит немного некрасиво. Решите это с помощью разрешения имен; все, что вы вводите в браузере, должно быть в DNS.

Смотрите также: Почему IPv6 выражается в шестнадцатеричном формате?