Le DNS utilise un système hiérarchique, www.toto.org, toto appartient à org, et il possède www, chacun étant responsable de sa propre zone. Les domaines tout en haut sont appelé TLD, top level domain. Un DNS va demander à un autre la résolution de noms dont il n'est pas responsable, et cachera le résultat. Un serveur DNS stocke des informations supplémentaires, pour chaque domaine, comme le serveur de mails du domaine (le classique MX), mais aussi des informations libres, comme la clef public utilisé pour signer les mails de ce domaine ( DKIM ). Les certificats SSL assurent la légitimité d'un nom de domaine (en plus de proposer un chiffrage de la connexion).
Il existe des usages détournés du DNS. Les RBL utilise le système de cache distribué du DNS pour indiquer si une IP est considérée comme spammeur ou non. Il est possible de faire du load balancing très simple avec le round robin du DNS : plusieurs IP sont assignés à un seul nom. Les CDN, Content Delivery Network, déterminent la région du client à partir de son IP, et lui propose un serveur proche géographiquement lors de la résolution. Le CDN casse la correspondance IP - nom en répondant différemment à chaque client. L'astuce utilisée par le CDN est un usage légitime, mettre de la pub pour chaque domaine non résolu ne l'est absolument pas.
Le DNS est le point central du réseau IP, conçu pour être décentralisé, et survivre à une guerre nucléaire. Ce paradoxe, centraliser la décentralisation, pose des problèmes de censures et de sécurité. Stéphane Bortzmeyer a écrit un bon billet sur les problèmes accompagnant les DNS . Le principe d'achat de nom de domaine est artificiel, et les enchères sur les tld sont une aberration. Il existe une alternative au DNS, utopiste et décentralisé : NameCoin basé sur les outils de bitcoin.
Bind, le serveur de référence, vient d'annoncer la sortie de sa version 10. 14 ans pour sortir une nouvelle version majeur. Bind 10 propose comme nouveauté le passage de C à C++ et un module de stockage vers une base de données, innovation existant déjà depuis la 9.4 dans un fork, DLZ .
Le DNS n'a pas échappé au dynamisme des protocoles Internet. AWS propose un service, route 53, mais il existe aussi des produits libres. PowerDNS propose depuis longtemps de stocker les informations dans une base de données et surtout permet de donner des réponses dynamiques.
Plus vicieux, il existe une bibliothèque nodejs qui donne l'occasion de bien relire les RFC pour comprendre comment mettre un peu de dynamisme dans ce protocole : dnsserver.js . Pow , un container rack pour OSX utilise cette bibliothèque pour que l'utilisateur n'ait pas à se salir les mains dans /etc/hosts. Petit détail énervant, le dev ne fait pas de release, pow utilise un snapshot précis, et de toute façon le projet annonce fièrement avoir pété la branche de dev en 2010. Voilà, un beau projet node.