Logo IPv6 readyAprès l’introduction au protocole IPv6 (à lire ou relire ici), il est temps de rentrer dans les détails techniques pour assouvir la curiosité naissante… D’abord, c’est vrai que l’adresse IP est une succession de bits: 32 dans le cas d’IPv4 et 128 dans le cas d’IPv6. Pourtant, déjà en IPv4, nous utilisions une astuce pour simplifier la manipulation des adresses: la notation décimale pointée.

En IPv6, la notation retenue repose sur l’hexadécimal… Quelques notions s’imposent !

 

Notations des Nombres

Les notations décimale, binaire ou hexadécimale sont des systèmes différents pour noter des valeurs quantitatives. Dans tous ces systèmes, la première valeur est toujours la valeur 0. 

L’idée de ces systèmes de notation consiste à identifier une valeur à partir de différents « signes ». Par exemple, dans le système décimal, chaque valeur est notée avec un système à 10 « signes » qui sont 0, 1, 2, 3, 4,  5, 6, 7, 8 et 9. On utilise donc une combinaison de ces signes (ces signes sont appelés des chiffres) pour définir un nombre (qui est composé de plusieurs chiffres, donc). Dans le cas du système de notation binaire, on n’a que deux signes utilisables: 0 et 1.  

Dans le système hexadécimal, on va utiliser 16 signes qui sont: 0, 1, 2, 3, 4,  5, 6, 7, 8, 9, A, B, C, D, E, F

On peut donc utiliser plusieurs signes pour identifier une valeur. Cela permet de désigner une valeur supérieure au nombre de signes disponibles dans la notation. Par exemple , en notation décimale, 12 indique que l’on a dépassé 1 fois le nombre de signes disponibles et que l’on a besoin de 2 unités supplémentaires pour atteindre la valeur désignée. 

Pour les matheux, on pourra écrire que 12 = 1x10 + 2. Pourquoi 1×10 ? Parce que 10, c’est le nombre de signes disponibles dans la notation (ici, la notation décimale). 

Dans tous les cas, ce que l’on devra retenir, c’est que – quelque soit le système de notation, l’objectif est de coder une valeur donnée.  

Valeurs 0 à 15 dans les notations Décimale et Hexadécimale

Les mêmes valeurs, notées dans le système Decimal (Dec) ou dans le système Hexadécimal (Hex)

 

Ce qui rend la notation hexadécimale intéressante, c’est qu’elle propose 16 signes pour coder donc 16 valeurs différentes avec un seul symbole. Or, 16 valeurs cela correspond exactement à ce qui peut être codé avec un groupe de 4 bits.

Pour chaque groupe de 4 bits, on peut faire correspondre 1 et 1 seul symbole de la notation hexadécimale

Pour chaque groupe de 4 bits, on peut faire correspondre 1 et 1 seul symbole de la notation hexadécimale

 

 Et mes adresses IPv6 dans tout ça ?

Effectivement, il est temps de revenir à notre propos: l’adressage IPv6. Nous savons qu’il a été décidé d’utiliser un champ de 128 bits pour coder l’adresse IPv6. Ainsi, dans la notation binaire, une adresse IPv6 ressemble à ça:

00100000000000010000110110111000101010101010101000010001000100010000000000000000000000000000000000000000000000000000000100000000

On voit bien la difficulté de manipuler une adresse en notation binaire. Ce que l’on va faire pour noter une adresse IPv6, c’est grouper les bits 4 par 4 et séparer chaque groupe de 16 bits par le symbole « : » (deux points). 

0010 0000 0000 0001 : 0000 1101 1011 1000 : 1010 1010 1010 1010 : 0001 0001 0001 0001 : 0000 0000 0000 0000 : 0000 0000 0000 0000 : 0000 0000 0000 0000 : 0000 0001 0000 0000

Note: les groupes de 16 bits (entre les deux points) sont parfois appelés des hextets.

 

Et maintenant, on n’a plus qu’à utiliser la notation hexadécimale pour les groupes de 4 bits que l’on a identifiés (il suffit de chercher la valeur dans la table de correspondance présentée précédemment).

Adresse IPv6: notation hexadécimale

 

L’adresse IPv6 utilisée pour notre exemple devient donc:

2001:0DB8:AAAA:1111:0000:0000:0000:0100

C’est cette notation que nous allons utiliser pour les adresses IPv6. Enfin… presque !

 

Quelques règles simplificatrices de la notation des adresses IPv6

 Règle n°1: suppression des valeurs 0 inutiles

Dans toutes les notations, les symboles 0 (zéro) utilisés à gauche d’un nombre n’ont aucune utilité. Par exemple, 00127 peut se noter 127. Nous allons faire exactement la même chose sur la notation hexadécimale IPv6.

L’adresse IPv6 utilisée pour notre exemple devient donc:

2001:DB8:AAAA:1111:0:0:0:100

 

Quelques exemples supplémentaires pour vous aider à bien apprécier la règle de notation:

regle numéro 1: suppression des signes 0 qui précèdent les autres signes

 

Attention: il faut savoir également faire l’opération inverse; c’est à dire retrouver la notation complète alors que le nombre de signes est inférieur à 4 dans un groupe séparé par les deux points.  Observez l’exemple ci-dessous: 

Il faut savoir retrouver la notation complète

Ainsi, la notation complète de ab est bien 00ab.

 

Règle n°2: suppression d’une longue suite de 0

 Cette règle consiste à remplacer un ou plusieurs groupes de :0000: par :: (double symbole deux points)

Ainsi, par exemple, :0000:0000:0000: ou :0000:0000: devient ::  

Si l’on applique les règles 1 et 2, cela permet de simplifier (et de raccourcir) la notation d’une adresse IPv6, comme dans notre exemple initial:

regle numéro 2: les doubles deux points

Autres exemples et compléments:

Que va devenir l’adresse 2001:DB8:1000:0000:0000:1234:0000:0001 après application de la règle n°2: 2001:DB8:1000::1234:0000:0001 ou 2001:DB8:1000:0000:0000:1234::0001 ?

La notation verte est préférée parce que la règle s’applique sur la plus longue suite de 0.

 

Et dans le cas de  2001:DB8:0000:0000:1234:0000:0000:0001 (les deux suites de 0 sont de même longueur) ?

La notation a privilégiée sera:  2001:DB8::1234:0000:0000:0001 

En effet, dans le cas où l’on a deux suites de 0 de la même longueur, on va utiliser la notation « :: » pour la première suite rencontrée (en lisant l’adresse de gauche à droite).

 

Attention: la notation « :: » ne peut s’utiliser qu’une seule fois dans une adresse IPv6 ; ceci afin de permettre de retrouver la notation complète sans erreur possible.

En effet, 2001:DB8::1234::5678  n’est pas une notation autorisée parce qu’il est impossible de connaitre le nombre de signes 0 remplacés par la notation « :: »

 

Voilà donc les règles de notation des adresses que l’on utilise en environnement IPv6. Finalement, les règles de simplification peuvent faciliter la manipulation des adresses. Néanmoins, c’est une autre notation, une autre approche, de nouveaux réflexes à acquérir: il faut s’entrainer, essayer, utiliser, etc. Il n’y a pas de raccourcis.

 Je remercie mon collègue Rick Graziani pour m’avoir autorisé à utiliser (et à modifier) ses supports pour illustrer cet article. Tout commentaire ou toute question est toujours bienvenue: utilisez la section ci-dessous prévue à cet effet !