Skip to main content

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

À cette étape, le client n'a pas encore appliqué son adresse IP et communique encore uniquement à la couche 2 (par adresses MAC). Le contenu de la requête pertinent ici est l'option 50 qui indique l'adresse demandée par le client. Dans le cas démontré dans ce document, le client n'avait pas d'adresse favorite et a seulement demandé l'adresse qui lui a été offerte. Cette option aurait pu être mentionnée à l'étape de la découverte si un client avait une adresse favorite (soit une adresse configurée ou préalablement attribuée par ce serveur)

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 :

    Option: (50) Requested IP Address (192.168.0.254)
        Length: 4
        Requested IP Address: 192.168.0.254

Admission

Lorsque le serveur DHCP reçoit la requête, il confirmera à ce moment que le client peut appliquer la configuration IP offerte pour la durée du bail mentionnée dans l'option 51.

    Option: (51) IP Address Lease Time
        IP Address Lease Time: 30 minutes (1800)

À l'expiration du bail, le client fera parvenir une requête identique à la précédente pour recevoir une nouvelle admission et ceci renouvellera la période de validité de son bail.