web-dev-qa-db-fra.com

Pourquoi DHCP utilise-t-il les ports UDP 67 et 68 pour la communication entre le client et le serveur?

Je sais que le DHCP est utilisé pour attribuer une adresse IP au client et que, par conséquent, le seul moyen possible d'établir la connexion est d'écouter sur un port spécifique. Mais y a-t-il une raison spécifique à choisir 67 et 68?

7
valafar

DHCP est basé sur le protocole BOOTP antérieur qui utilise des numéros de port bien connus pour le serveur et le client au lieu d’un port éphémère. Le serveur et le client communiquent par diffusion et le serveur diffuse l'adresse IP proposée au client sur le port UDP 68. L'utilisation d'un port bien connu côté client est introduite pour résoudre le problème associé à cette diffusion, que nous allons décrire au dessous de.

Supposons que l'hôte A utilise le client BOOTP sur le port éphémère 1883 et que l'hôte B (qui est sur le même réseau) utilise le client MQTT sur le même port. Maintenant, lorsque le serveur BOOTP envoie un message de réponse avec l'adresse IP de diffusion 255.255.255.255 et le numéro de port de destination. 1883, l'hôte A acceptera le message correct sur son client DHCP dans la couche d'application. Mais le client MQTT qui s'exécute sur la couche application de l'hôte B recevra un message incorrect. L'utilisation d'un port bien connu (dans notre cas 68) empêche l'utilisation des deux mêmes numéros de port de destination et interdit donc aux autres protocoles d'utiliser le même port qui est déjà utilisé par un autre protocole. En termes simples, cela empêche une application d’obtenir un message d’un protocole complètement différent.

Pour plus de détails, je vous recommanderais de consulter la RFC 2131 .

10
Ankur Bhatia

DHCP est basé sur BOOTP créé en 1985.

BOOTP utilise TFTP comme protocole de transfert de fichier.

TFTP a été créé en 1981 et utilise le port 69. Il était donc préférable d’utiliser les ports non utilisés les plus proches (68 et 67).

12
jcbermu