ZeroConf et l'implémentation "Bonjour"
Le service "multicastDNS"
Ce service est le fruit du travail d'Apple et de Microsoft sur la résolution des noms de domaines. Cependant le draft de multicastDNS a été rédigée par Apple en 2000 mais il n'est toujours pas finalisé aujourd'hui.
Objectif du service
Ce service permet d'utiliser la résolution des noms sur le réseau local. Ainsi, chaque machine du réseau dispose d'un nom qui permet de facilement de retrouver une machine dans un réseau si l'on connait le nom de la machine. Ainsi une machine du même réseau local sera toujours accessible à partir de son nom, meme si son adresse IP a changé.
Fonctionnement
Le service MulticastDNS est une "surcouche" du protocole déjà existant DNS, en fournissant le même type de service mais pour un domaine particulier. Les services fourni par mDNS, sont un peu plus puissants avec par exemple une méthode de partager les services d'une machine sur un réseau.
Chaque machine qui dispose de "Bonjour" a un daemon installé sur la machine appellé "mDNSResponder", ce daemon est un client DNS particulier puisqu'il sert à la fois de serveur DNS et de client DNS. Il fait authorité pour lui même et peut ainsi comprendre différent type de requêtes DNS :
- requêtes classiques. Une requête = Une réponse (fonctionnement normal d'un client et d'un serveur DNS),
- requêtes classiques avec des réponses multiples. Une requête = Plusieurs réponses encapsulées
- requêtes classiques avec de multiples questions avec des réponses multiples. Plusieurs questions dans un requête = Plusieurs réponses
encapsulées. Ces requêtes avec plusieurs questions ont juste un but d'optimisation par rapport aux requêtes classiques.
- requêtes multicast en continu. Par exemple iTunes qui rafraichit automatiquement la liste des bibliothèques musical partagées sur un réseau.
Au lancement de mDNSResponder, il effectue deux vérifications. Tout d'abord il envoie des requêtes de tests afin de s'assurer qu'il n'existe
pas déjà une machine avec le même nom en envoyant une requête mulitcast DNS. En attendant la réponse, l'hôte ne doit pas consulter son cache
qui pourrait contenir des données qui ne sont plus à jour.
La seconde étape consiste à consulter le serveur qui fait Authorité afin de s'assurer que les données sont correctes.
Une fois ces deux étapes passées, le daemon "mDNSResponder" est apte à fonctionner.
Ainsi chaque machine disposera de son propre nom dans le domaine ".local".
L'adresse de multicast qui sont utilisées pour envoyer les données sont les suivantes :
- si le réseau est en IPv4 "224.0.0.251"
- si le réseau est en IPv6 "FF02::FB"
Les réponses aux requêtes sont envoyé via multicast, ce qui a pour principal avantage de permettre à chaque machine sur le réseau d'obtenir les informations de la réponses et ainsi de mettre leur cache à jour, détecter les conflits,...
Il est également important de préciser que les requetes DNS réalisés pour ce protocole ne doivent pas être transmises à un routeur qui n'est pas dans la gamme d'IP défini dans le service précédent. De plus le cache de MulticastDNS doit obligatoirement être différent du cache DNS classique.
Ainsi dans la configuration réseau suivante, 2 ordinateurs qui sont connecté en wifi par exemple, il est très simple d'effectuer un ping d'une
machine à une autre.Une fois l'établissement du réseau réalisé, il suffit juste de rajouter
le suffixe du domaine ".local" après le nom de la machine pour que le service s'occupe de récupérer l'adresse IP de la machine.
Gestion des conflits
Comme cela a été présenté, il peut y avoir des conflits à résoudre dans l'utilisation de ce service. Si par exemple, il y a deux ordinateurs
qui ont le meme nom d'hôte, alors il y a un conflit. Pour résoudre ce conflit, c'est très simple, c'est l'ordinateur qui aura l'IP la plus
forte qui conservera, et l'autre machine devra changer son nom.
Cependant, cette situation ne se présente pas souvent car les gens peuvent choisir le nom de domaine de leur choix à condition qu'il
fasse moins de 255 octets.
Autre protocole...
Le protocole LLMNR est un protocole basé sur le protocole
DNS. Il est permet également de résoudre les noms de machines sur un même réseau. Il est
fourni avec Windows Vista et Windows Server 2008. L'avantage de cette solution est de pouvoir choisir n'importe quel nom de domaine là
ou la solution Apple ne fonctionne qu'avec le domaine ".local".
Cependant, cette implémentation n'est pas validée par l'IETF et n'est pas non plus
compatible avec le partage des services.