---
title: Adressage IPV4
tags: IPV4
description: résumé cours introduction aux réseau, adressage IPV4
---
# Adressage IPV4
---
## Adresse IP
- permet d'identifier une machine de manière unique sur un réseau donné
- est représentée par 4 octets, soit 32 bits: `192.168.1.2`
- Valeur possible d'un octet de 0 à 255, soit 256 possibilités
- n'a du sens qu'avec un masque de réseau
----
exemple d'adresse IP et de masque réseau
```
// adresse IP classe C
192.168.1.2
// masque de sous réseau par défaut
// pour les adresses de classe C
255.255.255.0
```
----
### Ecriture d'une adresse IP binaire
```
192 . 168 . 1 . 2
// écriture en binaire de 192.168.1.2
1100 0000.1010 1000.0000 0001.0000 0010
```
---
## Le masque de sous-réseau
- permet de faire la séparation entre la partie réseau et la partie machine de l’adresse IP
- la partie réseau est représentée par des bits à 1, et la partie machine par des bits à 0
----
Le masque 255.255.255.0 correspond par exemple à un sous-réseau de 24 bits et permet d'avoir 254 hôtes.
Le masque de sous-réseau permet de déterminer les deux parties d'une adresse IP correspondant respectivement au numéro du réseau et au numéro de l'hôte.
**Il est obtenu en mettant à 1 les bits du réseau et à 0 les bits de l'hôte**.
----
### Ecriture d'un masque de sous-réseau en binaire
```
255 . 255 . 255 . 0
// écriture en binaire de 255.255.255.0
1111 1111.1111 1111.1111 1111.0000 0000
```
---
## Adressage en classe (classfull)
| Classe | Bits de départ | Début | Fin | Notation CIDR par défaut | Masque de sous-réseau par défaut |
| ------ | ----- | ----- | ----- | ----- | ----- |
| Classe A | 0 | 0.0.0.0 | 126.255.255.2553(127 est réservé) | /8 | 255.0.0.0 |
| Classe B | 10 | 128.0.0.0 | 191.255.255.255 | /16 | 255.255.0.0 |
| Classe C | 110 | 192.0.0.0 | 223.255.255.255 | /24 | 255.255.255.0 |
| Classe D (multicast) | 1110 | 224.0.0.0 | 239.255.255.255 | | 255.255.255.255 |
| Classe E (réservée) | 1111 | 240.0.0.0 | 255.255.255.255 | | non défini |
----
Cela veut dire que :
- la classe A commence à 0.0.0.0 et se se termine normalement à 127.255.255.255
- mais 127.x.x.x est utilsée pour le loopback, c'est le localhost de la machine
- (on peut donc dire que) la classe A se termine par 126.255.255.255
----
- la classe B commence à 128.0.0.0, pourquoi 128 ?
- dans le tableau qui précède, dans la colonne "bits de départ" de la classe B vous voyez 10 (un zéro pas dix hein :smirk:), cela veut dire que le premier octet commence par 10 en binaire, la première adresse de la classe B est donc
- `1000 0000.0000 0000.0000 0000.0000 0000` en binaire, ce qui donne en décimal `128.0.0.0`
----
- la classe C ...
----
#### Exemple : Identifier la partie réseau et la partie hôte d'une adresse IP
```
// pour le masque réseau 255.255.255.0
__________Réseau____________ _Machine
| | |
1111 1111.1111 1111.1111 1111.0000 0000
// écriture en binaire de 255.255.255.0
```
la partie de gauche avec les 1 identifie le réseau, les 0 identifie les hôtes.
----
#### Exercice
nous avons les informations suivantes :
- IP : 192.168.1.2
- masque sous réseau par défaut : 255.255.255.0
----
écriture en binaire
```
// écriture en binaire de 192.168.1.2
1100 0000.1010 1000.0000 0001.0000 0010
// écriture en binaire de 255.255.255.0
1111 1111.1111 1111.1111 1111.0000 0000
```
----
Ce qui est susceptible d'être demandé lors d'un examen :
1. Déterminer l'ID réseau
2. Déterminer le nombre d'adresses utilisables
3. Déterminer l'adresse de *broadcast* du réseau
4. Déterminer la plage adressable
----
##### Déterminer l'ID réseau
Il s'obtient avec un *ET* logique de l'adresse IP et du masque de sous réseau :
```
// écriture en binaire de 192.168.1.2
1100 0000.1010 1000.0000 0001.0000 0010
// ET (logique)
// écriture en binaire de 255.255.255.0
1111 1111.1111 1111.1111 1111.0000 0000
// Résultat :
1100 0000.1010 1000.0000 0001.0000 0000
// conversion du résultat en décimal
192 . 168 . 1 . 0
```
L'ID réseau est donc `192.168.1.0`.
----
##### Déterminer le nombre d'adresse utilisable
la formule :
$$
nombreAdressesUtilisables = 2^n - 2
$$
`n` étant égal au nombre de bits représentant la partie hôte (dans notre cas il y a 8 zéro)
```
1111 1111.1111 1111.1111 1111.0000 0000
```
$$
2^8 - 2 = 256 - 2 = 254
$$
----
##### Déterminer l'adresse de *broadcast* du réseau
à partir de l'ID réseau, passer tous les 0 de la partie qui identifie l'hôte à 1.
```
1100 0000.1010 1000.0000 0001.0000 0000
// les 8 derniers 0 identifiant l'hôte, on les passe à 1 soit :
1100 0000.1010 1000.0000 0001.1111 1111
192.168.1.255 // résultat en décimal
```
L'adresse de broadcast est `192.168.1.255`
----
##### Déterminer la plage adressable
Nous avons donc un réseau identifié par 192.168.1.0 et son adresse de broadcast 192.168.1.255.
la plage d'adresses IP utilisables va de 192.168.1.1 à 192.168.1.255.
A RAJOUTER EXERCICE/EXEMPLE PLUS COMPLEXE.
---
## CIDR
Bien que les sous-réseaux soient encore fréquemment définis aux frontières d'octet, les réseaux 24 bits étant les plus courants, d'autres masques sont désormais possibles.
exemple avec 192.168.1.68/26
----
Ce que l'on peut déterminer (et qui peut donc être demandé en examen) :
1. Quel est l'ID réseau
2. Quel est l'adresse du premier hôte
3. Quel est l'adresse de broadcast
4. Déterminer la plage adressable
----
### Déterminer l'ID réseau
Avec l'adresse IP :
```
// adresse IP en décimal
192.168.1.68
// adresse ip en binaire
1100 0000.1010 1000.0000 0001.0100 0100
```
----
et le masque /26
```
// masque /26 en binaire
1111 1111.1111 1111.1111 1111.1100 0000
// masque /26 en décimal
255.255.255.192
```
----
l'ID réseau se détermine avec un ET logique entre l'adresse IP et le masque :
```
1100 0000.1010 1000.0000 0001.0100 0100
ET(logique) 1111 1111.1111 1111.1111 1111.1100 0000
Résultat : 1100 0000.1010 1000.0000 0001.0100 0000
192.168.1.64 // ID réseau en décimal
```
----
### Déterminer l'adresse du premier hôte
Il suffit de rajouter 1 à la partie "hôte" de l'adresse ID réseau 192.168.1.**64** (en décimale !) : ce qui donne comme résultat 192.168.1.**65** dans notre exemple.
----
### Déterminer l'adresse de broadcast
à partir de l'ID réseau, on bascule à 1 tous les bits de la partie hôte :
```
192.168.1.64 // ID réseau décimal
1100 0000.1010 1000.0000 0001.0100 0000 // ID réseau en binaire
1100 0000.1010 1000.0000 0001.0111 1111 // l'adresse broadcast (dans notre exemple les 6 derniers 0 passent à 1)
192.168.1.127
```
----
### Déterminer l'adresse du dernier hôte
Il suffit de soustraire 1 à la partie "hôte" de l'adresse de broadcast 192.168.1.**127** (en décimale !) : ce qui donne comme résultat 192.168.1.**126** dans notre exemple.
---
# DHCP
DHCP est un protocole réseau dont le rôle est d’**assurer la configuration automatique des paramètres IP** d'une machine.
1. **Discover** (machine hôte) envoie une requête sur le broadcast
2. **Offer** (serveur D.H.C.P.)
3. **Request**
4. **ACK** (serveur D.H.C.P.)
----

----
*[CIDR]: Classless Inter-Domain Routing
*[DHCP]: Dynamic Host Configuration Protocol, protocole de configuration dynamique des hôtes