Noob to IPv4 #1
Première partie pour tout apprendre sur l'IPv4, dans cette partie nous verrons comment traduire une adresse IP en binaire, comprendre les masques de sous-réseaux et enfin déterminer l'adresse de sous-réseaux afin d'en déduire l'adresse de broadcast ainsi que son nombre d'hôtes disponibles.
Qu'est-ce qu'une IP ?
L'adresse IP pour Internet Protocol désigne un numéro unique attribué de manière durable ou temporaire à un periphérique connecté à un réseau informatique.
Noté l'utilisation du terme "périphérique", en effet aujourd'hui, tout objet connecté à un réseau, de votre réfrigérateur connecté en passant évidemment par votre ordinateur possède une adresse IP.
Format d'une adresse IPv4 :
-
192.168.1.1
-
10.0.10.20
-
172.16.200.5
Une adresse IPv4 est composée de quatre octets de huit bits.
Prenons la première adresse IP de notre liste ci-dessus (192.168.1.1) en traduite en binaire, celle-ci équivaut à 11000000.10101000.00000001.00000001.
Il existe une multitude de façons de convertir un nombre décimal en binaire, aujourd'hui nombre de calculateurs pullules sur internet, mais comme la simplicité n'est pas à l'ordre du jour, nous allons voir dans la prochaine partie comment traduire une adresse IP en binaire.
Comment traduire l'addresse IP en binaire ?
Dans cette partie nous verrons deux méthodes pour convertir notre IP en binaire.
La première, plus algébrique, transforme un nombre décimal (base 10) en binaire (base 2), la seconde quant à elle, use d'un tableau et de quelques additions ou soustractions.
Methode 1 - Conversion par division
La première méthode se base sur une division par deux et du reste pour la conversion en binaire. Dans les faits, nous prenons le nombre entier que nous divisons par deux, si le résultat est un nombre entier, le bit sera à 0. Dans le cas ou le résultat retourne un nombre décimal, le bit sera à 1.
Prenons comme exemple le nombre 42.
Lorsque l'on divise celui-ci par 2, le résultat nous donne 21. Le dernier bit sera donc à 0. Divisons maintenant 21, le réultat est cette fois ci de 10,5. L'avant dernier bit sera à 1. Il faut ensuite répéter l'opération avec 10 (sans compter la décimal restante) et ainsi de suite jusqu'à arriver à 0.
42 / 2 = 21+0
21 / 2 = 10+1
10 / 2 = 5+0
5 / 2 = 2+1
2 / 2 = 1+0
1 / 2 = 0+1
Attention, il faut bien lire de bas en haut !
Le resultat en binaire est 101010.
Methode 2 - Conversion à l'aide d'un tableau
La deuxième méthode se base sur un tableau des puissances de deux pour effectuer une addition ou une soustraction de notre nombre décimal afin d'obtenir notre binaire.
Cette méthode, bien que plus longue à mettre en place, à l'avantage d'être assez visuelle. De plus, celle-ci est plus adapté aux prochaines étapes qui nous attendent, pour la suite du tutoriel nous allons continuer d'utiliser cette méthode.
Une image vaut mille mots, nous allons directement passer par un exemple pour comprendre cette méthode, celle-ci parlant d'elle-même.
Prenons l'adresse IP suivante:
236.192.0.1
Nous aurons besoin de ce tableau pour procéder à la méthode:
128 (2^7) | 64 (2^6) | 32 (2^5) | 16 (2^4) | 8 (2^3) | 4 (2^2) | 2 (2^1) | 1 (2^0) | |
---|---|---|---|---|---|---|---|---|
Octet | x | x | x | x | x | x | x | x |
Deux possibilités s'offrent à nous, l'addition ou la soustraction.
Dans la cadre de l'addition, il faut arriver aux résultatsdécimaux pour chaque octet de notre IP à l'aide de notre tableau des puissances de 2.
Dans le cas présent,voici le résultat:
- 236 = 128 + 64 + 32 + 8 + 1
- 192 = 128 + 64
- 0 = 0
- 1 = 1
Pour la soustraction, il faut soustraire à notre nombre décimal les puissances de deux jusqu'à arriver à 0 et ajouter les bits au tableau. Si une soustraction retourne un nombre négatif, on considère le bit à 0 et le nombre décimal doit être déporté à la prochaine puissance de deux qui retourne un nombre positif.
- 236
(236 - 128 = 108) => 1
(108 - 64 = 44) => 1
(44 - 32 = 12) => 1
(12 - 16 = -4) => 0
(12 - 8 = 4) => 1
(4 - 4 = 0) => 1
(0 - 2 = -2) => 0
(0 - 1 = -1) => 0
Résultat de 236 = 11101100.- 192
(192 - 128 = 64) => 1
(64 - 64 = 0) => 1
Arrivé à 0, donc tous les bits suivant seront négatif.
Résultat de 192 = 11000000.- 0
Aucun bit ne sera positif.
Résultat de 0 = 00000000.- 1
Seul la puissance 2^1 sera positif.
Résultat de 1 = 00000001.
Le traduction binaire sera 11101100.11000000.00000000.00000001.
128 (2^7) | 64 (2^6) | 32 (2^5) | 16 (2^4) | 8 (2^3) | 4 (2^2) | 2 (2^1) | 1 (2^0) | |
---|---|---|---|---|---|---|---|---|
236 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |
192 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Qu'est-ce que le masque de sous réseaux ?
Le masque de sous réseaux permet de découper notre IP en réseaux et hôtes (ou machines).
C'est-à-dire qu'une partie de l'adresse IP sera réservé afin de segmenter plusieurs sous-réseaux dans lesquelles nous pourrons attribuer des machines.
Aujourd'hui, une adresse IPv4 peut-utiliser deux notations :
-
Décimale : 255.255.255.255, 255.0.0.0, 255.255.248.0, etc.
-
CIDR (Classless Inter Domain Routing) : /8, /16, /22, /24, etc.
En l'occurence, la notation CIDR comprend l'adresse IP et son masque de sous réseau.
Exemple: '192.168.0.1/24' = '192.168.0.1, 255.255.255.0'
S'il vous prend de calculer le masque de sous-réseau en binaire, celui-ci se convertit de la même manière qu'une adresse IP.
Classe d'adresse d'IP publique et privée
Maintenant que le terme de masque de sous-réseau a été abordé, il est important de définir ce que représente une adresse IP publique et privée.
Lorsque l'on parle d'adresse IP publique, celle-ci se découpe en classe. En tout cinq classes d'adresses IP sont définis, mais nous en verrons que trois dans le cadre de ce cours.
Classe | Masque réseau | Adresses réseau | Nombre de réseaux | Nombre d'hôtes par réseau |
---|---|---|---|---|
A | 255.0.0.0 | 1.0.0.0 - 126.255.255.255 | 126 | 16777214 |
B | 255.255.0.0 | 128.0.0.0 - 191.255.255.255 | 16384 | 65534 |
C | 255.255.255.0 | 192.0.0.0 - 223.255.255.255 | 2097152 | 254 |
En observant le tableau, on peut constater qu'il ya une forte disparité entre les trois classes d'adresse IP.
Prenons l'exemple de la classe A. Si l'on convertit une adresse IP de classe A en binaire (R=Réseau;O=Ordinateur : RRRRRRRR.OOOOOOOO.OOOOOOOO.OOOOOOOO) vous pouvez facilement observer que la majorité des octets de l'adresse IP sont réservés aux machines hôtes (ordinateur) et non aux réseaux. L'adresse IP de type B (RRRRRRRR.RRRRRRRR.OOOOOOOO.OOOOOOOO) elle semble plus équilibré. Quant aux machines de classes C, le nombre de machines hôtes est très limité.
Ce découpage hasardeux à entrainé bon nombre d'assignation d'adresse IP publique de classe A (donc 16 millions d'adresses IP potentielles) à des entreprises qui n'en ont pas de réel besoins, entrainant désormais une pénurie d'adresse IPv4 sur internet.
En plus du nombre d'adresse IP publique maximum limité, ajouté à cette liste des adresses réservés afin d'être utilisé dans des réseaux privés.
- 127.0.0.1 > Loopback
- 172.16.0.0 - 172.31.255.255 > Local
- 10.0.0.0 - 10.255.255.255 > Local
- 192.168.0.0 - 192.168.255.255 > Local
Aujourd'hui, plusieurs solutions ont été adoptées afin de palier à ce problème, notamment le NAT (Network Addresse Translation) et l'IPv6 qu'on abordera dans un tutoriel ultérieur.
Comment déterminer l'adresse de sous réseau ?
Pour déterminer le réseau d'une adresse IP nous avons besoin de l'adresse IP et du masque de sous réseau traduit en binaire.
Pour cela nous allons utiliser un nouveau tableau qui va superposer l'IP et le masque de sous réseau et remplir par un ET logique la dernière rangée du tableau. Les règles sont donc :
R = (IP) AND (M)
- 1+1=1
- 1+0=0
- 0+1=0
- 0+0=0
Exemple:
192.168.1.1/24
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
IP | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Mask | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Reseau | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
L'adresse du réseau 192.168.1.1/24 est 192.168.1.0/24.
Comment calculer l'adresse de broadcast ?
Pour calculer l'adresse de broadcast, nous avons besoin de l'adresse du réseau ainsi que du masque de sous réseau que l'on inversera.
Nous allons utiliser une nouvelle fois le tableau précèdent, mais en superposant cette fois-ci l'adresse du réseau et le masque de sous réseau inversé et procédé à un OU logique. Les règles sont donc :
B = R OR !(M) <- !(M) = Masque de réseau inversé.
- 1 +1 = 1
- 1 + 0 = 1
- 0 + 1 = 1
- 0 + 0 = 0
192.168.1.0/24
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Reseau | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
!(Mask) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Broadcast | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
L'addresse de broadcast du réseau 192.168.1.0/24 est 192.168.1.255.
Comment déterminer le nombre d'hôtes d'un réseau ?
Afin de calculer le nombre d'hôte sur un réseau, nous devons déterminer l'adresse IP de notre réseaux et inverser le binaire des bits utiliser par le masque de sous réseaux.
Exemple :
192.168.1.0/20
'/20' correspond à 11111111.11111111.11110000.00000000. (=255.255.240.0)
Si l'on inverse le masque de sous réseaux, cela nous donne.
00000000.00000000.00001111.11111111
-
00001111 : 8+4+2+1 = 15
-
11111111 : 128+64+32+16+8+4+2+1 = 255
Résultat : 270 hôtes.
Mais il nous manque un petit quelque chose... L'adresse du réseau et l'adresse de broadcast.
En l'occurrence, 192.168.1.0 est 192.168.1.255. En effet, ces deux adresses sont réservées afin de définir le réseau avec 192.168.1.0 et envoyer un message en broadcast (diffuser à tout le monde sur le réseau) au 192.168.1.255.
Il y a donc 268 hôtes possible sur notre réseau 192.168.1.0/20.