L'adresse IP est le numéro de téléphone d'un équipement sur un réseau. Comprendre leur structure et calculer des sous-réseaux est la compétence n°1 de tout administrateur réseau.
Un ordinateur ne comprend pas les lettres ni les chiffres comme nous. À l'intérieur de chaque processeur, il y a des milliards de transistors — de minuscules interrupteurs électroniques. Chaque transistor ne connaît que deux états :
1 = allumé0 = éteintC'est comme un interrupteur de lampe : il est soit ON, soit OFF. Pas « un peu allumé ». Un seul de ces 0 ou 1 s'appelle un bit (binary digit). En regroupant 8 bits, on obtient un octet (byte), qui peut représenter 256 valeurs différentes (de 0 à 255).
Cliquez sur les cercles pour allumer/éteindre chaque bit :
Un transistor est un composant électronique microscopique gravé dans le silicium du processeur. Imaginez un robinet d'eau commandé par un signal électrique : si le signal est haut, l'eau (le courant) passe → 1. Sinon, le robinet est fermé → 0. Un processeur moderne contient des milliards de ces robinets miniatures.
En combinant plusieurs transistors, on crée des portes logiques — les briques de base de tout calcul. Il en existe 7 principales :
| A | B | S |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
| A | B | S |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
| A | S |
|---|---|
| 0 | 1 |
| 1 | 0 |
En combinant les portes fondamentales, on obtient 4 portes supplémentaires. Les versions « N » (NAND, NOR, XNOR) ajoutent un NOT à la sortie — reconnaissable au petit cercle sur le symbole.
| A | B | S |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
| A | B | S |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
| A | B | S |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
| A | B | S |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Prenons l'addition 1 + 1 en binaire. On a besoin de deux sorties : le résultat et la retenue (comme quand on fait 9 + 1 = 10 en décimal, le « 1 » part dans la colonne suivante).
Donc : 1 + 1 → XOR(1,1) = 0 (résultat), AND(1,1) = 1 (retenue) → réponse = 10 en binaire = 2 en décimal. Ce petit circuit s'appelle un demi-additionneur. En les chaînant, on construit un additionneur complet capable d'additionner des octets entiers — et de là, multiplication, division, et tout le reste.
Votre processeur fait des milliards de ces opérations élémentaires par seconde. Toute l'informatique repose sur ces combinaisons de portes logiques.
Dans un octet, chaque bit a une valeur qui double en allant de droite à gauche, comme les dizaines et centaines en décimal :
| Position | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Valeur | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
| Puissance | 2⁷ | 2⁶ | 2⁵ | 2⁴ | 2³ | 2² | 2¹ | 2⁰ |
Pour convertir un nombre binaire en décimal, on additionne les valeurs des positions où le bit vaut 1.
Écrire le nombre binaire : 11001010
Placer les valeurs sous chaque bit :
| Bit | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Valeur | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
| Compte | 128 | 64 | — | — | 8 | — | 2 | — |
Additionner : 128 + 64 + 8 + 2 = 202
Pour convertir un nombre décimal en binaire, on fait des divisions successives par 2 et on note les restes :
172 ÷ 2 = 86, reste 0
86 ÷ 2 = 43, reste 0
43 ÷ 2 = 21, reste 1
21 ÷ 2 = 10, reste 1
10 ÷ 2 = 5, reste 0
5 ÷ 2 = 2, reste 1
2 ÷ 2 = 1, reste 0
1 ÷ 2 = 0, reste 1
On lit les restes de bas en haut : 10101100. Vérification : 128+32+8+4 = 172 ✅
Au lieu de diviser, on peut procéder par soustraction. On parcourt les puissances de 2 de la plus grande (128) à la plus petite (1) :
172 ≥ 128 ? Oui → bit = 1, reste = 172 − 128 = 44
44 ≥ 64 ? Non → bit = 0
44 ≥ 32 ? Oui → bit = 1, reste = 44 − 32 = 12
12 ≥ 16 ? Non → bit = 0
12 ≥ 8 ? Oui → bit = 1, reste = 12 − 8 = 4
4 ≥ 4 ? Oui → bit = 1, reste = 0
0 ≥ 2 ? Non → bit = 0
0 ≥ 1 ? Non → bit = 0
Résultat : 10101100 — même résultat, souvent plus rapide mentalement.
00000101 sur un octet.Le binaire est précis mais très long à lire : 11001010 c'est 8 caractères pour un seul octet. L'hexadécimal (base 16) est un raccourci : chaque groupe de 4 bits correspond à 1 seul chiffre hex. Un octet entier s'écrit en seulement 2 caractères.
L'hexadécimal utilise 16 symboles : les chiffres 0–9 puis les lettres A–F pour les valeurs 10 à 15.
| Décimal | Binaire (4 bits) | Hex | Décimal | Binaire (4 bits) | Hex | |
|---|---|---|---|---|---|---|
| 0 | 0000 | 0 | 8 | 1000 | 8 | |
| 1 | 0001 | 1 | 9 | 1001 | 9 | |
| 2 | 0010 | 2 | 10 | 1010 | A | |
| 3 | 0011 | 3 | 11 | 1011 | B | |
| 4 | 0100 | 4 | 12 | 1100 | C | |
| 5 | 0101 | 5 | 13 | 1101 | D | |
| 6 | 0110 | 6 | 14 | 1110 | E | |
| 7 | 0111 | 7 | 15 | 1111 | F |
On multiplie chaque chiffre hex par sa puissance de 16 (16¹ = 16 pour le chiffre de gauche, 16⁰ = 1 pour le chiffre de droite) :
Exemple : C8
C = 12, donc 12 × 16 = 192
8 = 8, donc 8 × 1 = 8
Total : 192 + 8 = 200
On divise par 16, on note le reste (converti en lettre si ≥ 10), puis on lit de bas en haut :
255 ÷ 16 = 15, reste 15 → F
15 ÷ 16 = 0, reste 15 → F
Résultat (de bas en haut) : FF — donc 255 = FF en hex
C'est la conversion la plus simple : on groupe les bits par paquets de 4 (de droite à gauche) et on convertit chaque groupe avec le tableau ci-dessus.
Binaire : 11001010
Grouper par 4 : 1100 | 1010
Convertir : 1100 = C, 1010 = A
Résultat : CA
Dans l'autre sens (hex → binaire), on remplace chaque chiffre hex par ses 4 bits : 5F → 0101 1111 → 01011111.
AA:BB:CC:DD:EE:FF — 6 octets en hex séparés par des :2001:0db8:85a3::8a2e:0370:7334 — 8 groupes de 4 chiffres hex#FF5733 = Rouge=FF, Vert=57, Bleu=330x7FFE42A0 dans un débogueurConvertissez ces octets binaires en décimal :
Convertissez ces valeurs en binaire sur 8 bits (complétez les 8 chiffres) :
Convertissez en hexadécimal (2 caractères, ex: FF) :
Convertissez ces valeurs hex en décimal :
Convertissez ces octets binaires en hex (2 caractères) :
Convertissez ces valeurs hex en binaire sur 8 bits :
Une adresse IPv4 = 32 bits représentés en 4 octets décimaux séparés par des points. Chaque octet vaut de 0 (00000000) à 255 (11111111). Total théorique : 2³² = 4 294 967 296 adresses.
| Classe | 1er octet | Masque par défaut | Nb réseaux | Hôtes/réseau | Usage historique |
|---|---|---|---|---|---|
| A | 1–126 | /8 (255.0.0.0) | 126 | 16 777 214 | Très grands réseaux (DoD, universités américaines) |
| B | 128–191 | /16 (255.255.0.0) | 16 384 | 65 534 | Entreprises moyennes |
| C | 192–223 | /24 (255.255.255.0) | 2 097 152 | 254 | Petits réseaux locaux |
| D | 224–239 | — | — | — | Multicast (OSPF, mDNS…) |
| E | 240–255 | — | — | — | Réservé / Recherche |
Le système de classes créait un énorme gaspillage. Une entreprise qui avait besoin de 300 adresses devait prendre une classe B entière (65 534 adresses) car une classe C (254 adresses) ne suffisait pas. Des milliers d'adresses étaient donc réservées mais jamais utilisées.
En 1993, le CIDR (Classless Inter-Domain Routing) a remplacé ce système. Avec le CIDR, on découpe les réseaux au bit près : un /23 donne 510 adresses, un /25 en donne 126. Fini le gaspillage.
Ces plages ne sont jamais routées sur Internet. N'importe qui peut les utiliser librement dans son réseau privé.
| Plage | CIDR | Nb d'adresses | Usage typique |
|---|---|---|---|
10.0.0.0 – 10.255.255.255 |
/8 | 16 777 216 | Grandes entreprises, opérateurs CGNAT |
172.16.0.0 – 172.31.255.255 |
/12 | 1 048 576 | Entreprises moyennes, VPNs |
192.168.0.0 – 192.168.255.255 |
/16 | 65 536 | Box FAI, réseaux domestiques ← vous êtes ici |
| Adresse / Plage | Nom | RFC | Description |
|---|---|---|---|
0.0.0.0 |
Non spécifiée | RFC 1122 | Source inconnue ; route par défaut dans la table de routage |
127.0.0.0/8 |
Loopback | RFC 5735 | La machine elle-même. Jamais envoyé sur le réseau. 127.0.0.1 = localhost. |
169.254.0.0/16 |
APIPA / Link-local | RFC 3927 | Auto-attribuée si DHCP absent. Signe d'un problème réseau ! |
255.255.255.255 |
Broadcast limité | RFC 919 | Tous les hôtes du réseau local. Jamais routé. |
224.0.0.0/4 |
Multicast | RFC 5771 | Groupes : 224.0.0.5 (OSPF), 224.0.0.251 (mDNS) |
100.64.0.0/10 |
CGNAT | RFC 6598 | NAT niveau opérateur. Entre FAI et abonnés. |
192.0.2.0/24 |
TEST-NET | RFC 5737 | Documentation et exemples uniquement. Jamais en production. |
Quand un équipement démarre et ne trouve aucun serveur DHCP, l'OS s'auto-attribue une adresse dans la plage 169.254.x.x. Voir une telle adresse = toujours un problème à résoudre.
L'OS envoie 3 requêtes DHCP DISCOVER en broadcast (attente ~5 s à chaque fois)
Aucune réponse → l'OS génère une IP aléatoire dans
169.254.1.0 à 169.254.254.255
Il envoie un ARP gratuit pour vérifier que personne d'autre n'utilise cette IP
Si libre → l'OS se l'attribue avec masque /16 et aucune passerelle
Communication uniquement avec d'autres hôtes APIPA du même segment — pas d'Internet
Le protocole ARP (Address Resolution Protocol, RFC 826) permet de traduire une
adresse IP (couche 3) en adresse MAC (couche 2). Quand un hôte veut
envoyer un paquet à une IP locale, il doit d'abord connaître l'adresse MAC de destination pour
construire la trame Ethernet. ARP fonctionne exclusivement au sein d'un même domaine de
broadcast : l'émetteur envoie une requête ARP en broadcast
(FF:FF:FF:FF:FF:FF), et seul l'hôte concerné répond en unicast.
Après la réponse, l'hôte stocke le couple IP↔MAC dans son cache ARP
(durée de vie typique : 15–45 min). On peut consulter ce cache avec la commande
arp -a :
| Adresse IP | Adresse MAC | Type |
|---|---|---|
192.168.1.254 |
AA:BB:CC:DD:EE:FF |
dynamique |
192.168.1.10 |
11:22:33:44:55:66 |
dynamique |
192.168.1.1 |
DE:AD:BE:EF:CA:FE |
dynamique |
Puisque ARP fonctionne sur la confiance (n'importe qui peut répondre « c'est moi ! »), un attaquant peut envoyer de fausses réponses ARP pour associer son adresse MAC à l'IP de la passerelle. Tout le trafic du réseau passe alors par sa machine : c'est une attaque Man-in-the-Middle.
Protection : les switches managés proposent le Dynamic ARP Inspection (DAI) qui vérifie les réponses ARP avant de les transmettre. Le DHCP Snooping y contribue aussi en validant les associations IP-MAC.
Exemple : 192.168.10.50/26
Adresse : 11000000.10101000.00001010.00110010
Masque : 11111111.11111111.11111111.11000000 (/26 = 255.255.255.192)
|<---------- 26 bits réseau ---------->|<-6b->|
Réseau : 192.168.10.0 (bits hôte à 0)
Broadcast: 192.168.10.63 (bits hôte à 1)
Hôtes : 2^6 − 2 = 62 utilisables
Le NAT traduit les IPs privées en IP(s) publique(s). Le PAT (NAT overload) permet à plusieurs machines de partager une seule IP publique grâce aux numéros de port.
PC1 192.168.1.10:4500 —→|
PC2 192.168.1.11:3200 —→| Routeur/Box —→ 82.64.10.5:40001 —→ Serveur
PC3 192.168.1.12:8800 —→| (PAT) 82.64.10.5:40002
82.64.10.5:40003
Le NAT/PAT est une rustine géniale mais il a des inconvénients :
C'est justement pour éliminer le NAT qu'IPv6 a été créé : chaque machine peut avoir sa propre adresse publique.
IPv6 = 128 bits écrits en hexadécimal, répartis en 8 groupes de 4 chiffres hex séparés par des :. On peut compresser les groupes de zéros consécutifs avec :: (une seule fois par adresse).
2001:0db8:85a3:0000:0000:8a2e:0370:7334 (adresse complète)
2001:db8:85a3::8a2e:370:7334 (compressée)
Cela représente 2¹²⁸ = 340 282 366 920 938 463 463 374 607 431 768 211 456 adresses possibles — assez pour attribuer des milliards d'adresses à chaque étoile de l'univers observable.
| Type | Préfixe | Équivalent IPv4 | Description |
|---|---|---|---|
| Loopback | ::1/128 |
127.0.0.1 | La machine elle-même |
| Link-local | fe80::/10 |
169.254.x.x | Auto-configurée sur chaque interface (SLAAC) |
| Privé (ULA) | fc00::/7 |
RFC 1918 | Réseau local privé non routable |
| Global unicast | 2000::/3 |
IP publique | Adresse routable sur Internet |
| Multicast | ff00::/8 |
224.x.x.x | Remplace le broadcast (inexistant en IPv6) |
IPv4 offre « seulement » 4,3 milliards d'adresses. Le pool central de l'IANA a été épuisé en février 2011. Les registres régionaux (RIPE en Europe, ARIN en Amérique du Nord…) sont en pénurie depuis plusieurs années. Avec l'explosion des objets connectés (smartphones, montres, frigos, caméras…), le nombre d'appareils dépasse largement le nombre d'adresses IPv4.
Le NAT a permis de gagner du temps en cachant des milliers de machines derrière une seule IP publique. Mais c'est une rustine, pas une solution : le NAT casse la connectivité directe et complique de nombreux protocoles.
En IPv4 avec NAT, vos appareils sont cachés derrière l'adresse publique de votre box. Un attaquant sur Internet ne voit que votre box, pas vos PC. En IPv6, chaque appareil peut recevoir une adresse Global Unicast routable — il est alors directement visible depuis Internet.
Un autre problème : avec la méthode EUI-64, l'adresse IPv6 est calculée à partir de l'adresse MAC de l'appareil. Comme la MAC est fixe, on peut suivre un appareil à la trace sur tous les réseaux qu'il rejoint. Les Privacy Extensions (RFC 4941) règlent ce problème en générant des adresses temporaires aléatoires.
SLAAC (Stateless Address Autoconfiguration) permet à un appareil de se configurer automatiquement en IPv6 sans serveur DHCP. L'appareil prend le préfixe annoncé par le routeur et y ajoute un identifiant d'interface dérivé de son adresse MAC (méthode EUI-64).
Exemple : MAC AA:BB:CC:DD:EE:FF → identifiant EUI-64 A8BB:CCFF:FEDD:EEFF. Préfixe du routeur 2001:db8:1:: → adresse complète 2001:db8:1::a8bb:ccff:fedd:eeff.
Le problème : cette adresse est permanente et prévisible. Quelqu'un qui connaît votre MAC peut vous identifier sur n'importe quel réseau. C'est pourquoi les OS modernes activent les Privacy Extensions : ils génèrent un suffixe aléatoire qui change régulièrement, rendant le traçage beaucoup plus difficile.
La plupart des box FAI françaises supportent déjà le dual-stack : votre connexion fonctionne simultanément en IPv4 et IPv6. Vous pouvez vérifier en tapant ipconfig (Windows) ou ip addr (Linux) — vous verrez probablement une adresse commençant par 2a ou fe80.
Les grands services (Google, YouTube, Netflix, Facebook, Cloudflare) sont tous accessibles en IPv6. Votre navigateur privilégie automatiquement IPv6 quand c'est disponible — vous l'utilisez peut-être déjà sans le savoir.