En 1983, peu de temps après le déploiement de TCP/IP, un système d'échange plus robuste et évolutif fut inventé: le DNS (Domain Name System). Le principe était de permettre l'échange dynamique des informations asociées aux adresses IP, au travers d'un système de notification accessible depuis l'ensemble des machines du réseau.

Paul Mockapetris, diplômé en 1971 du MIT et en 1982 de l'Université de Californie - Irvine, écrit la première implémentation du DNS pour systèmes d'exploitation TOPS-20 en 1983. Ces recherches sont publiées sous les RFC882 (Domaine Names - Concepts and Facilities) et RFC883 (Domain Names - Implementation and Specification).

Trois serveurs DNS furent tout d'abord implémentés en 1983, puis l'ensemble des serveurs racines en 1986. Précédemment en 1984, la première implémentation du DNS sur système d'exploitation Unix voit le jour, elle est revue en 1985 et nommée BIND (Berkeley Internet Name Domain). Le portage du DNS sur les systèmes d'exploitation Windows apparaitre au début des années 1990.

Souvent comparé à l'annuaire téléphonique, le système DNS possède une organisation hiérarchique des données en octroyant une autorité particulière à certains serveurs : les serveurs racines (comparaison avec la liste des annuaires des pays), les serveurs autoritaires sur suffixe (comparaison avec la liste des annuaires des départements), les serveurs autoritaires sur zone ((comparaison avec les annuaires de chaque département) et les serveurs autoritaires sur sous-zone (comparaison avec les annuaires de villes par exemple).

Ce mécanisme permet de réduire l'impact d'une défaillance de l'un des serveurs DNS et permet de distribuer l'ensemble des consultations et mises à jour des annuaires. Son implémentation se fait au travers d'un modèle Client-Serveur s'appuyant sur les couches de transport TCP et/ou UDP.

Syntaxiquement, un nom de domaine est composé d'au moins deux parties, séparées par des caractères . :

  • la partie la plus à droite contient le suffixe de domaine (appelé aussi TLD pour Top-Level Domain)
  • chaque partie à sa gauche permettant de spécifier le domaine lui-même et les éventuels sous-domaines
  • la partie la plus à gauche désignant le nom de l'équipement IP associé
  • un nom de domaine ne peut par contenir plus de 127 niveaux sous le préfixe
  • chaque partie d'un nom de domaine est limité à 63 octets
  • la longueur total d'un nom de domaine ne peut excéder 253 octets
  • un nom de domaine peut être associé à une ou plusieurs adresses IP


Exemple avec le nom de domaine machine123.departement-informatique.universite.arpa :

  • le suffixe ou TLD est : .arpa
  • la zone DNS est : universite
  • la sous-zone DNS est : departement-informatique
  • le nom de l'équipement est : machine123


Lorsque qu'une machine connectée au réseau Internet souhaite connaitre l'adresse IP de la machine machine123.departement-informatique.universite.arpa, elle interroge un serveur DNS habituellement situé sur son réseau local, qui va alors interroger :

  • 1. l'un des serveurs racines DNS pour savoir qui est autoritaire sur la zone .arpa
  • 2. le serveur en charge de la zone .arpa pour savoir qui est autoritaire sur la zone universite.arpa
  • 3. le serveur en charge de la zone universite.arpa pour savoir qui est autoritaire sur la sous zone departement-informatique
  • 4. le serveur en charge de la sous-zone departement-informatique pour savoir quelle est l'adresse IP de machine123


Ce processus (usuellement nomée lookup) fait appel à des serveurs DNS appelés serveurs de résolution, qui initie et traite l'ensemble des interrogations DNS nécessaires à l'obtention de l'information. Le processus fait aussi parfois appel à des serveurs DNS appelés serveurs cache qui stockent les informations issues des interrogations afin de les redistribuer si une demande similaire est faite, ceci permettant de réduire le nombre d'interrogations faites pour un même objet.

L'introduction dans le protocole DNS d'une notion de cache permet de réduire les échanges auprès des serveurs de noms. La durée de vie d'un cache de données est déterminé par une information contenue dans la zone DNS et nommée TTL (Time-To-Live), mais elle peut également être fixée arbitrairement par l'administrateur du cache.

Enfin, la résolution DNS permet également l'interrogation inverse des données, à savoir obtenir le nom DNS d'une machine à partir de son adresse IP. Ce processus est usuellement nommé reverse-lookup.