Fonctionnement
Il est important de garder en tête que puisque le protocole sert à attribuer des adresses IP aux clients d'un réseau au moment de leur connexion, la communication entre le serveur et le client se fait entièrement sans adresse IP. La communication entre le client et le serveur est en UDP puisque sans adresse, il est impossible d'établir une connexion TCP et a lieu au port 67.
Le contenu de chaque message envoyé lors d'interactions DHCP est catégorisé en options qui seront décrites dans la suite de ce document.
Pour éviter de garder en mémoire tous les appareils s'étant connectés au réseau, l'attribution d'une adresse IP par un serveur DHCP est temporaire et se nomme un bail.
Découverte
À la connexion d'un client configuré en adressage dynamique/DHCP, l'appareil envoie un broadcast demandant à tout serveur DHCP rejoignable de signaler son existence. L'adresse MAC de destination est donc FF:FF:FF:FF:FF:FF pour que la demande soit acheminée à tous les appareils du réseau. Évidemment, pour que la demande soit acheminée au serveur, il est nécessaire à cette étape que le serveur et le client soient reliés au même domaine de diffusion.
Ce type de requête contient habituellement le type de message envoyé (option 53 avec une valeur de 1), le nom d'hôte du client (option 12), la liste de paramètres demandés (option 55) et l'identifiant du client contenant le type de matériel demandant l'adresse et son adresse physique/MAC (option 61).
Les paramètres qui sont demandés sont généralement une adresse IP, un masque de sous-réseau, l'adresse IP d'une passerelle par défaut, des routes statiques, un serveur DNS et un serveur NTP.
Voici le contenu pertinent d'une demande de découverte DHCP tel que présenté dans Wireshark :
Option: (53) DHCP Message Type (Discover)
DHCP: Discover (1)
Option: (12) Host Name
Host Name: Client
Option: (55) Parameter Request List
Parameter Request List Item: (1) Subnet Mask
Parameter Request List Item: (121) Classless Static Route
Parameter Request List Item: (3) Router
Parameter Request List Item: (33) Static Route
Parameter Request List Item: (6) Domain Name Server
Parameter Request List Item: (42) Network Time Protocol Servers
Option: (61) Client identifier
Hardware type: Ethernet (0x01)
Client MAC address: 0c:c7:cb:cc:00:00 (0c:c7:cb:cc:00:00)
Option: (255) End
Option End: 255
Offre
Lorsque le serveur détecte une demande de découverte, celui-ci consultera sa configuration (spécifiquement les étendues d'adresses qu'il est configuré pour servir) et la liste des baux émis qui ne sont pas expirés. S'il reste des adresses qui ne sont pas encore attribuées dans les étendues d'adresses du serveur, le serveur effectuera une requête ARP pour s'assurer qu'aucun appareil soit configuré manuellement avec cette adresse et émettera alors une offre d'adresse destiné à l'adresse MAC du client.
Pour composer son offre, le serveur consultera sa configuration pour déterminer les options à envoyer au client en fonction de l'adresse IP qu'il offrira. L'option 53 de cette réponse aura comme valeur 2 pour indiquer qu'il s'agit d'une offre et contiendra l'ensemble des options que le client a demandé.
Voici le contenu pertinent d'une offre DHCP offrant l'adresse IP 192.168.0.254/24 à un client tel que présenté dans Wireshark :
Your (client) IP address: 192.168.0.254
Next server IP address: 192.168.0.1
Option: (53) DHCP Message Type (Offer)
DHCP: Offer (2)
Option: (1) Subnet Mask (255.255.255.0)
Subnet Mask: 255.255.255.0
Option: (3) Router
Router: 192.168.0.1
Option: (51) IP Address Lease Time
IP Address Lease Time: 30 minutes (1800)
Option: (54) DHCP Server Identifier (192.168.0.1)
DHCP Server Identifier: 192.168.0.1
Option: (255) End
Option End: 255
Requête