Может быть, здесь не место для этого вопроса, но ничего лучше я не нашел.
Текстовое представление адресов 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 выражается в шестнадцатеричном формате?