LightCodeSysadmin Open Source

L'adresse IP

L’adresse IP est utilisée par le protocole IP, qui permet de transmettre des données grâce à une adresse IP. Une adresse IP permet de nommer deux entités : des réseaux ou des machines.

Adresse IPv4

Une adresse IPv4 est composée de quatre nombres compris entre 0 et 255 séparés par des points, le tout formant une chaine de quatre octets. Voici un exemple : 192.168.1.20.

A cette adresse s’ajoute souvent un masque de sous-réseau, appelé aussi netmask, il va nous permettre de déterminer la longueur d’un réseau. Les netmasks peuvent se présenter sous deux formes, je vais expliquer la prochaine partie la notation classique.

Les netmask

Le netmask couplé à l’IP va nous permettre de donner le nom du réseau, ainsi que la première adresse IP et la dernière. On écrira l’adresse IP et son netmask ensemble et séparé par un “/”. Voici un exemple avec l’IP 192.168.1.20/255.255.255.0 :

Déterminer le réseau d’une IP avec son netmask. On travaille avec des adresses IP traduites en binaire. On va traduire 192.168.1.20 et 255.255.255.0 en binaire. On les mettra l’un en dessous de l’autre et quand le bit du netmask est égale à 1, on garde le bit de l’adresse IP. Si le bit est égal à 0, on mettra 0 dans l’adresse IP finale :

1100 0000.1010 1000.0000 0001.0001 0100 <- 192.168.1.20
1111 1111.1111 1111.1111 1111.0000 0000 <- 255.255.255.0 (netmask)
---------------------------------------
1100 0000.1010 1000.0000 0001.0000 0000 => 192.168.1.0 (nom du réseau)

Déterminer la dernière adresse du réseau. De la même façon, pour trouver l’adresse IP de fin du réseau 192.168.1.0/255.255.255.0, on met un 1, si le netmask est égal à 0 :

1100 0000.1010 1000.0000 0001.0000 0000 <- 192.168.1.0
1111 1111.1111 1111.1111 1111.0000 0000 <- 255.255.255.0 (netmask)
---------------------------------------
1100 0000.1010 1000.0000 0001.1111 1111 => 192.168.1.255 (dernière IP du réseau)

Les adresses IP du réseau vont de 192.168.1.0 à 192.168.1.255. La dernière adresse du réseau sera réservée au broadcast. Le broadcast permet d’envoyer un message à toutes les machines du réseau.

Classement des adresses IP

Même si la notion de classe A, B et C est devenue obsolète, elle est souvent rappelée dans les différents tutoriels. Moi, je vais parler comme pour l’IPv6 (vous allez comprendre).

Les adresses privées : elles sont faites pour être utilisées dans les LAN, elles ne doivent pas se trouver sur Internet. En IPv4, les plages sont :

  • de 10.0.0.0 à 10.255.255.255 ;
  • de 172.16.0.0 à 172.31.255.255 ;
  • de 192.168.0.0 à 192.168.255.255.

La boucle locale : cette adresse est utilisée par l’ordinateur pour se parler à lui même, voici la plage : 127.0.0.0-127.255.255.255.

Multicast : 224.0.0.0 à 239.255.255.255, le multicast permet d’envoyer des paquets à un ensemble de machines étant abonnées à cette IP. Ces IP possèdent un usage précis décrit par le RFC 31711.

Adresses réservées :

  • 169.254.0.0 - 169.254.255.255 : adresses locales autoconfigurées (APIPA)
  • 192.0.0.0 - 192.0.0.255
  • 192.0.2.0 - 192.168.2.244
  • 192.88.99.0 - 192.88.99.255 : 6to4 anycast
  • 198.18.0.0 - 192.19.255.255 : tests de performance
  • 198.51.100.0 - 198.51.100.255 : réseau de test TEST-NET-2
  • 203.0.113.0 - 203.0.113.255 : réseau de test TEST-NET-3
  • 240.0.0.0 - 255.255.255.254 : réservé à un usage ultérieur non précisé
  • 255.255.255.255 : broadcast illimité

Adresses unicast : ce sont des adresses désignant une seule cible sur Internet, c’est le reste des adresses IP, elles sont attribuées par les RIR.

Adresse IPv6

