\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{mar. juin 8 02:36:40 CEST 2010}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={rfc2131},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Dynamic Host Configuration Protocole},
CreationDate={D:20100608023640},
ModDate={D:20100608023640},
Keywords={réseaux}
}}
\begin{document}
 
\begin{center}
{\Huge rfc2131 }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Dynamic Host Configuration Protocole}
 
\vspace{10mm}
 
\hspace{1mm}  \textbf{DHCP} (Dynamic Host Configuration Protocole) est un protocole faisant lui même partie de la suite de protocole \textbf{BOOT}P. Protocole de niveau application de type client-serveur, il permet à un hôte n'ayant pas de configuration réseau (adresse IP, masque, adresse dns, passerelle etc...), d'en obtenir une afin de pouvoir communiquer sur le réseau.
\vspace{5mm} \\
 
 
\hspace{1mm}  \textbf{DHCP} permet l'allocation dynamique d'adresse IP mais peut également réserver certaines adresses à des clients spécifiques. On distingue 3 types d'allocations. L'allocation dynamique attribue une adresse IP à une machine parmi le pool d'adresse disponible. L'allocation automatique fonctionne de la même manière, mais fournit un baille infini, réservant ainsi l'IP de manière permanente. L'allocation manuelle, consiste à réserver une IP associée à une adresse MAC, garantissant à une machine de toujours obtenir la même adresse.
\vspace{5mm} \\
 
 
\hspace{1mm}  Grâce à l'allocation dynamique d'adresse IP, une adresse IP peut être réutilisée sur le réseau lorsqu'une machine n'est plus connectée, permettant ainsi de profiter au mieux de la plage d'adresse disponible. De plus la configuration manuelle de chaque client peut être longue et source d'erreur, et en cas de modification du réseau (changement de l'adresse du dns ou de la passerelle par exemple) il est nécessaire de reconfigurer chaque client. Grâce à DHCP, les modifications sont apportées uniquement au serveur DHCP, propageant ainsi la mise à jour de la configuration à tous les clients.
\vspace{5mm} \\
 
 
\hspace{1mm}  Il est possible d'avoir plusieurs serveurs DHCP sur un réseau, les clients DHCP doivent attendre un certains temps lors d'une demande de configuration, afin de recevoir plusieurs offres, et de pouvoir choisir celle qui lui convint le mieux.
\vspace{5mm} \\
 
 
\hspace{1mm}  Un client peut également demander à utiliser certains paramètres spécifique, comme une adresse réseau particulière ou une durée de bail.
\vspace{5mm} \\
 
 
\hspace{1mm}  Un serveur \textbf{DHCP} s'assure qu'une adresse IP n'est pas utilisée 2 fois sur le même réseau. Il mémorise les configurations client de manière à redonner, dans la mesure du possible, la même configuration au même client.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Format d'un message DHCP }
 
\
 
