RFC: 1034
Statut : Standard

# DOMAIN NAME SYSTEM

## Concepts de base

Crédits : P. Mockapetris, ISI
Traduction : Valéry G. FREMAUX
Edition originale : Novembre 87 / Version FR : Avril 1998
Remplace : RFC882, RFC883, RFC973

## 2. INTRODUCTION

Cette RFC expose les styles admis pour les noms de domaines, leur utilisation dans le cadre de la messagerie par Internet et pour la recherche d'hôtes, et décrit les protocoles et serveurs utilisés pour les services réseaux liés aux noms de domaines.

### 2.1. Historique des noms de domaines

La motivation essentielle et impérieuse conduisant à la mise en oeuvre du système de domaines a été la croissance exponentielle d'Internet :

- Au début, la transcription de noms d'hôtes en adresses Internet s'appuyait sur une table de correspondance maintenue par le Network Information Center (NIC) sous forme d'un unique fichier (HOSTS.TXT) lequel était transmis par FTP sur tous les hôtes [RFC-952, RFC-953]. La bande passante consommée par la distribution d'une remise à jour de cette base par cette méthode est proportionnelle au carré du nombre d'hôtes sur le réseau, et même lorsque plusieurs niveaux de retransmissions FTP étaient utilisés, le trafic sortant du serveur NIC restait considérable. La croissance explosive du nombre d'hôtes a fait rapidement exploser du même coup ce mécanisme.
- La population internaute changeait dans le même temps de nature. Les hôtes en temps partagé (mainframes) constituant l'ARPANET originel ont été remplacés par une architecture distribuée de stations connectées sur des réseaux et sous-réseaux locaux. Les organismes locaux ont commencé à administrer leurs propres noms et adresses, mais devaient attendre que le NIC reporte les changements dans le fichier HOSTS.TXT pour que ceux-ci soient visibles de l'ensemble de la communauté Internet. Les organisations souhaitaient néanmoins pouvoir conserver une certaine autonomie quant à la gestion de leur infrastructure locale.
- Les applications exploitant Internet sont devenues de plus en plus sophistiquées et ont créé le besoin d'un traitement plus généralisé des noms de domaines.

Le résultat de tout ceci ont fait émerger certaines idées sur l'espace des noms et sa gestion[IEN-116, RFC-799, RFC-819, RFC-830]. Les propositions ont été diverses, mais l'une des tendances émergentes a été celle d'un espace de noms hiérarchisé, et dont le principe hiérarchique s'appuierait autant que possible sur la structure des organismes eux-mêmes, et où les noms utiliseraient le caractère "." pour marquer la frontière entre deux niveaux hiérarchiques. Un design mettant en oeuvre une base de données distribuée et des ressources généralisées a été décrit dans les [RFC-882, RFC-883]. Sur la base de nombreuses expérimentations, le système théorique des domaines a évolué vers celui qui est présenté dans ce mémo.

Les termes "domaine" ou "nom de domaine" sont utilisés dans de nombreux contextes tournant autour du DNS décrit ici. Très souvent, le terme "nom de domaine" est souvent utilisé pour décrire un nom écrit sous forme de chaîne de caractères reliées par des points, sans relation expresse au DNS. Ceci est particulièrement vrai pour ce qui concerne les adresses de messagerie [Quarterman 86].

### 2.2. Objectifs de la conception du DNS

Les objectifs dans lesquels a été conçu le DNS ont influencé sa structure. Ces objectifs sont les suivants :

- Le but premier est la création d'un espace de noms conséquent utilisables pour référencer des ressources. Pour éviter tout problème de transcodage ou d'encodage, les noms peuvent ne mentionner ou inclure aucun des identificateurs réseau, adresses, chemins, ou information similaire communément utilisés pour l'implémentation technique.
- La taille énorme de la base de données et sa fréquence de mise à jour suggère une maintenance distribuée, avec cache local pour une performance accrue. Toute approche qui tentera d'obtenir une copie intégrale de la base de donnée sera de plus en plus coûteuse et difficile à traiter, et de ce fait devra être écartée. Les mêmes principes courent pour la constitution de l'espace des noms, et en particulier les mécanismes pour créer et supprimer des noms ; ceux-ci devront être également distribués.
- Lorsque l'on doit composer entre le coût technique d'acquisition d'une donnée, la fréquence des mises à jour, et la validité des caches, c'est toujours la source première de données qui contrôle les priorités à donner.
- Le coût important inhérent à l'implémentation d'un tel service suppose qu'il a une utilité générale, qui n'est pas restreinte à une application particulière. Les noms ainsi constitués devront pouvoir servir à identifier des hôtes, récupérer des courriers dans des boîtes aux lettres, et toute autre information non encore identifiée. Toute donnée associée à un nom sera typée, et les requêtes sur ce nom seront limitées à ce seul type.
- Nous souhaitions que l'espace de noms puisse être utilisé sur des réseaux de nature différente, et pour cela, nous avons conçu ce système de telle sorte qu'il puisse s'appuyer sur plusieurs familles de protocoles. Par exemple, les adresses d'hôtes diffèrent dans leur forme suivant la nature des systèmes, bien que tous les protocoles utilisent une notion similaire. Le DNS attribue une classe aux données de la même façon qu'il attribue un type, ce qui nous permettra de pouvoir parallèlement utiliser plusieurs formats distincts pour des données de type adresse.
- Nous souhaitions de plus que les transactions avec les serveurs de nom soient indépendantes du système de communication utilisé. Certains systèmes utiliseront le format du datagramme pour les requêtes et les réponses, et n'établiront de circuit commuté virtuel que lorsque la transaction nécessite une certaine sécurité (ex., la mise à jour des bases de données, des transactions de longue durée); d'autres systèmes demanderont à n'utiliser que des circuits commutés virtuels.
- Le système doit être compatible avec une grande variété de plates-formes. Devront pouvoir utiliser ce système tant des micro-ordinateurs que des "mainframes", les méthodes d'utilisation pouvant être différentes.

