Avant de commencer
- Savoir lire un masque et un préfixe : masques de sous-réseau et notation CIDR
- Avoir sous la main l'antisèche des masques
En clair
Un réseau est une suite continue d'adresses. Calculer un sous-réseau, c'est retrouver où cette suite commence (l'adresse du réseau), où elle finit (l'adresse de diffusion) et ce qu'il y a entre les deux (les adresses des machines). Une seule astuce suffit : les réseaux commencent toujours sur un multiple d'un même nombre, le pas.
Ce qu'on cherche
Pour une adresse donnée avec son préfixe, par exemple 192.168.10.77/27, on veut six informations :
| Information | Définition |
|---|---|
| Masque | La traduction du préfixe en notation classique |
| Adresse du réseau | La première adresse de la plage ; elle désigne le réseau lui-même |
| Adresse de diffusion | La dernière adresse ; elle s'adresse à toutes les machines du réseau |
| Première machine | Adresse du réseau + 1 |
| Dernière machine | Adresse de diffusion − 1 |
| Nombre de machines | 2^(32 − préfixe) − 2 |
1. La méthode du pas (la plus rapide)
Elle se fait de tête, en cinq étapes. Exemple : 192.168.10.77/27.
Étape 1 : trouver l'octet qui travaille. C'est l'octet du masque qui n'est ni 255 ni 0 (ou le dernier 255 si le préfixe est un multiple de 8). Un /27 donne 255.255.255.224 : c'est le 4e octet, qui vaut 224.
Étape 2 : calculer le pas. Pas = 256 − 224 = 32.
Étape 3 : lister les multiples du pas dans cet octet : 0, 32, 64, 96, 128…
Étape 4 : encadrer l'adresse. Le 4e octet de l'adresse vaut 77. Il se trouve entre 64 et 96. Le réseau commence donc à 64, et le réseau suivant à 96.
Étape 5 : en déduire le reste.
| Information | Résultat |
|---|---|
| Masque | 255.255.255.224 |
| Adresse du réseau | 192.168.10.64 |
| Adresse de diffusion | 192.168.10.95 (96 − 1) |
| Première machine | 192.168.10.65 |
| Dernière machine | 192.168.10.94 |
| Nombre de machines | 2⁵ − 2 = 30 |
Astuce
Les octets avant l'octet qui travaille sont recopiés tels quels. Les octets après valent 0 dans l'adresse du réseau et 255 dans l'adresse de diffusion. Ce détail compte quand le pas tombe sur le 2e ou le 3e octet (exemples 2 et 3).
2. La méthode binaire (pour comprendre et vérifier)
C'est ce que fait réellement la machine. On ne s'intéresse qu'à l'octet qui travaille, ici le 4e.
Adresse du réseau : un ET logique bit à bit entre l'adresse et le masque. Un bit reste à 1 seulement s'il vaut 1 des deux côtés.
Adresse 77 0100 1101
Masque 224 1110 0000
---------
ET 0100 0000 = 64 → réseau 192.168.10.64
Adresse de diffusion : on garde les bits de la partie réseau, et on passe tous les bits de la partie machine (les 0 du masque) à 1.
Masque 224 111 00000 (3 bits réseau, 5 bits machine)
Réseau 64 010 00000
Diffusion 95 010 11111 → diffusion 192.168.10.95
Les deux méthodes donnent le même résultat : le pas est simplement un raccourci du calcul binaire.
3. Exemple 2 : le pas sur le 3e octet
Adresse : 172.16.45.200/20.
- Masque d'un /20 :
255.255.240.0. L'octet qui travaille est le 3e (240). - Pas = 256 − 240 = 16.
- Multiples de 16 : 0, 16, 32, 48, 64…
- Le 3e octet de l'adresse vaut 45 : il est entre 32 et 48.
- On applique la règle de l'encadré : le 4e octet vaut 0 pour le réseau et 255 pour la diffusion.
| Information | Résultat |
|---|---|
| Masque | 255.255.240.0 |
| Adresse du réseau | 172.16.32.0 |
| Adresse de diffusion | 172.16.47.255 |
| Première machine | 172.16.32.1 |
| Dernière machine | 172.16.47.254 |
| Nombre de machines | 2¹² − 2 = 4 094 |
Attention
Ici, 172.16.40.0 ou 172.16.47.0 sont des adresses de machines tout à fait valides, même si elles finissent par 0. Seules la toute première (172.16.32.0) et la toute dernière (172.16.47.255) adresse du réseau sont réservées.
4. Exemple 3 : le pas sur le 2e octet
Adresse : 10.5.130.9/12.
- Masque d'un /12 :
255.240.0.0. L'octet qui travaille est le 2e (240). - Pas = 16.
- Multiples de 16 : 0, 16, 32…
- Le 2e octet vaut 5 : il est entre 0 et 16.
- Les 3e et 4e octets valent 0 pour le réseau et 255 pour la diffusion.
| Information | Résultat |
|---|---|
| Masque | 255.240.0.0 |
| Adresse du réseau | 10.0.0.0 |
| Adresse de diffusion | 10.15.255.255 |
| Première machine | 10.0.0.1 |
| Dernière machine | 10.15.255.254 |
| Nombre de machines | 2²⁰ − 2 = 1 048 574 |
5. Deux questions qu'on se pose souvent
Ces deux machines sont-elles dans le même réseau ?
192.168.10.77/27 et 192.168.10.100/27 ? Avec un pas de 32, la première est dans le réseau qui commence à 64 (de 64 à 95), la seconde dans celui qui commence à 96 (de 96 à 127). Réponse : non. Elles ne peuvent pas communiquer directement : il leur faut passer par un routeur.
Quel préfixe pour N machines ?
On cherche le plus petit réseau dont le nombre de machines est au moins égal à N. Exemple pour 50 machines :
| Préfixe | Machines | Suffisant ? |
|---|---|---|
| /27 | 30 | Non |
| /26 | 62 | Oui |
Prévoyez de la marge : la passerelle et les équipements réseau prennent aussi des adresses, et un réseau ne fait que grandir.
6. Vérifier avec un outil
Une fois le calcul fait à la main, un outil permet de le confirmer.
ipcalc (Linux, macOS avec Homebrew)
sudo apt install ipcalc
ipcalc 192.168.10.77/27
Extrait du résultat :
Network: 192.168.10.64/27
HostMin: 192.168.10.65
HostMax: 192.168.10.94
Broadcast: 192.168.10.95
Hosts/Net: 30
Sur macOS, l'outil s'installe avec brew install ipcalc.
Python (tous systèmes)
Python est fourni avec un module dédié aux adresses IP. Cette ligne fonctionne sous Linux, macOS et Windows (remplacez python3 par py sous Windows) :
python3 -c "import ipaddress; n=ipaddress.ip_interface('192.168.10.77/27').network; print(n, n.broadcast_address, n.num_addresses-2)"
Résultat :
192.168.10.64/27 192.168.10.95 30
7. Entraînez-vous
| Adresse | Réseau | Diffusion | Machines |
|---|---|---|---|
192.168.1.200/26 |
192.168.1.192 |
192.168.1.255 |
62 |
192.168.50.33/28 |
192.168.50.32 |
192.168.50.47 |
14 |
10.10.10.10/30 |
10.10.10.8 |
10.10.10.11 |
2 |
172.20.130.4/18 |
172.20.128.0 |
172.20.191.255 |
16 382 |
10.200.5.6/14 |
10.200.0.0 |
10.203.255.255 |
262 142 |
À retenir
- Pas = 256 − la valeur de l'octet qui travaille dans le masque.
- Le réseau commence sur le multiple du pas juste en dessous de l'adresse ; la diffusion est juste avant le multiple suivant.
- Les octets après l'octet qui travaille valent 0 (réseau) et 255 (diffusion).
- Première machine = réseau + 1, dernière machine = diffusion − 1.
- Vérifiez avec
ipcalcou le moduleipaddressde Python.