{\ttfamily
\_op (1)\_\_\_\_|\_Htype (1)\_\_\_\_|\_Hlen (1)\_\_\_\_|\_Hops (1)\\ \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_xid (4)\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\ \_\_\_\_\_\_\_\_\_\_\_\_\_Secs (2)\_\_\_\_|\_flags (2)\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\ \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ciaddr (4)\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\ \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_yiaddr (4)\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\ \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_siaddr (4)\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\ \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_giaddr (4)\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\ \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_chaddr (16)\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\ \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_sname (64)\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\ \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_fichier (128)\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\ \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_options (variable)\_\_\_\_\_\_\_\_\_\_\_\_\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Description des champs }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} op]{(1 octet) Code opération du message / type du message. 1 = BOOTREQUEST, 2 = BOOTREPLY}
\item[\hspace{1mm} htype]{(1 octet) Adresse matérielle, voir la section ARP dans le RFC "Assigned Numbers" ; par ex., '1' = Ethernet 10Mb.}
\item[\hspace{1mm} hlen]{(1 octet) Longueur de l'adresse matérielle (par ex. '6' for Ethernet 10Mb).}
\item[\hspace{1mm} hops]{(1 octet) Mis à zéro par le client, utilisé de manière optionnelle par les agents de relais quand on démarre via un agent de relais}
\item[\hspace{1mm} xid]{(4 octets) Identifiant de transaction, un nombre aléatoire choisit par le client, utilisé par le client et le serveur pour associer les messages et les réponses entre un client et un serveur}
\item[\hspace{1mm} secs]{(2 octets) Rempli par le client, les secondes s'écoulent depuis le processus d'acquisition ou de renouvellement d'adresse du client}
\item[\hspace{1mm} flags]{(2 octets) Drapeaux (voir figure 2).}
\item[\hspace{1mm} ciaddr]{(4 octets) Adresse IP des clients, rempli seulement si le client est dans un état AFFECTÉ, RENOUVELLEMENT ou REAFFECTATION et peut répondre aux requêtes ARP}
\item[\hspace{1mm} yiaddr]{(4 octets) 'votre' (client) adresse IP.}
\item[\hspace{1mm} siaddr]{(4 octets) Adresse IP du prochain serveur à utiliser pour le processus de démarrage ; retournée par le serveur dans DHCPOFFER et DHCPACK.}
\item[\hspace{1mm} giaddr]{(4 octets) Adresse IP de l'agent de relais, utilisée pour démarrer via un agent de relais.}
\item[\hspace{1mm} chaddr]{(16 octets) Adresse matérielle des clients.}
\item[\hspace{1mm} sname]{(64 octets) Nom d'hôte du serveur optionnel, chaîne de caractères terminée par un caractère nul.}
\item[\hspace{1mm} fichier]{(128 octets) Nom du fichier de démarrage, chaîne terminée par un nul ; nom "generic" ou nul dans le DHCPDISCOVER, nom du répertoire explicite dans DHCPOFFER.}
\item[\hspace{1mm} options]{(variable) Champ de paramètres optionnels. Voir le document d'options pour une liste des options définies.}
\end{description}
 
\vspace{1cm}{\huge Alloctation d'une adresse réseau }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} 1)]{le client diffuse un message \textbf{DHCPDISCOVER} sur son réseau local physique. Ce message peut inclure des options qui suggèrent des valeurs pour les adresses réseau et la durée du bail.}
\item[\hspace{1mm} 2)]{chaque serveur DHCP peut répondre avec un message \textbf{DHCPOFFER}, qui inclut une adresse réseau valide dans le champ yiadrr, ainsi que d'autres paramètres de configuration.}
\item[\hspace{1mm} 3)]{le client choisit parmi les propositions \textbf{DHCPOFFER} reçu par les serveur DHCP celle qui lui convient le mieux, puis diffuse un \textbf{DHCPREQUEST}, en re-spécifiant l'adresse IP choisie et les options de configurations.}
\item[\hspace{1mm} 4)]{le serveur répond par un \textbf{DHCPACK} en re-spécifiant l'adresse et les paramètres de configuration pour valider la demande du client.}
\item[\hspace{1mm} 5)]{Le client DEVRAIT faire une vérification finale sur les paramètres (généralement un ARP). Si le client détecte que l'adresse est déjà utilisée, il DOIT envoyer un \textbf{DHCPDECLINE} au serveur et relancer le processus de configuration. Le client DEVRAIT attendre un minimum de dix secondes avant de relancer la configuration pour éviter un trafic réseau excessif dans le cas d'un bouclage.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} ]{En cas de requête invalide, par exemple un \textbf{DHCPREQUEST} contenant une adresse IP invalide ou que le bail a expiré, le serveur peut diffuser un \textbf{DHCPNACK}.}
\item[\hspace{1mm} ]{Si l'adresse IP reçu par un client est déjà utilisée par un autre client du réseau, le client peut envoyer un \textbf{DHCPDECLINE} pour prévenir le serveur DHCP.}
\item[\hspace{1mm} ]{Lorsque le client désire libérer l'adresse réseau, il envoie un \textbf{DHCPRELEASE} au serveur.}
\item[\hspace{1mm} ]{Le client peut seulement demander les paramètres de configuration locaux avec un message \textbf{DHCPINFORM}. Dans ce cas le client possède déjà une adresse réseau attribuée de manière externe.}
\end{description}
 
\vspace{1cm}{\huge Format des messages DHCP }
 
\
 
\hspace{1mm}  \textbf{DHCP} utilise UDP comme protocole de transport des messages.
\vspace{5mm} \\
 
 
\hspace{1mm}  Un message \textbf{DHCPDISCOVER} contient l'adresse MAC source du client et l'adresse MAC de diffusion en destination (FF:FF:FF:FF:FF:FF). L'adresse IP source est 0.0.0.0 et l'adresse de destination est l'adresse de diffusion 255.255.255.255. Le port source est 68 et le port de destination est 67. Cette diffusion est nécessaire puisque le client ne connait pas le ou les adresses des serveur DHCP.
\vspace{5mm} \\
 
 
\hspace{1mm}  Un message \textbf{DHCPOFFER} contient l'adresse MAC source du serveur, l'adresse MAC de destination du client. L'adresse IP source est celle du serveur DHCP, et l'adresse de destination est l'adresse de diffusion 255.255.255.255. Port source 67 et port destination 68. Ce message contient les paramètre de configuration.
\vspace{5mm} \\
 
 
\hspace{1mm}  Un message \textbf{DHCPREQUEST} contient l'adresse MAC source du client et l'adresse MAC de diffusion en destination (FF:FF:FF:FF:FF:FF). L'adresse IP source est 0.0.0.0 et l'adresse de destination est l'adresse de diffusion 255.255.255.255. Le port source est 68 et le port de destination est 67. Ce message est toujours en diffusion puisque cela permet à tous les serveur DHCP de recevoir le \textbf{DHCPREQUEST}. Le champ \textbf{Server Identifier} permet de spécifier à quel serveur DHCP est destiné le \textbf{DHCPREQUEST}. La diffusion permet aux autres serveur DHCP d'être avertit que le client décline leur \textbf{DHCPOFFER}. Ce message contient également les paramètres de configuration.
\vspace{5mm} \\
 
 
\hspace{1mm}  Un message \textbf{DHCPACK} contient l'adresse MAC source du serveur, l'adresse MAC de destination du client. L'adresse IP source est celle du serveur DHCP, et l'adresse de destination est l'adresse de diffusion 255.255.255.255. Port source 67 et port destination 68. Ce message contient de nouveau les paramètres de configuration. Il permet de confirmer l'attribution de l'adresse réseau. Un client qui se souvient de l'adresse réseau qui lui a déjà été attribuée, peut ignorer l'envoie d'un \textbf{DHCPDISCOVER} et envoie directement un \textbf{DHCPREQUEST}. Lors du renouvellement d'un bail, le client envoie un \textbf{DHCPREQUEST}, mais en unicast, le serveur DHCP lui envoie un \textbf{DHCPACK} confirmant le renouvellement du bail.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Durée et renouvellement du bail }
 
\
 
\hspace{1mm}  Le client maintient deux temporisateurs, T1 et T2 qui spécifient les temps auxquels le client essaie d'étendre son bail sur son adresse réseau. T1 est le temps au bout duquel le client entre en état RENOUVELLEMENT et tente de contacter le serveur qui a émis l'adresse réseau du client. T2 est le temps au bout duquel le client entre en état REAFFECTATION et tente de contacter un serveur. T1 DOIT être plus récent que T2, qui doit être plus récent que la date à laquelle expire le bail.
\vspace{5mm} \\
 
 
\hspace{1mm}  Au temp T1 ( 0,5*durée\_du\_bail) le client envoie un message \textbf{DHCPREQUEST}. Si aucun \textbf{DHCPACK} n'arrive avant T2 (0,875*durée\_du\_bail) le client envoie un \textbf{DHCPREQUEST}. En cas de non réponse le client peut re-émettre un \textbf{DHCPREQUEST} à la moitié du temps restant, jusqu'à un minimum de 60sec.
\vspace{5mm} \\
 
 
\hspace{1mm}  Si le bail expire avant que le client ne reçoive un \textbf{DHCPACK}, le client passe en état \textbf{INIT}, il DOIT alors immédiatement stopper tout processus réseau et nécessite une initialisation des paramètres réseau comme si le client n'était pas initialisé.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Relay DHCP }
 
\
 
\hspace{1mm}  Comme les clients contactent les serveurs DHCP à l'aide d'une diffusion, dans un inter-réseau, vous devrez théoriquement installer un serveur DHCP par sous-réseau. Si votre routeur prend en charge la RFC 1542, il peut faire office d'agent de relais DHCP, et ainsi relayer les diffusions de demande d'adresse IP des clients DHCP dans chaque sous-réseau.
\vspace{5mm} \\
 
 
\hspace{1mm}  Si votre routeur ne prend pas en charge la RFC 1542, une machine serveur peut être configurée comme agent de relais DHCP, il suffira de lui spécifier l'adresse du serveur DHCP. Les demandes des clients DHCP seront relayées vers le serveur DHCP par l'agent de relais DHCP qui transmettra les offres aux clients.
\vspace{5mm} \\
 
 
\hspace{1mm}  Après avoir envoyé une trame de broadcast, le client DHCP dialoque avec l'agent de relai DHCP en unicast. L'agent demande une adresse au serveur DHCP dont il connaît l'adresse (2). Le serveur retourne à l'agent une adresse (3) qui est donnée au client DHCP par l'agent (4).
\vspace{5mm} \\
 
 
\hspace{1mm}  Le principal problème du service DHCP est la mise à jour des serveurs de noms d'hôtes. Bind sous Linux permet la mise à jour dynamique (RFC 2136) grâce à un serveur "updater" qui peut ajouter ou supprimer dynamiquement des enregistrements de ressources. Il faut pour corriger cela installer un serveur DNS dynamique ( DDNS) qui accepte les inscriptions des clients DHCP.
\vspace{5mm} \\
 
\end{flushleft}
\end{document}