### 2.3. Présupposés concernant l'utilisation

L'organisation du système de domaines découle de certains présupposés quant aux besoins et aux schémas d'exploitation de la communauté utilisatrice, et est conçue de sorte à éviter un grand nombre de problèmes classiques des grandes bases de données généralistes.

Les suppositions faites sont :

- La taille totale de la base de données sera initialement proportionnelle au nombre d'hôtes utilisant le système, mais pourra rapidement devenir proportionnelle au nombre d'utilisateurs utilisant ces machines dans la mesure où des informations telles que les boîtes aux lettres y seront intégrées.
- La fréquence de modification de la plupart des données de cette base sera assez basse (ex., les changements de boîtes aux lettres, les adresses d'hôtes), mais le système devra pouvoir traiter des sous ensembles de données nécessitant une période de remise à jour plus élevée (de l'ordre de quelques secondes à quelques minutes).
- Les limites administratives définies pour répartir la responsabilité de gestion de la base de données seront généralement associées à celles d'organisations possédant un ou plusieurs hôtes. Chaque organisation ayant la responsabilité d'un ensemble de domaines particulier devra mettre en œuvre plusieurs serveurs de domaines redondants, s oit sur l'hôte même de l'organisme, ou sur d'autres hôtes dont l'organisme s'occupe ou exploite.
- Les clients du système de domaines devront pouvoir choisir le serveur qu'ils décident d'utiliser armi un ensemble de serveurs nommés et considérés comme sûrs avant d'accepter de s'appuyer sur un serveur hors de cet ensemble.
- L'accès à l'information est plus important que la garantie de remise à jour instantanée et d'une consistance permanente de la base. De ce fait le processus de remise à jour utilise un principe de diffusion de l'information de proche en proche plutôt qu'un mécanisme dont le but serait de remettre à jour simultanément toutes les copies d'une information. Lorsque les mises à jour sont indisponibles suite à une défaillance réseau ou de l'hôte, il sera d'usage de s'en remettre à l'information "ancienne", pendant que les efforts sont faits pour remettre à jour la base. Le modèle général précise que les copies d'informations sont faites tenant compte d'un certain délai de rafraîchissement. Le distributeur mentionne le délai et le récepteur des données est responsable de l'opération de remise à jour. Dans certains cas très particuliers, des délais très courts peuvent être spécifiées, ou encore la copie peut être interdite.
- Dans tout système possédant une base de données répartie, un serveur de nom pourra recevoir des requêtes auxquelles seuls d'autres serveurs peuvent répondre. Les deux approches principales pour contourner le problème sont soit la méthode "récursive", par laquelle le serveur reporte la requête vers un autre serveur pour le compte du client, soit la méthode "itérative", par laquelle le client est enjoint de requérir sur un autre serveur. Les deux approches ont leurs avantages et inconvénients, mais la méthode itérative reste toutefois préférée dans le cas où le mode de requête est le datagramme. Le système de domaines nécessitera l'implémentation de l'approche itérative, mais fournira la méthode récursive en option.

Le système de domaines suppose que toutes les données proviennent de fichiers maîtres éparpillés dans les hôtes parties prenantes de ce système. Ces fichiers maîtres de données sont maintenus par l'administrateur local. Les fichiers maîtres sont des fichiers texte lus par un serveur de domaines local, et qui deviennent de ce fait accessibles à tous les utilisateurs du système de domaines par l'intermédiaire de la chaîne de serveurs. Le programme de l'utilisateur accède à ces différents serveurs par l'intermédiaire d'une fonction logicielle de "résolution d'adresse".

Le format standardisé des fichiers maîtres leur permet d'être échangés entre hôtes différents (via FTP, mail, ou tout autre mécanisme); cette opportunité est utile lorsque par exemple, un organisme désire s'attribuer un domaine, mais ne souhaite pas supporter l'administration d'un serveur de domaines. L'organisme pourra maintenir localement le fichier maître avec un simple éditeur de texte, puis le transférer sur un hôte déporté sur lequel sont exécutés les serveurs de domaines, puis voir avec l'administrateur système pour savoir quel serveur de domaines ira lire les fichiers ainsi chargés.

