Première rédaction de cet article le 4 Juillet 2010
Le DNS est à la base de la plupart des transactions sur Internet. Presque toutes commencent en effet par une requête DNS. Par exemple si vous récupérez un fichier via BitTorrent (dont on pourrait penser qu'il n'utilise pas le DNS), le tracker est souvent trouvé via une URL donc via le DNS. Même si vous utilisez un système récent, tracker-less (celui-ci étant remplacé par une DHT), vous avez probablement trouvé les coordonnées du fichier qui vous intéressait via le Web donc via le DNS. Bref, si le DNS est en panne, il n'y a presque plus rien qui marche. Pourtant, à une époque, l'Internet fonctionnait sans le DNS. Comment s'est faite la transition ? Qu'est-ce qu'il y avait avant ?
Vue l'énorme quantité d'articles soi-disant historiques de vulgarisation sur les origines du DNS, vue la quantité de bêtises journalistiques qui ont été écrites sur ce sujet, il peut sembler difficile de remonter aux vraies origines et de trouver ce qui s'est passé. Pourtant, la plupart des acteurs de ce changement sont encore vivants et beaucoup ont documenté leurs efforts.
Commençons par les pères du DNS eux-même. Paul Mockapetris et Kevin Dunlap ont documenté les débuts de ce protocole en 1988, dans « Development of the Domain Name System » (le fichier PDF en question est une numérisation de l'original papier, il ne semble pas que la forme numérique originale aie été conservée).
Tout commença, racontent les auteurs, en
1982, lorsque l'ancien système de nommage,
HOSTS.TXT (qui était
spécifié dans le RFC 608), montrait trop
clairement ses limites, avec l'augmentation de taille de
l'Internet. Plusieurs candidats avaient été envisagés pour son
remplacement comme IEN 116
ou comme le système
Grapevine de Xerox. Le
premier était jugé trop simple, le second beaucoup trop compliqué (il
essayait de tout faire, contrairement à la méthode qui a assuré le
succès de l'Internet, faire des systèmes simples qui assurent 95 % des
fonctions, sans chercher à tout résoudre). Une curiosité : dans Grapevine, les noms étaient
hiérarchiques, comme dans le DNS, mais le nombre de niveaux était fixe
(alors qu'un nom de domaine peut avoir un seul composant - par exemple
dk, deux, trois, ou plus - par exemple
ns1.dnsar.ati.tn). Le travail commença donc sur
le protocole DNS. (Cela n'apparait pas dans l'article mais, oralement,
Paul Mockapetris raconte qu'il avait hérité de cette tâche car il
était le plus débutant et que ce service DNS n'était pas considéré
comme essentiel.) Et c'est là qu'on dispose d'une autre source, les
fameux RFC puisque tous ont été conservés
(parfois sous forme papier, nécessitant une renumérisation). Le DNS
est donc né officiellement avec les RFC 882 et RFC 883 (la norme actuelle figure dans les RFC 1034 et RFC 1035).
Il semble que ce soit vers 1985 que certaines machines commencèrent à n'utiliser que le DNS pour accéder à l'information. (Je me souviens bien qu'au début des années 1990, il était fréquent que des documents comme les FAQ indiquent les adresses IP des serveurs cités, car certains « vieux de la vieille » n'avaient pas confiance dans le DNS qui, il est vrai, n'avait pas toujours la fiabilité d'aujourd'hui.)
L'article de Mockapetris et Dunlap détaille ensuite les principes
fondateurs du DNS : nommage hiérarchique, compromis entre la
simplicité et les demandes de certains enthousiastes qui voulaient en
faire une vraie base de données distribuée, absence de sémantique dans
les noms (un serveur SMTP n'est pas forcé de
s'appeler smtp.example.net et on ne peut pas
savoir, juste en regardant un nom, où sont les frontières des
zones).
Parmi les choix qui se présentaient aux auteurs du nouveau
protocole, la détermination du niveau de souplesse nécessaire. Il
était prévu que d'autres acteurs que le monde Internet utilisent le
nouveau protocole, ce qui avait mené à l'introduction des
classes. Il y avait même l'idée qu'il y aurait
une classe ISO alors que, finalement, le projet
OSI avait développé sa propre usine à gaz,
X.500, qui a sombré avec le reste de ce
projet. Aujourd'hui, les classes continuent à utiliser deux octets
dans chaque enregistrement DNS, sans servir à rien (et il est probable
que la plupart des logiciels seraient très déroutés par d'autres
classes que la classe IN, contrairement à ce que
pensaient les promoteurs de Net4D).
La fin de l'article décrit le déploiement du DNS en 1988. Le RFC 1031 contenait une liste des mises en œuvre du DNS (les
deux plus importantes étant BIND, toujours là,
et Jeeves, bien oublié). À ce moment, HOSTS.TXT
contenait encore 5 500 noms alors que le DNS en avait... 20 000
(depuis, le comptage est devenu impossible mais il y a certainement
aujourd'hui des centaines de millions de noms).
Une section entière est dédiée aux serveurs de noms de la racine, ceux qui doivent répondre pour tous les noms, en général en renvoyant vers les serveurs du TLD. Ils n'étaient que sept à l'époque (aujourd'hui, il est difficile de donner le nombre exact). Quatre étaient des Unix avec BIND, trois des TOPS-20 avec Jeeves. Le trafic sur un serveur racine atteignait la valeur pharamineuse de... une requête par seconde (aujourd'hui, chaque machine physique voit passer plusieurs milliers, voire dizaines de milliers de requêtes par seconde).
Une fois le protocole défini, il restait une importante décision à prendre, sur le schéma de nommage. Le RFC 920 a été le premier à se pencher sur la question, sur laquelle on peut aussi consulter le passionnant article d'Elizabeth Feinler.
Cela, c'était du protocole et de l'organisation. Et le code ? Il existe d'autres articles sur les premières mises en œuvre du DNS :
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)