Le Multicast DNS

Pour répondre au besoin croissant des services liés aux réseaux ainsi qu'au manque de compétences réseaux dans certaines entreprises, un protocole permettant la résolution de noms en interne sans serveur DNS était nécessaire. mDNS, qui signifie Multicast DNS, a été développé par Apple. Il a pour ancêtre le protocole Multicast Domain Name Service, publié par Bill Manning et Bill Woodcook.

Les enregistrements mDNS sont stockés en local sur chaque machine contrairement au DNS qui les concentre dans un serveur.

Une similarité avec le protocole DNS:
Alors que les besoins de résolution de noms de Zeroconf pouvaient être résolus en créant un tout nouveau protocole, les participants au projet Zeroconf de l'IETF et DNS Extensions (dnsext) ont décidé de réutiliser le standard actuel DNS, tout en appliquant de très légers changements.
Cela dans le but que la plupart des applications actuelles fonctionnent avec ce protocole sans avoir à être reprogrammées d'une façon différente ainsi que d'éviter aux programmeurs d'apprendre un autre API.

A ce jour, il n'existe pas de RFC (Requests for Comments) décrivant le protocole mDNS. Néanmoins, l'IETF a demandé à Apple, et plus précisément à Stuart Cheshire et Marc Krochmal, de soumettre les spécifications du protocole afin d'en faire un projet de RFC informel.

Les adresses et ports utilisés pour le protocole mDNS:
mDNS étant basé sur le principe du multicast, il utilise donc une adresse multicast, qui est en l'occurence 224.0.0.251 (adresse lien local) ou son équivalent en IPv6 : FF02::FB
Quant au port utilisé, le protocole mDNS se base sur un port UDP, en l'occurence le port 5353. Vous pouvez d'ailleurs remarquer l'analogie au port UDP 53 de DNS. Les ports sont différents pour éviter une programmation plus ardue des protocoles.
En effet, utiliser le même port rendrait l'utilisation d'un serveur DNS unicast conventionnel et du protocole mDNS plus difficile. Si un serveur DNS souhaite implémenter le mDNS, il doit ouvrir deux sockets. Avoir deux ports différents permet cette flexibilité.
De plus, sur de nombreux systèmes d'exploitation, les utilisateurs sans privilèges ne peuvent envoyer ou recevoir des paquets sur des ports inférieurs à 1024. Envoyer ou recevoir des paquets mDNS sur le port 53 signifierait avoir les droits "root", ce qui est un risque de sécurité important, utiliser un port supérieur à 1024 évite ce problème.



© Alexandre Cusin-Panit et Nicolas Duthilleul