Сжатие и полная запись IPv6
Сократите адрес IPv6 до единственной канонической формы или разверните его до всех 32 цифр и посмотрите, какие нули уходят, почему одна серия стала :: и какое правило RFC 5952 нарушила ваша запись. Списки тоже поддерживаются.
Прочитано как IPv6
Один адрес или список, по одному в строке (до 100). Преобразование идёт в вашем браузере, ничего не отправляется.
2001:db8::1:0:0:1
RFC 5952, правило за правилом
- Сжатая запись (RFC 5952)
- Полная запись
- В URL
- В виде числа
- Десятичный · hex · двоичный
- Имя для обратного DNS
Как сжать адрес IPv6?
Переведите его в строчные буквы, уберите ведущие нули в каждой группе, затем замените самую длинную серию из двух и более нулевых групп на ::, а если две серии одинаковой длины — первую из них.
Так получается единственная каноническая форма, которую RFC 5952 требует выводить программам. При этом на входе программы обязаны принимать любую другую допустимую запись, так что сжатие никогда не меняет адрес — только то, как он записан.
2001:0DB8:0000:0000:0000:FF00:0042:8329392001:0db8:0000:0000:0000:ff00:0042:8329392001:db8:0:0:0:ff00:42:8329272001:db8::ff00:42:83292239 → 22 симв.

