# Adressage IP
> Chaque appareil connecté à un réseau possède une adresse unique qui permet de l'identifier : c'est l'adresse IP.
---------
## Qu'est-ce qu'une adresse IP ?
Une **adresse IP** (Internet Protocol) est un identifiant numérique attribué à chaque appareil connecté à un réseau utilisant le protocole IP.
Elle permet :
- D'**identifier** de manière unique chaque machine sur le réseau
- De **localiser** cette machine pour lui envoyer des données
- De **router** les paquets de données à travers Internet
### Analogie
Tout comme votre adresse postale permet au facteur de vous livrer votre courrier, l'adresse IP permet aux données de trouver leur destinataire sur le réseau.
---------
## IPv4 : Structure d'une adresse
Une adresse IPv4 est composée de **4 octets** (32 bits), séparés par des points.
Chaque octet peut prendre une valeur comprise entre **0 et 255**.
```
Exemple : 192.168.1.25
```
| Octet 1 | Octet 2 | Octet 3 | Octet 4 |
|:-------:|:-------:|:-------:|:-------:|
| 192 | 168 | 1 | 25 |
| 11000000 | 10101000 | 00000001 | 00011001 |
### Nombre d'adresses possibles
Avec 32 bits, on peut théoriquement avoir $`2^{32}`$ = **4 294 967 296** adresses différentes.
> **Problème** : Ce nombre est aujourd'hui insuffisant ! C'est pourquoi IPv6 a été créé (128 bits).
---------
## Adresses publiques et privées
### Adresses publiques
Une adresse **publique** est unique sur Internet. Elle est attribuée par votre fournisseur d'accès (FAI) et permet à votre box d'être identifiée sur le réseau mondial.
### Adresses privées
Les adresses **privées** sont réservées aux réseaux locaux (LAN). Elles ne sont pas routables sur Internet.
| Classe | Plage d'adresses | Nombre d'adresses |
|--------|------------------|-------------------|
| A | 10.0.0.0 → 10.255.255.255 | 16 millions |
| B | 172.16.0.0 → 172.31.255.255 | 1 million |
| C | 192.168.0.0 → 192.168.255.255 | 65 536 |
> **Remarque** : Chez vous, vos appareils ont probablement une adresse en 192.168.x.x
---------
## Le masque de sous-réseau
Le **masque de sous-réseau** permet de distinguer deux parties dans une adresse IP :
- La partie **réseau** (commune à toutes les machines du même réseau)
- La partie **hôte** (unique pour chaque machine)
### Notation
Le masque s'écrit comme une adresse IP, avec des bits à 1 pour la partie réseau et des bits à 0 pour la partie hôte.
| Masque | Notation CIDR | Bits réseau | Bits hôte |
|--------|---------------|-------------|-----------|
| 255.0.0.0 | /8 | 8 | 24 |
| 255.255.0.0 | /16 | 16 | 16 |
| 255.255.255.0 | /24 | 24 | 8 |
| 255.255.255.128 | /25 | 25 | 7 |
| 255.255.255.192 | /26 | 26 | 6 |
### Exemple
Avec l'adresse **192.168.1.25** et le masque **255.255.255.0** (/24) :
```
Adresse IP : 192.168.1.25
Masque : 255.255.255.0
─────────────
Partie réseau : 192.168.1.x (les 3 premiers octets)
Partie hôte : x.x.x.25 (le dernier octet)
```
Toutes les machines du réseau **192.168.1.0/24** auront une adresse de la forme **192.168.1.X** où X varie de 1 à 254.
---------
## Les opérations logiques bit à bit
Le masque de sous-réseau ne sert pas uniquement à visualiser les parties réseau et hôte : il permet aussi de **calculer précisément** les adresses grâce aux opérations logiques appliquées bit à bit.
### Rappel : ET logique et OU logique
| A | B | A ET B | A OU B |
|---|---|--------|--------|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 |
Ces opérations s'appliquent **bit par bit** sur les 32 bits de l'adresse IP.
### Première adresse du réseau — opération ET (AND)
Pour obtenir l'**adresse réseau** (première adresse), on applique un ET logique bit à bit entre l'adresse IP et le masque.
**Exemple** avec 192.168.1.25 / 255.255.255.0 :
```
Adresse IP : 11000000.10101000.00000001.00011001 (192.168.1.25)
Masque : 11111111.11111111.11111111.00000000 (255.255.255.0)
ET logique : ────────────────────────────────────
Résultat : 11000000.10101000.00000001.00000000 (192.168.1.0)
```
→ L'adresse réseau est **192.168.1.0**
> Les bits à **1** du masque "conservent" les bits de l'IP, les bits à **0** les "effacent".
### Dernière adresse du réseau — opération OU (OR)
Pour obtenir l'**adresse de broadcast** (dernière adresse), on applique un OU logique entre l'adresse réseau et le **complément du masque** (tous les bits sont inversés : les 1 deviennent 0 et inversement).
**Exemple** :
```
Masque : 11111111.11111111.11111111.00000000 (255.255.255.0)
Complément masque : 00000000.00000000.00000000.11111111 (0.0.0.255)
Adresse réseau : 11000000.10101000.00000001.00000000 (192.168.1.0)
Complément masque : 00000000.00000000.00000000.11111111 (0.0.0.255)
OU logique : ────────────────────────────────────
Résultat : 11000000.10101000.00000001.11111111 (192.168.1.255)
```
→ L'adresse de broadcast est **192.168.1.255**
> Les bits à **1** du complément "forcent" les bits du résultat à 1 : tous les bits de la partie hôte passent à 1.
### Deux machines peuvent-elles communiquer directement ?
Deux machines peuvent communiquer **sans passer par un routeur** si et seulement si elles appartiennent au **même réseau**.
Pour le vérifier, on calcule l'adresse réseau de chaque machine (IP ET masque) et on compare :
- Adresses réseau **identiques** → même réseau → communication directe ✓
- Adresses réseau **différentes** → réseaux distincts → un routeur est nécessaire ✗
**Exemple 1 — même réseau :**
Machine A : 192.168.1.10 / 255.255.255.0
Machine B : 192.168.1.200 / 255.255.255.0
```
192.168.1.10 ET 255.255.255.0 = 192.168.1.0
192.168.1.200 ET 255.255.255.0 = 192.168.1.0
```
Même réseau → communication directe possible. ✓
**Exemple 2 — réseaux différents :**
Machine A : 192.168.1.10 / 255.255.255.0
Machine B : 192.168.2.10 / 255.255.255.0
```
192.168.1.10 ET 255.255.255.0 = 192.168.1.0
192.168.2.10 ET 255.255.255.0 = 192.168.2.0
```
Réseaux différents → un routeur est nécessaire. ✗
---------
## La méthode magique pour calculer les adresses
Voici une méthode simple et rapide pour calculer les adresses d'un réseau à partir d'une adresse IP et de son masque.
### Le nombre magique
Le **nombre magique** = 256 - valeur de l'octet "intéressant" du masque
L'octet "intéressant" est celui qui n'est ni 255 ni 0.
### Exemple 1 : Masque /24 (255.255.255.0)
**Adresse** : 192.168.1.25/24
L'octet intéressant est le 4ème : **0**
Nombre magique = 256 - 0 = **256** (donc tout le dernier octet)
| Élément | Calcul | Résultat |
|---------|--------|----------|
| Adresse réseau | Mettre 0 dans la partie hôte | **192.168.1.0** |
| Première adresse utilisable | Adresse réseau + 1 | **192.168.1.1** |
| Dernière adresse utilisable | Broadcast - 1 | **192.168.1.254** |
| Adresse de broadcast | Mettre 255 dans la partie hôte | **192.168.1.255** |
| Nombre d'hôtes | $`2^8 - 2 = 254`$ | **254 machines** |
### Exemple 2 : Masque /26 (255.255.255.192)
**Adresse** : 192.168.1.130/26
L'octet intéressant est le 4ème : **192**
Nombre magique = 256 - 192 = **64**
Les adresses réseau sont donc des multiples de 64 : 0, 64, 128, 192...
Puisque 130 est compris entre **128** et **192**, notre réseau commence à 128.
| Élément | Calcul | Résultat |
|---------|--------|----------|
| Adresse réseau | Plus grand multiple de 64 ≤ 130 | **192.168.1.128** |
| Première adresse utilisable | 128 + 1 | **192.168.1.129** |
| Dernière adresse utilisable | 128 + 64 - 1 - 1 = 190 | **192.168.1.190** |
| Adresse de broadcast | 128 + 64 - 1 = 191 | **192.168.1.191** |
| Nombre d'hôtes | $`2^6 - 2 = 62`$ | **62 machines** |
### Exemple 3 : Masque /20 (255.255.240.0)
**Adresse** : 172.16.45.100/20
L'octet intéressant est le 3ème : **240**
Nombre magique = 256 - 240 = **16**
Les adresses réseau (sur le 3ème octet) sont des multiples de 16 : 0, 16, 32, 48...
Puisque 45 est compris entre **32** et **48**, notre réseau commence à 32.
| Élément | Résultat |
|---------|----------|
| Adresse réseau | **172.16.32.0** |
| Première adresse utilisable | **172.16.32.1** |
| Dernière adresse utilisable | **172.16.47.254** |
| Adresse de broadcast | **172.16.47.255** |
| Nombre d'hôtes | $`2^{12} - 2 = 4094`$ | **4094 machines** |
---------
## Tableau récapitulatif des masques courants
| CIDR | Masque | Nombre magique | Nombre d'hôtes |
|------|--------|----------------|----------------|
| /8 | 255.0.0.0 | 256 (octets 2, 3 et 4 libres) | 16 777 214 |
| /16 | 255.255.0.0 | 256 (octets 3 et 4 libres) | 65 534 |
| /24 | 255.255.255.0 | 256 (octet 4) | 254 |
| /25 | 255.255.255.128 | 128 | 126 |
| /26 | 255.255.255.192 | 64 | 62 |
| /27 | 255.255.255.224 | 32 | 30 |
| /28 | 255.255.255.240 | 16 | 14 |
| /29 | 255.255.255.248 | 8 | 6 |
| /30 | 255.255.255.252 | 4 | 2 |
---------
## Exercices
### Exercice 1 : Identification
Pour chaque adresse, indiquez s'il s'agit d'une adresse publique ou privée :
1. 192.168.0.1
2. 8.8.8.8
3. 10.0.0.50
4. 172.20.1.1
5. 91.198.174.192
### Exercice 2 : Calcul d'adresses (méthode magique)
Pour chaque adresse IP et masque, calculez :
- L'adresse réseau
- La première adresse utilisable
- La dernière adresse utilisable
- L'adresse de broadcast
- Le nombre d'hôtes possibles
1. **192.168.10.50/24**
2. **10.0.0.100/8**
3. **172.16.100.200/26**
4. **192.168.5.67/28**
5. **10.10.10.10/20**
### Exercice 3 : Appartenance au même réseau
Les machines suivantes peuvent-elles communiquer directement (sans routeur) ?
1. Machine A : 192.168.1.10/24 et Machine B : 192.168.1.200/24
2. Machine A : 192.168.1.10/24 et Machine B : 192.168.2.10/24
3. Machine A : 10.0.0.5/8 et Machine B : 10.255.255.250/8
4. Machine A : 172.16.50.10/26 et Machine B : 172.16.50.100/26
### Exercice 4 : Conception de réseau
Une entreprise dispose de l'adresse réseau **192.168.0.0/24** et souhaite créer 4 sous-réseaux de taille égale.
1. Quel masque de sous-réseau faut-il utiliser ?
2. Quelles sont les plages d'adresses pour chaque sous-réseau ?
3. Combien de machines peut-on adresser dans chaque sous-réseau ?
> **[Voir la correction](./CORRECTION.md)**
---------
## Pour aller plus loin
### IPv6 : le successeur d'IPv4
#### Pourquoi IPv6 ?
Avec seulement ~4,3 milliards d'adresses disponibles, IPv4 est aujourd'hui saturé. L'explosion des smartphones, objets connectés (IoT) et serveurs a épuisé le stock d'adresses disponibles dès **2011** pour les grandes régions du monde.
> En 2024, on compte plus de **17 milliards** d'appareils connectés à Internet. IPv4 ne pouvait pas suffire.
#### Structure d'une adresse IPv6
Une adresse IPv6 est codée sur **128 bits**, soit 4 fois plus qu'IPv4. Elle s'écrit en **hexadécimal**, sous la forme de 8 groupes de 4 chiffres séparés par des `:`.
```
Exemple : 2001:0db8:85a3:0000:0000:8a2e:0370:7334
```
Pour simplifier l'écriture, on peut :
- Supprimer les zéros en tête dans chaque groupe : `0db8` → `db8`
- Remplacer une suite de groupes nuls consécutifs par `::` (une seule fois)
```
2001:db8:85a3::8a2e:370:7334
```
#### Comparaison IPv4 / IPv6
| Caractéristique | IPv4 | IPv6 |
|----------------|------|------|
| Taille | 32 bits | 128 bits |
| Notation | Décimale pointée | Hexadécimale avec `:` |
| Nombre d'adresses | ~4,3 milliards ($`2^{32}`$) | ~340 undécillions ($`2^{128}`$) |
| Exemple | `192.168.1.1` | `2001:db8::1` |
> $`2^{128}`$ ≈ **340 000 000 000 000 000 000 000 000 000 000 000 000** adresses - de quoi attribuer des milliards d'adresses à chaque grain de sable sur Terre.
#### Et après IPv6 ?
En avril 2026, un chercheur a soumis à l'IETF (l'organisme qui standardise les protocoles Internet) un document proposant un **IPv8**. Il s'agit pour l'instant d'un brouillon très préliminaire, loin d'être adopté - IPv6 lui-même n'est pas encore universellement déployé.
---------
- **NAT** : Network Address Translation, permet à plusieurs machines de partager une seule IP publique
- **DHCP** : Attribution automatique des adresses IP
---------
Auteur : Florian Mathieu
Licence CC BY NC
Ce cours est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.