Compression et expansion IPv6
Abrégez une adresse IPv6 en son unique forme canonique ou étendez-la à ses 32 chiffres, et voyez quels zéros disparaissent, pourquoi une suite est devenue :: et quelle règle de la RFC 5952 votre saisie enfreignait. Les listes fonctionnent aussi.
Lu comme IPv6
Une adresse, ou une liste avec une adresse par ligne (100 au maximum). Conversion dans votre navigateur ; rien n'est envoyé.
2001:db8::1:0:0:1
RFC 5952, règle par règle
- Compressée (RFC 5952)
- Étendue (complète)
- Dans une URL
- En nombre
- Décimal · hexa · binaire
- Nom DNS inverse
Comment compresser une adresse IPv6 ?
Mettez-la en minuscules, retirez les zéros de tête de chaque groupe, puis remplacez par :: la plus longue suite de deux groupes nuls ou plus, la première si deux sont aussi longues.
Vous obtenez ainsi l'unique forme canonique que la RFC 5952 demande aux logiciels d'afficher. Les programmes doivent toujours accepter en entrée toute autre écriture valide : compresser ne change donc jamais l'adresse, seulement sa façon de l'écrire.
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 caractères

Ce que vous avez saisiMajuscules, zéros de tête et tout le reste : toute écriture valide est lue.Zéros retirésLes zéros de tête barrés, groupe par groupe.La suite qui devient ::La plus longue suite de groupes nuls ; en cas d'égalité, la première.Les suites qui restentLes autres suites de zéros gardent leurs 0, avec la raison.Règle par règleCombien de règles de la RFC 5952 la saisie enfreignait ; la liste en dessous nomme chacune et ce qui a changé.Quelles sont les règles de compression IPv6 ?
La RFC 5952 fixe cinq règles : retirer les zéros de tête, rendre :: aussi long que possible, ne jamais utiliser :: pour un seul groupe nul, compresser la plus longue suite (la première en cas d'égalité) et écrire les lettres hexa en minuscules.
Une sixième recommandation concerne les adresses qui portent une IPv4 : après un préfixe comme ::ffff:, écrivez les 32 derniers bits sous forme d'adresse IPv4 pointée. L'outil vérifie chaque règle sur votre saisie et nomme celles qu'il a corrigées.
1Zéros de tête retirés§4.1
Correct: 2001:db8::1
Incorrect: 2001:0db8::0001
2:: aussi long que possible§4.2.1
Correct: 2001:db8::2:1
Incorrect: 2001:db8:0:0:0:0:2:1
3Pas de :: pour un seul groupe§4.2.2
Correct: 2001:db8:0:1:1:1:1:1
Incorrect: 2001:db8::1:1:1:1:1
4Suite la plus longue, la première en cas d'égalité§4.2.3
Correct: 2001:db8::1:0:0:1
Incorrect: 2001:db8:0:0:1::1
5Minuscules§4.3
Correct: 2001:db8::a
Incorrect: 2001:DB8::A
+Fin IPv4 pointée§5
Correct: ::ffff:192.0.2.1
Incorrect: 0:0:0:0:0:ffff:192.0.2.1
Comment étendre une adresse IPv6 ?
Comptez les groupes écrits, faites remplacer par :: autant de groupes nuls qu'il en faut pour arriver à huit, et complétez chaque groupe à quatre chiffres : 2001:db8::1 a trois groupes, donc :: en vaut cinq.
La forme étendue est celle qu'utilise le DNS inverse, quartet par quartet, et celle dont beaucoup de journaux et de tableurs ont besoin pour trier en texte. Python l'appelle .exploded, Go StringExpanded.
2001db8::13 groupes écrits2001db8000001+ 5 groupes nuls que :: remplace20010db8000000000000000000000001complétés à 4 chiffresDe combien de façons peut-on écrire une adresse IPv6 ?
De nombreuses : les zéros de tête, la casse des lettres et la place de :: peuvent varier, donc une adresse a de nombreuses écritures valides, et la RFC 5952 en liste huit pour 2001:db8:0:0:1:0:0:1 avant de fixer une forme canonique.
C'est pourquoi comparer des adresses comme du texte échoue : deux écritures de la même adresse ne correspondent pas. Comparez-les plutôt comme des nombres de 128 bits, ou compressez les deux d'abord.
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:1canonique · RFC 5952Comment écrire une adresse IPv6 dans une URL, avec un port ou une zone ?
Mettez l'adresse entre crochets, http://[2001:db8::1]:8443/, pour que le port ne soit pas pris pour un groupe ; une zone comme %eth0 ne peut pas du tout figurer dans une URL de navigateur.
La RFC 5952 demande de mettre entre crochets une adresse suivie d'un port et qualifie 2001:db8::1:8443 de non recommandé. Les crochets ne servent à rien d'autre dans une URL. Les navigateurs affichent l'adresse en hexa même après ::ffff:, donc [::ffff:192.0.2.1] apparaît comme [::ffff:c000:201].
Les zones désignent une interface sur une machine, comme dans fe80::1%eth0. La RFC 9844 les a retirées des URL en 2025 et les navigateurs les refusent, mais les programmes devraient toujours vous laisser en saisir une.
Une zone (%eth0) · fe80::1%eth0
| Saisie dans le champ d'un programme | autorisée |
| Dans une URL de navigateur | refusée |
| inet_pton() | ne sait pas la lire |
| Adresses globales | n'en ont jamais |
Comment compresser ou étendre une adresse IPv6 dans le code ?
Analysez l'adresse puis affichez-la : .compressed en Python, netip.Addr.String() en Go et INET6_NTOA(INET6_ATON(…)) dans MySQL donnent le texte canonique, et .exploded et StringExpanded() la forme complète.
En Python, str() donne aussi la forme compressée, et Python accepte un suffixe %zone. MySQL affiche en minuscules, 39 caractères au plus, de la même façon sur toutes les plateformes.
› 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
Questions fréquentes
Quelle est la forme compressée de 2001:0db8:0000:0000:0000:ff00:0042:8329 ?
Peut-on utiliser :: deux fois dans une adresse IPv6 ?
Pourquoi 2001:db8:0:1:1:1:1:1 ne se compresse-t-elle pas en 2001:db8::1:1:1:1:1 ?
Les adresses IPv6 s'écrivent-elles en majuscules ou en minuscules ?
Comment étendre :: dans une adresse IPv6 ?
Combien de caractères compte la plus longue adresse IPv6 ?
Pourquoi ::ffff:c000:280 devient-elle ::ffff:192.0.2.128 ?
Comment mettre une adresse IPv6 avec un port dans une URL ?
Comment compresser une adresse IPv6 en Python ?
Peut-on compresser une liste d'adresses IPv6 d'un coup ?
Outils associés
IPv6 vers IPv4
Trouvez l'adresse IPv4 dans une adresse IPv6 : mappée, NAT64, 6to4, Teredo et ISATAP, bit par bit
IPv4 vers IPv6
Toutes les formes IPv6 d'une adresse IPv4 : mappée, NAT64 et 6to4, chacune marquée en usage ou rare
Convertisseur IP en Décimal
Adresse IP en décimal, hexa, binaire et octal, et retour, avec les poids de chaque octet
Quelle Est Mon IP
Votre IP publique IPv4 et IPv6 en un coup d'œil, avec le réseau, la localisation et un test VPN
Test IPv6
Testez votre IPv6, le choix de votre navigateur et si un site a l'IPv6
Calculateur de sous-réseau
Réseau, broadcast, hôtes utilisables et masques de tout bloc IPv4 ou IPv6, avec VLSM, découpage et sous-réseaux cloud
DNS Inversé
Trouvez les hostnames associés à n'importe quelle adresse IP via les enregistrements PTR
Recherche DNS
Tous les enregistrements DNS depuis les serveurs du domaine, à côté du cache de Google et Cloudflare