Что вы ввелиВерхний регистр, ведущие нули и всё прочее: любая допустимая запись распознаётся.Убранные нулиВедущие нули зачёркнуты, группа за группой.Серия, которая становится ::Самая длинная серия нулевых групп; при равенстве — первая.Серии, которые остаютсяДругие серии нулей сохраняют свои 0, с указанием причины.Правило за правиломСколько правил RFC 5952 нарушила запись; список под ним называет каждое и то, что изменилось.Каковы правила сжатия IPv6 по RFC 5952?
RFC 5952 задаёт пять правил: убирать ведущие нули, делать :: как можно длиннее, никогда не использовать :: для одной нулевой группы, сжимать самую длинную серию (при равенстве — первую) и писать шестнадцатеричные буквы строчными.
Шестая рекомендация касается адресов, которые несут IPv4: после префикса вроде ::ffff: последние 32 бита записываются как адрес IPv4 с точками. Инструмент сверяет каждое правило с тем, что вы ввели, и называет исправленные.
1Ведущие нули убраны§4.1
Правильно: 2001:db8::1
Неправильно: 2001:0db8::0001
2:: максимально длинный§4.2.1
Правильно: 2001:db8::2:1
Неправильно: 2001:db8:0:0:0:0:2:1
3Без :: для одной группы§4.2.2
Правильно: 2001:db8:0:1:1:1:1:1
Неправильно: 2001:db8::1:1:1:1:1
4Самая длинная серия, при равенстве первая§4.2.3
Правильно: 2001:db8::1:0:0:1
Неправильно: 2001:db8:0:0:1::1
5Строчные буквы§4.3
Правильно: 2001:db8::a
Неправильно: 2001:DB8::A
+IPv4 с точками в конце§5
Правильно: ::ffff:192.0.2.1
Неправильно: 0:0:0:0:0:ffff:192.0.2.1
Как развернуть адрес IPv6 до полной записи?
Посчитайте записанные группы, пусть :: заменяет столько нулевых групп, сколько нужно до восьми, и дополните каждую группу до четырёх цифр: в 2001:db8::1 три группы, значит, :: — это пять.
Полная запись нужна обратному DNS, где адрес идёт по одной цифре (ниблу), а также многим журналам и таблицам для сортировки как текста. В Python она называется .exploded, в Go — StringExpanded.
2001db8::13 записано2001db8000001+ 5 нулевые группы, которые заменяет ::20010db8000000000000000000000001дополнено до 4 цифрСколькими способами можно записать один адрес IPv6?
Многими: ведущие нули, регистр букв и место :: могут меняться, так что у одного адреса много допустимых записей, и RFC 5952 перечисляет восемь для 2001:db8:0:0:1:0:0:1, прежде чем зафиксировать одну каноническую форму.
Поэтому сравнение адресов как текста не работает: две записи одного адреса не совпадают. Сравнивайте их как 128-битные числа или сначала сожмите обе.
2001:db8:0:0:1:0:0:12001:0db8:0:0:1:0:0:12001:db8::1:0:0:12001:db8::0:1:0:0:12001:0db8::1:0:0:12001:db8:0:0:1::12001:db8:0000:0:1::12001:DB8:0:0:1::12001:db8::1:0:0:1каноническая · RFC 5952Как записать адрес IPv6 в URL, с портом или зоной?
Заключите адрес в квадратные скобки, http://[2001:db8::1]:8443/, чтобы порт нельзя было принять за группу; зону вроде %eth0 в URL браузера указать вообще нельзя.
RFC 5952 предписывает брать в скобки адрес с портом и называет запись 2001:db8::1:8443 нерекомендуемой. Больше ни для чего скобки в URL не используются. Браузеры выводят адрес в hex даже после ::ffff:, так что [::ffff:192.0.2.1] отображается как [::ffff:c000:201].
Зона обозначает интерфейс на одном компьютере, например fe80::1%eth0. RFC 9844 в 2025 году снова убрал зоны из URL, и браузеры их отклоняют, хотя программы по-прежнему должны позволять ввести зону.
Зона (%eth0) · fe80::1%eth0
| Ввод в поле программы | разрешена |
| В URL браузера | отклоняется |
| inet_pton() | не может её разобрать |
| Глобальные адреса | её никогда не имеют |
Как сжать или развернуть IPv6 в коде?
Разберите адрес и выведите его: .compressed в Python, netip.Addr.String() в Go и INET6_NTOA(INET6_ATON(…)) в MySQL дают каноническую запись, а .exploded и StringExpanded() — полную.
str() в Python тоже возвращает сжатую форму, а суффикс %zone Python принимает. MySQL выводит строчные буквы, не больше 39 символов, одинаково на всех платформах.
› import ipaddress a = ipaddress.ip_address('2001:0DB8::0001') a.compressed, a.exploded ('2001:db8::1', '2001:0db8:0000:0000:0000:0000:0000:0001')
Python ipaddress
› a := netip.MustParseAddr("2001:0DB8::0001") fmt.Println(a.String(), a.StringExpanded()) 2001:db8::1 2001:0db8:0000:0000:0000:0000:0000:0001
Go net/netip
› SELECT INET6_NTOA(INET6_ATON('2001:0DB8::0001')); 2001:db8::1
MySQL 8.4
Частые вопросы
Какая сжатая форма у 2001:0db8:0000:0000:0000:ff00:0042:8329?
Можно ли использовать :: в адресе IPv6 дважды?
Почему 2001:db8:0:1:1:1:1:1 не сжимается до 2001:db8::1:1:1:1:1?
Адреса IPv6 пишутся заглавными или строчными буквами?
Как развернуть :: в адресе IPv6?
Сколько символов в самом длинном адресе IPv6?
Почему ::ffff:c000:280 превращается в ::ffff:192.0.2.128?
Как указать адрес IPv6 с портом в URL?
Как сжать адрес IPv6 в Python?
Можно ли сжать сразу список адресов IPv6?
Похожие инструменты
IPv6 в IPv4
IPv4 внутри адреса IPv6: отображённый, NAT64, 6to4, Teredo и ISATAP, бит за битом
IPv4 в IPv6
Все формы IPv6 адреса IPv4: отображённый, NAT64 и 6to4, с пометкой «используется» или «редкость»
Конвертер IP в десятичный
IP-адрес в десятичное, hex, двоичное и восьмеричное число и обратно, с весами разрядов каждого октета
Мой IP адрес
Ваш публичный IPv4 и IPv6 сразу, с сетью, местоположением и проверкой VPN
Проверка IPv6
Проверьте, работает ли IPv6, что выбирает браузер и есть ли IPv6 у сайта
Калькулятор подсетей
Сеть, широковещательный адрес, доступные хосты и маски для любого блока IPv4 или IPv6, а также VLSM, разбиение и облачные подсети
Обратный DNS
Поиск имён хостов по IP адресу через записи PTR
Проверка DNS
Все DNS-записи прямо с серверов имён домена рядом с кешем Google и Cloudflare