Chaque hôte gérant un serveur de noms de domaines et une fonction de résolution d'adresse est configuré par un administrateur local [RFC-1033]. Pour un serveur de noms, cette configuration définit entre autres l'identité des fichiers maîtres locaux ainsi que des instructions pour savoir quels fichiers maîtres externes doivent être chargés et à partir de quels serveurs distants. Le serveur de noms utilise les fichiers principaux ou ses copies pour charger ces zones. Pour les programmes de résolution d'adresse, les données de configuration identifient les serveurs de noms qui seront les sources primaires d'information.

Le système de domaines définit des procédures pour accéder aux données oupour faire référence à d'autres serveurs de noms. Le système de domaines définit aussi des procédures pour stocker les données récupérées et pour rafraîchir périodiquement les données selon les voeux de l'administrateur système.

L'administrateur renseigne :

- La définition des limites de zones.
- Les fichiers principaux de données.
- La remise à jour des fichiers de données.
- Les spécifications de cette remise à jour.

Le système de domaines fournit :

- Des formats standard pour les ressources.
- Des méthodes standard d'accès à la base de données.
- Des méthodes standard à l'attention des serveurs de noms pour rafraîchir les données à partir de serveurs de noms distants.

### 2.4. Eléments du DNS

Le DNS a trois composants principaux :

- L'ESPACE DE NOMS DE DOMAINES et les ENREGISTREMENTS DE RESSOURCES, qui sont les spécifications d'un espace de noms structuré en arbre et des données associées à ces noms. Conceptuellement, chaque noeud et chaque feuille de l'arbre de l'espace de noms de domaines contient un ensemble d'informations ; les requêtes sont des tentatives pour extraire un type spécifique d'information dans cet ensemble. Une requête cite le nom du domaine d'intérêt et décrit le type d'information désiré quant aux ressources concernées. Par exemple, Internet utilise certains de ses noms de domaines pour identifier des hôtes ; une requête pour des adresses de ressources renverront l'adresse Internet de l'hôte.
- Les SERVEURS DE NOM sont des programmes serveurs qui détiennent l'information sur la structure arborescente et les informations de domaines. Un serveur de nom peut stocker momentanément en "cache" des informations de structure ou de ressources sur toute partie de l'espace de noms de domaines, mais en général, un serveur de nom n'accueillera que les informations relatives à un sous ensemble de l'espace, et des pointeurs vers d'autres serveurs de noms qui, par leur association, se répartissent la définition de l'ensemble de l'espace. Les serveurs de nom connaissent la partie de l'arbre des domaines pour laquelle il détiennent une information complète ; un serveur de noms est dit être AUTORISE pour cette partie de l'espace de noms. L'information "autorisée" est organisée en unités appelées ZONES, ces zones pouvant être automatiquement distribuées aux serveurs de noms faisant partie de la "sphère de redondance" pour la zone de données considérées.
- Les processus de résolution, ou RESOLVEURS sont des programmes qui extraient l'information des serveurs de noms en réponse aux requêtes clientes. Les résolveurs doivent pouvoir accéder à au moins un serveur de noms et utiliser l'information qu'ils y trouvent pour donner directement une réponse au client, ou utiliser les références à d'autres serveurs de nom contenues dans le serveur "visible" pour les contacter à leur tour et continuer la résolution. un résolveur sera habituellement une routine système qui peut être appelée directement par un programme utilisateur ; en général aucun protocole n'est nécessaire entre le résolveur et l'application utilisatrice.

Ces trois composants correspondent en gros aux trois "couches" ou points de vue sur le système de noms de domaines :

- Du point de vue de l'utilisateur, le système de noms de domaines est accessible via une procédure simple ou un appel système à un résolveur local. L'espace de domaines consiste en un arbre unique dont toutes les parties sont accessibles à l'utilisateur.
- Du point de vue du résolveur, le système de domaines est composé d'un nombre non connu de serveurs de noms. Chaque serveur de noms héberge une ou plusieurs pièces de l'ensemble des données constituant l'arbre des domaines, le résolveur considérant chacune de ces bases de données comme essentiellement statique.
- Du point de vue d'un serveur de noms, le système de domaines consiste en un regroupement d'ensembles de données locales séparées appelées zones. Le serveur de noms dispose d'une copie locale de certaines zones. Le serveur de noms doit rafraîchir périodiquement ses zones à partir de fichiers principaux locaux ou situés dans des serveurs de noms distants. Les serveurs de noms doivent traiter les requêtes arrivant des résolveurs de façon concurrente.

Pour une meilleure performance, les implémentations pourront coupler ces fonctions. Par exemple, un résolveur exécuté sur la même machine qu'un serveur de noms pourrait partager la base de données accueillant les zones gérées par le serveur de nom et le cache géré, lui, par le résolveur.