Dynamic Host Configuration Protocol (DHCP) est un terme anglais désignant un protocole réseau dont le rôle est d'assurer la configuration automatique des paramètres TCP/IP d'une station, notamment en lui assignant automatiquement une adresse IP et un masque de sous-réseau. DHCP peut aussi configurer l'adresse de la passerelle par défaut, des serveurs de noms DNS et des serveurs de noms NBNS (connus sous le noms de serveurs WINS sur les réseaux de la société Microsoft).
La conception initiale d'IP supposait la préconfiguration de chaque ordinateur connecté au réseau avec les paramètres TCP/IP adéquats : c'est l'adressage statique. Sur des réseaux de grandes dimensions ou étendues, où des modifications interviennent souvent, l'adressage statique engendre une lourde charge de maintenance et des risques d'erreurs. En outre les adresses assignées ne peuvent être utilisées même si l'ordinateur qui la détient n'est pas en service : un cas typique où ceci pose problème est celui des fournisseurs d'accès à internet (FAI ou ISP en anglais), qui ont en général plus de clients que d'adresses IP à leur disposition, mais dont tous les clients ne sont jamais connectés en même temps.
DHCP apporte une solution à ces deux inconvénients :
Le protocole a été présenté pour la première fois en octobre 1993 et est défini par la RFC1531, modifiée et complétée par les RFC 1534, RFC 2131 et RFC 2132.
Ce protocole peut fonctionner avec IPv4; il fonctionne aussi avec IPv6.
Le client peut aussi recevoir un type de nœud NetBios.
La liste des options que le serveur DHCP peut accepter est consultable dans la RFC 2132 : Options DHCP et Extensions fournisseur BOOTP, Chapitre RFC 1497 : Extensions fournisseur.
Les serveurs DHCP, bien entendu, doivent être pourvus d'une adresse IP statique.
Les adresses IP dynamiques sont octroyées pour une durée limitée, qui est transmise au client dans l'accusé de réception qui clôture la transaction DHCP.
La valeur T1 qui l'accompagne détermine la durée après laquelle le client commence à demander périodiquement le renouvellement de son bail auprès du serveur qui lui a accordé son adresse (couramment la moitié de la durée du bail). Cette fois la transaction est effectuée par transmission IP classique, d'adresse à adresse.
Si lorsque le délai fixé par la deuxième valeur, T2, est écoulé, le bail n'a pas pu être renouvelé (par exemple si le serveur DHCP d'origine est hors service), le client demande une nouvelle allocation d'adresse par diffusion.
Si au terme du bail le client n'a pu ni en obtenir le renouvellement, ni obtenir une nouvelle allocation, l'adresse est désactivée et il perd la faculté d'utiliser le réseau TCP/IP de façon normale.
Lorsque le serveur DHCP et le client ne figurent pas sur le même segment IP, les diffusions émises par ce dernier ne parviennent pas au serveur parce que les routeurs, ne transmettent pas les diffusions générales (la RFC 1542 décrit la possibilité pour un routeur de laisser passer les diffusions DHCP). Dans ce cas on utilise un agent de relais DHCP.
Cet hôte particulier est configuré avec une adresse IP statique, et connaît l'adresse d'un serveur DHCP auquel il transmet les requêtes DHCP qui lui parviennent sur le port 68 (écouté par le programme agent de relais). Il diffuse sur son segment (qui est aussi celui du client) les réponses qu'il reçoit du serveur DHCP.
Pour qu'un serveur DHCP puisse servir des adresses IP, il est nécessaire de lui donner un " réservoir " d'adresses dans lequel il pourra puiser : c'est la plage d'adresses (scope). Il est possible de définir plusieurs plages, disjointes ou contiguës.
Les adresses du segment qui ne figurent dans aucune plage mise à la disposition du serveur DHCP ne seront en aucun cas distribuées, et peuvent faire l'objet d'affectations statiques (couramment : pour les serveurs nécessitant une adresse IP fixe, les routeurs, les imprimantes réseau...).
Il est également possible d'exclure pour un usage en adressage statique par exemple, des adresses ou blocs d'adresses compris dans une plage.
Enfin, on peut effectuer des réservations d'adresses en limitant la possibilité d'octroi de cette adresse au client possédant une adresse physique donnée. Ceci peut s'avérer utile pour des machines dont l'adresse doit rester fixe mais dont on veut contrôler de manière centrale et automatique les autres paramètres IP.
Lors de l'utilisation sur un même segment de plusieurs serveurs DHCP, l'intersection des plages d'adresses des différents serveurs doit être vide, sous peine d'ambiguïté dans les affectations et les renouvellements. En effet les serveurs DHCP n'échangent aucune information relative aux baux qu'ils octroient..