Une IPv4 écrite en IPv6 : l'adresse mappée
Une adresse IPv4 compte 32 bits, une adresse IPv6 en compte 128. La RFC 4291 prévoit une plage IPv6 qui porte une IPv4 dans ses 32 derniers bits : l'adresse IPv4 mappée, notée ::ffff: suivi de l'IPv4. Les 80 premiers bits sont à zéro, les 16 suivants à un.
::ffff:192.168.1.1::ffff:c0a8:1010000:0000:0000:0000:0000:ffff:c0a8:0101On la croise dans les journaux d'un serveur qui écoute en IPv6 et reçoit aussi des connexions IPv4 : le système présente alors l'adresse du client sous cette forme. Pour la convertir, 192 s'écrit c0 en hexadécimal, 168 a8, 1 01 : les deux derniers groupes valent c0a8 et 0101.
Une forme plus ancienne, l'adresse « compatible IPv4 » (::192.168.1.1, sans ffff), a été abandonnée par la même RFC 4291 : l'outil la lit comme une IPv6 ordinaire.
Compresser et développer une adresse IPv6
Une IPv6 s'écrit en huit groupes de quatre chiffres hexadécimaux. Pour l'abréger, on retire les zéros en tête de chaque groupe et l'on remplace une suite de groupes nuls par ::, une seule fois. Comme plusieurs écritures restaient possibles, la RFC 5952 fixe la forme à afficher :
- les chiffres en minuscules ;
- aucun zéro en tête d'un groupe ;
- le
::sur la plus longue suite de groupes nuls, la première si deux suites ont la même longueur ; - jamais de
::pour un seul groupe nul ; - une IPv4 mappée écrite en notation pointée, ::ffff:192.168.1.1.
Minuscules, zéros de tête retirés, six groupes nuls remplacés : 2001:db8::1.
Deux suites de deux groupes nuls : on compresse la première, 2001:db8::1:0:0:1.
L'outil accepte toutes les formes, avec ou sans crochets ([2001:db8::1], comme dans une adresse web), et rend les deux : compressée pour l'affichage, développée pour comparer deux adresses caractère par caractère ou les trier.
Une IPv4 en décimal, hexadécimal et binaire
Une IPv4 n'est qu'un nombre de 32 bits découpé en quatre octets. Chaque nombre de l'écriture pointée vaut un octet, de 0 à 255.
a × 16 777 216 + b × 65 536 + c × 256 + d192 × 16 777 216 + 168 × 65 536 + 1 × 256 + 1 = 3 232 235 777 ; en hexadécimal 0xC0A80101 ; en binaire 11000000.10101000.00000001.00000001.
L'outil lit aussi ces formes en saisie : tapez 3232235777 ou 0xC0A80101, il retrouve 192.168.1.1. Il refuse un nombre écrit avec un zéro en tête, comme 192.168.01.1 : certains logiciels le liraient en octal et viseraient une autre adresse.
Ce que la conversion ne fait pas
Écrire une IPv4 sous forme mappée ne donne pas d'adresse IPv6 à une machine : la forme mappée ne sert qu'à représenter une IPv4 dans un logiciel qui manipule des IPv6, et ne circule pas sur un réseau IPv6. Une machine joignable en IPv6 a sa propre adresse, attribuée par son fournisseur d'accès ou son réseau, sans lien de calcul avec son IPv4.
Questions fréquentes
Comment écrire une adresse IPv4 en IPv6 ?
Sous forme d'adresse IPv4 mappée : ::ffff: suivi de l'IPv4, par exemple ::ffff:192.168.1.1, ou en hexadécimal ::ffff:c0a8:101. Les 80 premiers bits sont à zéro, les 16 suivants à un.
Que signifie :: dans une adresse IPv6 ?
Une suite de groupes nuls omis. 2001:db8::1 vaut 2001:0db8:0000:0000:0000:0000:0000:0001. Le :: ne peut apparaître qu'une fois, sinon on ne saurait pas combien de zéros chaque :: remplace.
Majuscules ou minuscules dans une IPv6 ?
Les deux désignent la même adresse, mais la RFC 5952 recommande les minuscules pour l'affichage, afin qu'une adresse s'écrive toujours de la même façon.
Cet outil affiche-t-il mon adresse IP ?
Non. Pour connaître votre adresse publique, il faut qu'un serveur la lise dans votre connexion. Ce convertisseur fonctionne entièrement dans votre navigateur et n'envoie rien.
Pourquoi 192.168.1.1 vaut-il 3232235777 ?
Une IPv4 est un nombre de 32 bits écrit en quatre octets : 192 × 16 777 216 + 168 × 65 536 + 1 × 256 + 1 = 3 232 235 777.
Une erreur ? Signalez-la, nous la corrigeons.