La pénurie d’adresse IPv4 devrait rendre l’IPv6 beaucoup plus utilisé. Ce protocole a de nombreux avantages, notamment le fait qu’il y ait 663 millions de milliards d’adresses IPv6 par millimètres carrés sur Terre2. En théorie, les NAT devraient disparaître, chaque machine pouvant avoir une adresse IP routable sur Internet.

En IPv6, on retrouve quelques principes de l’IPv4, mais on peut noter quelques grandes différences. Déjà, on utilise des caractères hexadécimaux (de 0 à F), quatre par groupes, il y a huit groupes séparés par deux points. Exemple : fe80:0000:0000:0000:bdf2:9aa0:c325:0c16.

Pour information, en IPv6, il est possible de réduire la taille d’une IP (quand c’est possible), en effet, il est possible de retirer les zéros inutiles : fe80:0:0:0:bdf2:9aa0:c325:c16. On peut aussi remplacer le 0:0:0 par ::. En effet, on remplacera ce symbole par autant de groupes de zéros nécessaires pour atteindre les huit blocs : fe80::bdf2:9aa0:c325:c16. Il est possible de ne mettre qu’une fois ce symbole.

Classification des IP

Adresses réservées : ::/8

  • ::/128 : adresse non spécifiée ;
  • ::1/128 : adresse de boucle locale ;
  • ::ffff:0:0/96 : représentation d’adresse IPv4 dans une structure IPv6.

Adresses unicasts : 2000::/3

Les adresses unicasts sont des adresses appartenant à une seule machine, celles-ci sont routables sur Internet. L’IANA a déjà commencé à distribuer les adresses IPv6 pour le bloc 2001::/16 le reste des IP étant réservé pour un usage futur. On note toutefois quelques IP réservées :

  • 2001::/32 : utilisé pour Teredo
  • 2001:2::/48 : tests de performance
  • 2001:10::/28 : pour Orchid
  • 2001:db8::/32 : réservé pour la documentation par la RFC 3849

De plus, les adresses 6to4 (2002::/16) permettent d’acheminer le trafic IPv6 via un ou plusieurs réseaux IPv4.

Adresses locales uniques : fc00::/7

Adresses locales lien : fe80::/10

Adresses multicasts : ff00::/8

Notation CIDR

En IPv4

Cette notation permet d’écrire les netmask plus rapidement, en fait, on n’utilise plus que ça en IPv6, et c’est courant de le retrouver en IPv4. Par exemple, on écrira /24 au lieu de 255.255.255.0. “24” signifie que l’on masque 24 bits, on met donc les 24 premiers bit à 1 :

1100 0000.1010 1000.0000 0001.0001 0100 <- 192.168.1.20
1111 1111 1111 1111 1111 1111 0000 0000 <- /24
---------------------------------------
1100 0000.1010 1000.0000 0001.0000 0000 => 192.168.1.0 (nom du réseau)

Par exemple, pour l’adresse IPv4 10.2.50.80/20 :

Appartient au réseau :
0000 1010.0000 0010.0011 0010.0101 0010 <- 10.2.50.80
1111 1111 1111 1111 1111 0000 0000 0000 <- /20
---------------------------------------
0000 1010.0000 0010.0011 0000.0000 0000 => 10.2.48.0

Dernière adresse de ce réseau :
0000 1010.0000 0010.0011 0010.0101 0010 <- 10.2.50.80
1111 1111 1111 1111 1111 0000 0000 0000 <- /20
---------------------------------------
0000 1010.0000 0010.0011 1111.1111 1111 => 10.2.63.255

“10.2.48.0/20” désigne un réseau. Pour calculer le nombre d’IP attribuable dans ce réseau, on utilise cette formule : 2(32 - x) - 2 où x désigne le netmask. On met 32 car c’est le nombre de bits d’une adresse IPv4. Pour 10.2.48.0/20, le nombre d’IP est 4093.

En IPv6

Pour une IPv6, on utilisera : 2(128 - x) - 3. Pour une IPv6, cela se passe de la même façon, un exemple avec 2000::/3 :

Dernière IP du réseau :
0010 0000 0000 0000 : 0000... <- 2000::
###                           <- On masque 3 bits
0011 1111 1111 1111 : 1111... => 3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

Ici, où j’ai mis # on garde les bits de l’adresse de départ, pour le reste, on ne met que des 1.