# Réseau - Protocole DHCP

<table id="bkmrk-difficult%C3%A9%2A-%3Cdescrip" style="border-collapse: collapse; width: 100%; height: 46.8px; border-width: 1px; border-style: hidden;"><colgroup><col style="width: 20%;"></col><col style="width: 80%;"></col></colgroup><tbody><tr style="height: 46.8px;"><td style="height: 46.8px; border: 1px groove rgb(52,73,94);">[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/wYQnovice-png.png)](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/wYQnovice-png.png)  
</td><td style="height: 46.8px; border-width: 1px; background-color: rgb(236,202,250); vertical-align: top;">Difficulté : Novice

Résumé :

- **OSI** : couche 7 (Application) sur couche 4 (Transport)
- **Type** : UDP
- **Port** : 67, 68

</td></tr></tbody></table>

---

### <span style="color: rgb(52,73,94);">**<span style="text-decoration: underline;">I. Introduction</span>**</span>

Le protocole DHCP (**D**ynamic **H**ost **C**onfiguration **P**rotocol) est un protocole permettant la configuration réseau automatique d'un ou plusieurs hôtes par un serveur.

Cela permet de gérer un grand nombre d'hôtes sans nécessiter une intervention des administrateurs.

Les échanges entre le client et le serveur se font entre la couche 5 et 7 du modèle OSI.

---

### <span style="color: rgb(52,73,94);">**<span style="text-decoration: underline;">II. Diagramme </span>**</span>

<div drawio-diagram="160"><img src="https://docs.labs404.fr/uploads/images/drawio/2026-07/drawing-1-1768895411-png.png" alt="drawing-1-1768895411.png"/></div>

##### <span style="color: rgb(53,152,219);">*1 - DHCP Discover*</span>

L'hôte configuré en DHCP envoie un **broadcast** général. Il place son **adresse MAC** dans le paquet.

Il utilise l'ip **0.0.0.0** en source et envoie son broadcast à **255.255.255.255** en destination.

Cela lui permet d'adresser toutes les machines présentes sur le réseau.

Si un serveur DHCP se trouve à portée, il captera le broadcast et répondra alors.

##### <span style="color: rgb(53,152,219);">*2 - DHCP Offer*</span>

Le serveur DHCP reçoit la requête et, comme le PC de destination n'a pas d'adresse IP, il va alors répondre également en **broadcast.**

<p class="callout info">**Info** : Certains clients acceptent une réponse en unicast. Le DHCP pourra alors être configuré pour leur répondre en unicast.</p>

Il va envoyer dans le paquet la **configuration réseau** (ip, masque, passerelle, dns, etc...) ainsi qu'une **durée de bail** et l'**adresse MAC du pc demandeur**.

Si plusieurs serveurs DHCP sont présents, selon leurs configuration, l'un d'entre eux ou tous répondront à la requête et le client fera son choix (généralement basé sur la réponse la plus rapide).

##### <span style="color: rgb(53,152,219);">*3 - DHCP Request / DHCP Decline*</span>

L'ensemble des hôtes présents sur le réseau reçoivent la réponse.

Comme le demandeur avais placé son **adresse MAC** dans le paquet, il comprends que la réponse lui est adressée. Les autres hôtes lisent l'adresse MAC, et comme ce n'est pas la leur, ignorent le message.

Si plusieurs serveurs DHCP ont répondus, le client fera alors son choix (généralement basé sur la réponse la plus rapide).

Ensuite, deux scénarii :

- Le client vérifie sa configuration, voit que la configuration proposée correspond à son besoin et ne rentre pas en conflit avec l'une de ses configuration déjà existantes. Il demandera alors au serveur si il peut utiliser cette configuration avec un message **DHCP Request**.
- Le client vérifie sa configuration et voit que la configuration proposée rentre en conflit avec l'une de ses configuration. Il refuse donc l'offre et renvoie un message **DHCP Decline**. Puis l'échange s'arrête là.

##### <span style="color: rgb(53,152,219);">*4 - DHCP Ack*</span>

Le serveur qui a reçu le message de requête va alors la prendre en compte et renvoyer au client un message en lui indiquant qu'il a bien **Validé** cette demande.

##### <span style="color: rgb(53,152,219);">*Suite à cet échange*</span>

Une fois cet échange terminé le serveur va alors enregistrer dans sa base l'adresse MAC du PC ayant fait la demande ainsi que la configuration qui lui a été attribuée ainsi que la durée du bail.

Un compteur se met alors en route. A la fin de celui-ci, le **bail** étant terminé, le serveur va **libérer** cette configuration et la remettre dans son **pool** de disponibilité. Elle pourra donc ensuite être réattribuée à un autre hôte qui fera une demande.

---

### <span style="color: rgb(52,73,94);">**<span style="text-decoration: underline;">III. Configuration</span>**</span>

Lors de la configuration d'un serveur DHCP, il va falloir un minimum d'informations :

- l'adresse IP de début de plage (la première qui sera proposée aux hôtes)
- l'adresse IP de fin de plage (la dernière qui sera proposée) 
    - toutes les adresses IP qui seront entre les deux constitueront la **Plage DHCP** ou le **Pool d'adresses**.
- le masque de sous-réseau
- l'adresse de la passerelle

Il est possible de fournir au client plus de configurations :

- Les serveurs de noms (**DNS**)
- Les serveurs de temps (**NTP**)
- Les serveurs **TFTP** (serveurs de démarrage réseau, pour faire booter un PC sur une image situé sur le réseau)
- etc...

---

### <span style="color: rgb(52,73,94);">**<span style="text-decoration: underline;">IV. Autres principes</span>**</span>

**Réservation** : Il est possible de réserver une configuration. Lorsqu'un hôte obtient une configuration, on pourra demander au serveur de lui réattribuer systématiquement la même.

**Plage d'exclusion** : Il est également possible de définir à l'intérieur des plages d'adresses des exclusions, afin de préciser que certaines adresses ne doivent pas être distribuées.

---

### <span style="color: rgb(52,73,94);">**<span style="text-decoration: underline;">IV. Relais DHCP</span>**</span>

Comme vu plus haut, le DHCP s'appuie essentiellement sur des broadcasts. Hors, le problème est que les broadcast ne passent pas les routeurs.

Si l'on veut distribuer des adresses sur un ou plusieurs réseaux se situant derrière des routeurs, il faudra donc utiliser un **relai DHCP**.

Le rôle de celui-ci sera de prendre le **broadcast** envoyé par le client et de le renvoyer sous forme d'**unicast** au serveur DHCP. Puis de récupérer la réponse de celui-ci et de la retransmettre en **broadcast** dans le réseau d'origine.

Ainsi :

<div drawio-diagram="161"><img src="https://docs.labs404.fr/uploads/images/drawio/2026-07/drawing-1-1759516338-png.png" alt="drawing-1-1759516338.png"/></div>

---

### <span style="color: rgb(52,73,94);">**<span style="text-decoration: underline;">V. Cas de plusieurs réseaux</span>**</span>

Dans le cas où un serveur devrait servir plusieurs étendues **réseaux,** lors du passage du relais, celui-ci glisse dans le paquet (champ giaddr) son adresse IP.

En se basant sur cette adresse, le serveur DHCP choisit alors l'étendue adaptée et fait une proposition dans ce sens.

C'est ainsi que le tri se fait entre les demandes.

<p class="callout info">**Info** : A noter que si le relai DHCP peut être une machine dans le réseau, certains routeurs proposent nativement cette fonctionnalité.</p>