2. BUT
Permet à un ordinateur qui se connecte sur un
réseau local d'obtenir et de configurer
dynamiquement et automatiquement :
Son adresse IP
masque de son sous-réseau
passerelle par défaut
adresse IP du serveur DNS
nom de son domaine
3. Fonctionnement
Lorsque vous connectez un ordinateur sur le réseau
il n’a aucune connaissance de son adresse IP
Par contre il connait:
son adresse Mac
L’adresse de broadcast
4.
5. Demande de bail/adresse IP
Le poste client vient de se connecter, il n’a pas @IP
En DHCP une adresse IP n’est fournit que pour un
temps donné : Le bail. C’est pourquoi on parle de
demande de bail plutôt que d’adresse IP
Un bail a une durée : lease-time
6. Demande de bail - UN serveur DHCP
C’est SEULEMENT après t0 que le client peut utiliser
l’adresse IP communiquée par le serveur jusqu’à
t0 + lease-time
6
time
DHCPDiscover
2
DHCPOffer
1
3 DHCPRequest
DHCPAck 4
client
serveur
t0
7. Trames DHCP
DHCPDISCOVER :Permet de trouver un
serveur DHCP. La trame est une trame de
« broadcast », elle est envoyée à l’adresse
255.255.255.255. Le client n’ayant pas d’adresse
prend l’adresse 0.0.0.0
DHCPOFFER : contient une proposition de
bail, l’adresse IP du serveur et l’adresse Mac du
client.
DHCPREQUEST : indique à tous les serveurs
quel bail il a accepté et/ou demande de
renouvellement de bail
DHCPACK : le serveur confirme le bail.
8. Renouvellement de bail
A la moitié du bail, le client demande le renouvellement
(prolongation de son bail), il n’y aura alors que les trames
DHCPREQUEST et DHCPACK qui seront échangées.
Si au bout des 7/8 du bail pas de réponse du serveur (ie
pas de DHCPACK) alors le client essayera de joindre un
serveur DHCP quelconque sur le réseau.
Lors du renouvellement, le client utilise l’adresse IP
donnée précédemment par le serveur
Un renouvellement est donc beaucoup plus simple
9. Demande de renouvellement de bail
Le client peut utiliser l’adresse IP communiquée
par le serveur jusqu’à t1+lease-time
9
time
3 DHCPRequest
4
DHCPAck
client
serveur
t1
10. Les paquets IP échangés Lors d’un
renouvellement de bail
Source Destination Protocol Info
192.168.0.9 192.168.0.253 DHCPRequest
192.168.0.253 192.168.0.9 DHCPAck
10
12. Message DHCP
Envoyé par le Client
DHCPDISCOVER demande de localisation des
serveurs DHCP
DHCPREQUEST demande de bail
DHCPDECLINE refus d’adresse IP, elle est déjà
utilisée
DHCPRELEASE libération son bail
DHCPINFORM demande de paramètres locaux
(autre qu’une adresse IP)
13. Message DHCP
Envoyé par le Serveur
DHCPOFFER réponse à un DHCPDISCOVER
DHCPACK contient des paramètres et l'adresse IP
du client
DHCPNAK refus de bail
15. Encapsulation d’un message DHCP
BOOTP DHCP
UDP
IP
par exemple
Ethernet
Trame contenant un
message « DHCP »
Message
DHCP
Eth IP UDP
16. Trame contenant un message DHCP
Adresse physique de l’émetteur
Adresse physique du destinataire de
la trame
Adresse IP source
Adresse IP destinataire du paquet IP
Port source
Port destination du datagramme
16
Message DHCP
Ethernet
IP
UDP
17. Le Problème de l’oeuf et la poule
17
A moment de la demande de bail,
Est-ce que le client connaît son adresse physique ?
Est-ce que le client connaît l’adresse physique du serveur
DHCP ?
QUE FAIRE ???
Niveau
physique
18. Le Problème de l’oeuf et la poule
A moment de la demande de bail,
Est-ce que le client connaît l’adresse IP du serveur DHCP
?
Est-ce que le client connaît son adresse IP ?
Est-ce que le serveur DHCP connaît l’adresse
IP du client?
QUE FAIRE ???
Niveau
réseau
19. DIFFUSION niveau physique
Diffusion (broadcast) distribution de la requête DHCP à
tous les postes connectés
Client
DHCP Adresse de
diffusion:
ff:ff:ff:ff:ff:ff
19
20. DIFFUSION niveau réseau
Diffusion (broadcast) distribution de la requête DHCP à
tous les postes connectés
20
Client
DHCP
Utilsation de
l’adresse IP de
diffusion générique
255.255.255.255
21. Niveau Transport - requêtes
Le client DHCP envoie la requête sur le port 67. Le
serveur DHCP écoute sur le port 67.
Serveur DHCP
21
67
Client
DHCP
22. Niveau Transport - requêtes
Le client DHCP envoie la requête sur le port 67. Le
serveur DHCP écoute sur le port 67.
Serveur DHCP
22
67
Client
DHCP
23. Niveau Transport - réponses
Le serveur DHCP envoie la requête sur le port 68. Le
client DHCP écoute sur le port 68.
Serveur DHCP
23
68
Client
DHCP
24. DHCP : le client utilise un port réservé
24
Port serveur DHCP 67
Port Client DHCP 68
Client
DHCP
65
66
67
68
69
Serveur
DHCP
65
66
67
68
69
25. Trame contenant un DHCPDiscover
00:20.8f:b9:49:37
ff:ff:ff:ff:ff:ff
0.0.0.0
255.255.255.255
25 Message DHCPDiscover
68
67
Ethernet
IP
UDP
26. Trame contenant
DHCPDiscover
26
00:20.8f:b9:49:37
ff:ff:ff:ff:ff:ff
0.0.0.0
255.255.255.255
Message
68
67
DHCPDiscover
adresse
physique de
diffusion
Adresse IP
de
diffusion
générique
Adresse
physique du
client DHCP
Adresse
IP
« neutre »
Port
source
datagamm
e
27. Trame contenant un DHCPOffer
00.00.b4:bb:7d:ee
00:20.8f:b9:49:37
192.168.0.253
Message DHCPDiscover
27
67
68
Ethernet
IP
UDP
28. 28
67
68
00.00.b4:bb:7d:ee
00:20.8f:b9:49:37
192.168.0.253
Message DHCPDiscover
adresse
physique
du client
Adresse
physique du
serveur DHCP
Adresse
IP serveur
DHCP
Port
source
datagamm
e
DHCPOffer
29. Trame contenant un DHCPRequest
00:20.8f:b9:49:37
ff:ff:ff:ff:ff:ff
0.0.0.0
255.255.255.255
29 Message DHCPRequest
68
67
Ethernet
IP
UDP
30. Demande de baux
DES serveurs DHCP
serveur client serveur
DHCPDiscover
DHCPOffer
DHCPRequest
30
DHCPAck
time
DHCPDiscover
DHCPOffer
DHCPRequest
Le client refuse
mon offre
32. Les paquets IP échangés
Source Destination Protocol Info
0.0.0.0 255.255.255.255 DHCPDiscover
# le serveur DHCP vérifie que l’adresse IP qu’il veut offrir
n’est pas utilisée
Serveur DHCP Broadcast ARP
192.168.0.9?
192.168.0.253 DHCPOffer
0.0.0.0 255.255.255.255 DHCPRequest
192.168.0.253 192.168.0.9 DHCPACK
# le client vérifie via ARP que personne n’utilisa sa nouvelle
adresse
Client DHCP Broadcast ARP
192.168.0.9?
34. Dynamic Host Configuration Protocol
DHCP a été conçu comme complément de
BOOTP- Bootstrap Protocol –
BOOTP: [RFC 951 - 1985]
Protocole de démarrage
Une station récupère les informations pour
s’amorcer (« booter ») sur un serveur
« d’amorçage » distant
35. Format d’un message BOOTP
HTYPE HOPS
identifiant session
secs
flags
adresse IP client (écrit par le client)
adresse IP client (proposée par le serveur)
35
OP
HLEN
serveur adresse IP
gaterway adresse IP
adresse physique du client
nom du serveur
Fichier d’amorçage
OPTION
36. HTYPE HOPS
identifiant session
secs
flags
adresse IP client (écrit par le client)
adresse IP client (proposée par le serveur)
36
Format d’un message DHCP
OP
HLEN
serveur adresse IP
gaterway adresse IP
adresse physique du client
nom du serveur
Fichier d’amorçage
OPTIONS définies dans DHCP
L'en-tête UDP contient les numéros de port source et destination. Le protocole BOOTP utilise deux numéros de ports réservés, « client BOOTP » (n° de port 68) et « serveur BOOTP » (n° de port 67). Le client envoie ses requêtes en utilisant « serveur BOOTP » comme port de destination, habituellement à l'adresse de diffusion. Le serveur envoie ses réponses en utilisant « client BOOTP » comme port de destination ; en fonction des facilités offertes par le noyau ou le pilote du serveur, cela peut être envoyé ou non à l'adresse de diffusion (voir les explication plus loin dans la section intitulée « Problème de l'Oeuf et de la Poule » plus bas). La raison pour laquelle deux ports réservés sont utilisés, est que l'on veut éviter de « réveiller » et de programmer les démons serveurs BOOTP, quand une réponse d'amorçage doit être diffusée vers un client. Puisque le serveur et les autres hôtes n'écouteront pas le port « client BOOTP », de telles diffusions entrantes seront filtrées au niveau du noyau. Nous ne pourrions pas simplement permettre au client de choisir un numéro de port « aléatoire » pour le champ de port source UDP, puisque étant donné que la réponse du serveur peut être diffusée, un numéro de port choisi aléatoirement pourrait troubler les autres hôtes qui sont justement en train d'écouter sur ce port.