# IP V4 : structure et calcule

# Calcul d'adressage IPv4 — BTS SIO SISR

## Sommaire

1. Rappels binaires
2. Structure d'une adresse IPv4
3. Classes d'adresses (historique)
4. Masque de sous-réseau et notation CIDR
5. Adresse réseau, adresse de broadcast, plage d'hôtes
6. Méthode rapide de calcul (technique des puissances de 2)
7. Sous-réseautage (subnetting) — découpage en sous-réseaux
8. VLSM (Variable Length Subnet Mask)
9. Adresses privées, publiques et particulières
10. Exercices corrigés
11. Aide-mémoire (cheat sheet)

---

## 1. Rappels binaires

Une adresse IPv4 est codée sur **32 bits**, répartis en **4 octets** de 8 bits, séparés par des points (notation décimale pointée).

<table id="bkmrk-d%C3%A9cimal-binaire-0-00"><thead><tr><th>Décimal</th><th>Binaire</th></tr></thead><tbody><tr><td>0</td><td>00000000</td></tr><tr><td>128</td><td>10000000</td></tr><tr><td>192</td><td>11000000</td></tr><tr><td>224</td><td>11100000</td></tr><tr><td>240</td><td>11110000</td></tr><tr><td>248</td><td>11111000</td></tr><tr><td>252</td><td>11111100</td></tr><tr><td>254</td><td>11111110</td></tr><tr><td>255</td><td>11111111</td></tr></tbody></table>

**Puissances de 2 à connaître par cœur** (bases de tout calcul de sous-réseau) :

<table id="bkmrk-2%E2%81%BF-1-2-4-8-16-32-64-"><thead><tr><th>2ⁿ</th><th>1</th><th>2</th><th>4</th><th>8</th><th>16</th><th>32</th><th>64</th><th>128</th><th>256</th></tr></thead><tbody><tr><td>n</td><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td></tr></tbody></table>

---

## 2. Structure d'une adresse IPv4

Une adresse IPv4 se compose de deux parties :

- **Partie réseau (Net ID)** : identifie le réseau
- **Partie hôte (Host ID)** : identifie la machine sur ce réseau

```
192.168.1.10 / 24
└──── réseau ────┘└hôte┘

```

Le **masque de sous-réseau** indique où se situe la frontière entre les deux parties (bits à 1 = réseau, bits à 0 = hôte).

---

## 3. Classes d'adresses (historique — notion de culture, peu utilisée depuis le CIDR)

<table id="bkmrk-classe-1er-octet-mas"><thead><tr><th>Classe</th><th>1er octet</th><th>Masque par défaut</th><th>Nb réseaux</th><th>Nb hôtes/réseau</th></tr></thead><tbody><tr><td>A</td><td>1 – 126</td><td>255.0.0.0 /8</td><td>126</td><td>16 777 214</td></tr><tr><td>B</td><td>128 – 191</td><td>255.255.0.0 /16</td><td>16 384</td><td>65 534</td></tr><tr><td>C</td><td>192 – 223</td><td>255.255.255.0 /24</td><td>2 097 152</td><td>254</td></tr><tr><td>D</td><td>224 – 239</td><td>(multicast)</td><td>—</td><td>—</td></tr><tr><td>E</td><td>240 – 255</td><td>(réservé/expérimental)</td><td>—</td><td>—</td></tr></tbody></table>

> **127.x.x.x** est réservé à la boucle locale (loopback, ex : 127.0.0.1).

Depuis 1993, le **CIDR** (Classless Inter-Domain Routing) remplace cette logique rigide : on utilise le masque (ou préfixe `/n`) indépendamment de la classe.

---

## 4. Masque de sous-réseau et notation CIDR

Le masque peut s'écrire de deux façons équivalentes :

- **Notation décimale pointée** : `255.255.255.0`
- **Notation CIDR (préfixe)** : `/24`

Le chiffre après le `/` correspond au **nombre de bits à 1** dans le masque.

<table id="bkmrk-cidr-masque-d%C3%A9cimal-"><thead><tr><th>CIDR</th><th>Masque décimal</th><th>Nb bits hôte</th></tr></thead><tbody><tr><td>/8</td><td>255.0.0.0</td><td>24</td></tr><tr><td>/16</td><td>255.255.0.0</td><td>16</td></tr><tr><td>/20</td><td>255.255.240.0</td><td>12</td></tr><tr><td>/24</td><td>255.255.255.0</td><td>8</td></tr><tr><td>/25</td><td>255.255.255.128</td><td>7</td></tr><tr><td>/26</td><td>255.255.255.192</td><td>6</td></tr><tr><td>/27</td><td>255.255.255.224</td><td>5</td></tr><tr><td>/28</td><td>255.255.255.240</td><td>4</td></tr><tr><td>/29</td><td>255.255.255.248</td><td>3</td></tr><tr><td>/30</td><td>255.255.255.252</td><td>2</td></tr></tbody></table>

---

## 5. Adresse réseau, adresse de broadcast, plage d'hôtes

Pour un réseau donné :

- **Adresse réseau (Net ID)** : tous les bits hôte à 0
- **Adresse de broadcast** : tous les bits hôte à **1**
- **Plage d'hôtes utilisables** : toutes les adresses entre les deux (exclues)

**Nombre d'hôtes utilisables** = 2^(nb bits hôte) − 2 (on retire l'adresse réseau et le broadcast)

### Exemple : 192.168.1.0 /26

- Masque : 255.255.255.192 → bits hôte = 6
- Nombre d'adresses total : 2⁶ = 64
- Adresse réseau : **192.168.1.0**
- Adresse de broadcast : **192.168.1.63**
- Plage d'hôtes utilisables : **192.168.1.1 à 192.168.1.62** (62 hôtes)

---

## 6. Méthode rapide de calcul (technique du "pas" / bloc)

C'est **la** méthode à maîtriser pour aller vite en examen ou en TP.

**Principe** : le dernier octet non-nul du masque donne un **pas** (ou "bloc") = 256 − (valeur de l'octet du masque).

### Exemple : trouver le réseau de 192.168.1.130 /26

1. Masque /26 → dernier octet du masque = 192
2. Pas = 256 − 192 = **64**
3. On liste les multiples de 64 : 0, 64, 128, 192
4. 130 se situe entre 128 et 192 → le réseau commence à **128**
5. Adresse réseau : **192.168.1.128**
6. Adresse de broadcast : juste avant le multiple suivant (192) → **192.168.1.191**
7. Plage d'hôtes : **192.168.1.129 à 192.168.1.190**

Cette méthode fonctionne quel que soit l'octet concerné (2ᵉ, 3ᵉ ou 4ᵉ octet) : on repère juste l'octet où le masque n'est ni 255 ni 0, on calcule le pas dessus, et on liste les multiples.

---

## 7. Sous-réseautage (subnetting)

**Objectif** : découper un réseau en plusieurs sous-réseaux plus petits.

**Règle** : chaque bit "emprunté" à la partie hôte pour l'ajouter à la partie réseau **double** le nombre de sous-réseaux et **divise par 2** le nombre d'hôtes disponibles par sous-réseau.

### Exemple : découper 192.168.1.0 /24 en 4 sous-réseaux

- Il faut 4 sous-réseaux → 2ⁿ ≥ 4 → n = 2 bits empruntés
- Nouveau masque : /24 + 2 = **/26** (255.255.255.192)
- Pas = 256 − 192 = 64

<table id="bkmrk-sous-r%C3%A9seau-adresse-"><thead><tr><th>Sous-réseau</th><th>Adresse réseau</th><th>1ère adresse</th><th>Dernière adresse</th><th>Broadcast</th></tr></thead><tbody><tr><td>1</td><td>192.168.1.0/26</td><td>.1</td><td>.62</td><td>.63</td></tr><tr><td>2</td><td>192.168.1.64/26</td><td>.65</td><td>.126</td><td>.127</td></tr><tr><td>3</td><td>192.168.1.128/26</td><td>.129</td><td>.190</td><td>.191</td></tr><tr><td>4</td><td>192.168.1.192/26</td><td>.193</td><td>.254</td><td>.255</td></tr></tbody></table>

### Formules essentielles

- Nombre de sous-réseaux créés = 2^(bits empruntés)
- Nombre d'hôtes par sous-réseau = 2^(bits hôte restants) − 2
- Bits empruntés + bits hôte restants = 32 − (préfixe d'origine)

---

## 8. VLSM (Variable Length Subnet Mask)

Le VLSM permet d'attribuer à **chaque sous-réseau un masque adapté à son besoin réel**, au lieu d'un découpage uniforme. C'est la méthode utilisée en entreprise pour ne pas gaspiller d'adresses.

**Méthode :**

1. Lister les besoins en hôtes par sous-réseau, **du plus grand au plus petit**
2. Pour chaque besoin, trouver le plus petit préfixe qui couvre ce besoin (2^bits hôte − 2 ≥ besoin)
3. Attribuer les plages **dans l'ordre décroissant**, en partant de la première adresse disponible

### Exemple : à partir de 192.168.10.0/24, prévoir :

- Réseau A : 100 hôtes
- Réseau B : 50 hôtes
- Réseau C : 20 hôtes
- Réseau D : 2 hôtes (liaison inter-routeurs)

<table id="bkmrk-besoin-bits-h%C3%B4te-n%C3%A9c"><thead><tr><th>Besoin</th><th>Bits hôte nécessaires</th><th>Masque</th><th>Plage attribuée</th></tr></thead><tbody><tr><td>A : 100</td><td>7 (2⁷−2=126)</td><td>/25</td><td>192.168.10.0 – .127</td></tr><tr><td>B : 50</td><td>6 (2⁶−2=62)</td><td>/26</td><td>192.168.10.128 – .191</td></tr><tr><td>C : 20</td><td>5 (2⁵−2=30)</td><td>/27</td><td>192.168.10.192 – .223</td></tr><tr><td>D : 2</td><td>2 (2²−2=2)</td><td>/30</td><td>192.168.10.224 – .227</td></tr></tbody></table>

> **Astuce d'examen** : toujours traiter les besoins du plus gros au plus petit, sinon les plages se chevauchent ou gaspillent de l'espace.

---

## 9. Adresses privées, publiques et particulières

### Plages d'adresses privées (RFC 1918) — non routables sur Internet

<table id="bkmrk-classe-plage-masque-"><thead><tr><th>Classe</th><th>Plage</th><th>Masque par défaut</th></tr></thead><tbody><tr><td>A</td><td>10.0.0.0 – 10.255.255.255</td><td>/8</td></tr><tr><td>B</td><td>172.16.0.0 – 172.31.255.255</td><td>/12</td></tr><tr><td>C</td><td>192.168.0.0 – 192.168.255.255</td><td>/16</td></tr></tbody></table>

### Adresses particulières

<table id="bkmrk-adresse-%2F-plage-usag"><thead><tr><th>Adresse / plage</th><th>Usage</th></tr></thead><tbody><tr><td>0.0.0.0</td><td>Adresse indéterminée / route par défaut</td></tr><tr><td>127.0.0.0/8</td><td>Boucle locale (loopback)</td></tr><tr><td>169.254.0.0/16</td><td>APIPA (auto-attribution en l'absence de DHCP)</td></tr><tr><td>255.255.255.255</td><td>Broadcast limité</td></tr><tr><td>X.X.X.X (tous bits hôte à 1)</td><td>Broadcast dirigé du sous-réseau</td></tr></tbody></table>

---

## 10. Exercices corrigés

### Exercice 1

Soit l'adresse **10.20.35.200 /21**. Déterminer l'adresse réseau, le broadcast et la plage d'hôtes.

&lt;details&gt; &lt;summary&gt;Corrigé&lt;/summary&gt;

- /21 → masque = 255.255.248.0 → le 3ᵉ octet est concerné (valeur 248)
- Pas = 256 − 248 = 8
- Multiples de 8 autour de 35 : 32 et 40
- Adresse réseau : **10.20.32.0**
- Broadcast : **10.20.39.255**
- Plage d'hôtes : **10.20.32.1 à 10.20.39.254**

&lt;/details&gt;

### Exercice 2

Une entreprise dispose du réseau **172.20.0.0/22**. Elle doit créer 6 sous-réseaux de taille égale. Quel masque utiliser, et quelle est la 3ᵉ plage obtenue ?

&lt;details&gt; &lt;summary&gt;Corrigé&lt;/summary&gt;

- Besoin : 6 sous-réseaux → 2³=8 ≥ 6 → 3 bits empruntés
- Nouveau préfixe : /22 + 3 = **/25**
- Masque : 255.255.255.128, pas sur le dernier octet = 128, mais il faut d'abord voir sur quel octet cela joue : /22 touche déjà le 3ᵉ octet (masque 255.255.252.0). En empruntant 3 bits supplémentaires on descend dans le 4ᵉ octet.
- Taille de chaque sous-réseau : 2^(32−25) = 2⁷ = 128 adresses
- Sous-réseaux : 172.20.0.0/25, 172.20.0.128/25, 172.20.1.0/25, 172.20.1.128/25 …
- 3ᵉ sous-réseau : **172.20.1.0/25** → hôtes de .1 à .126, broadcast .127

&lt;/details&gt;

### Exercice 3

Combien d'hôtes utilisables sur un réseau **/29** ? Sur un **/30** ?

&lt;details&gt; &lt;summary&gt;Corrigé&lt;/summary&gt;

- /29 → 3 bits hôte → 2³−2 = **6 hôtes utilisables**
- /30 → 2 bits hôte → 2²−2 = **2 hôtes utilisables** (typique d'une liaison point-à-point routeur-routeur)

&lt;/details&gt;

---

## 11. Aide-mémoire (cheat sheet)

<table id="bkmrk-cidr-masque-nb-adres"><thead><tr><th>CIDR</th><th>Masque</th><th>Nb adresses</th><th>Nb hôtes utilisables</th></tr></thead><tbody><tr><td>/24</td><td>255.255.255.0</td><td>256</td><td>254</td></tr><tr><td>/25</td><td>255.255.255.128</td><td>128</td><td>126</td></tr><tr><td>/26</td><td>255.255.255.192</td><td>64</td><td>62</td></tr><tr><td>/27</td><td>255.255.255.224</td><td>32</td><td>30</td></tr><tr><td>/28</td><td>255.255.255.240</td><td>16</td><td>14</td></tr><tr><td>/29</td><td>255.255.255.248</td><td>8</td><td>6</td></tr><tr><td>/30</td><td>255.255.255.252</td><td>4</td><td>2</td></tr></tbody></table>

**Méthode en 3 étapes à retenir pour tout exercice :**

1. Identifier l'octet où le masque n'est ni 255 ni 0 → calculer le **pas** (256 − valeur de l'octet du masque)
2. Lister les multiples du pas pour situer l'adresse → obtenir **adresse réseau** et **adresse suivante**
3. Broadcast = adresse juste avant le multiple suivant ; plage d'hôtes = tout ce qui est entre les deux

---

*Fiche réalisée pour révision BTS SIO option SISR — bloc administration réseaux.*