Qu’est ce que le DNS ? | Fonctionnement du DNS

Le DNS permet aux utilisateurs de se connecter à des sites Web à l’aide du nom de domaine plutôt que l’adresse IP. Découvrez le fonctionnement du DNS.

Share facebook icon linkedin icon twitter icon email icon

DNS

Objectifs d’apprentissage

Après avoir lu cet article, vous pourrez :

  • Définir le DNS
  • Comprendre le fonctionnement du DNS
  • Différentier les requêtes DNS récursives et itératives
  • Séparer les serveurs de noms faisant autorité des résolveurs DNS récursifs
  • Découvrir le fonctionnement de la mise en cache DNS

Qu’est ce que le DNS ?

Le DNS (Domain Name System) est l’annuaire d’Internet. Les humains accèdent à des informations en ligne via les noms de domaine, comme nytimes.com ou espn.com. Les navigateurs Web interagissent via des adresses IP (Internet Protocol). Le DNS traduit les noms de domaine en adresses IP afin que les navigateurs puissent charger les ressources Internet.

Chaque appareil connecté à Internet a une adresse IP unique que les autres appareils peuvent utiliser pour le trouver. Grâce aux serveurs DNS, les internautes n’ont pas à mémoriser des adresses IP telles que 192.168.1.1 (en IPv4), ou les adresses IP alphanumériques plus récentes et plus complexes telles que 2400:cb00:2048:1::c629:d7a2 (en IPv6).

DNS

Comment fonctionne le DNS ?

Le processus de résolution DNS consiste à convertir un nom d’hôte (tel que www.exemple.com) en adresse IP «informatique» (telle que 192.168.1.1). Une adresse IP est attribuée à chaque appareil sur Internet et cette adresse est nécessaire pour trouver le périphérique Internet en question, tout comme une adresse postale peut être utilisée pour trouver un domicile donné. Lorsqu’un utilisateur souhaite charger une page Web, ce que l’utilisateur saisit dans son navigateur Web (exemple.com) doit être traduit en adresse reconnaissable par la machine afin de localiser la page Web exemple.com.

Afin de comprendre le processus derrière la résolution DNS, il est important de connaitre les différents composants matériels par lesquels une requête DNS doit passer. Pour le navigateur Web, la recherche DNS se produit en « arrière-plan » et ne nécessite aucune autre action de la part de l’ordinateur de l’utilisateur que la demande initiale.

4 serveurs DNS sont sollicités pour charger une page Web :

  • Le récurseur DNS - Le récurseur est en quelque sorte le bibliothécaire à qui l’on demande de trouver un livre en particulier dans la bibliothèque. Le récurseur DNS est un serveur conçu pour recevoir les requêtes des machines client via des applications telles que les navigateurs Web. Généralement, le récurseur est ensuite chargé d’effectuer les demandes supplémentaires nécessaires pour satisfaire la requête DNS du client.
  • Le serveur de noms racine - Le serveur racine est la première étape de la traduction (résolution) de noms d’hôte lisibles par l’humain en adresses IP. C’est en quelque sorte l’index d’une bibliothèque qui indique les différentes étagères de livres, il sert de référence pour d’autres emplacements plus spécifiques.
  • Serveur de noms TLD - Le serveur du domaine de premier niveau ( TLD - Top Domain Level) correspond à une étagère donnée dans la bibliothèque. Ce serveur de noms est l’étape suivante dans la recherche d’une adresse IP spécifique et il héberge la dernière partie d’un nom d’hôte (dans exemple.com, le serveur TLD est « .com »).
  • Serveur de noms faisant autorité - Ce dernier serveur de noms peut être considéré comme un dictionnaire sur une étagère de livres dans lequel un nom donné peut être traduit en une définition. Le serveur de noms faisant autorité est la dernière étape de la requête du serveur de noms. Ce serveur de noms faisant autorité a accès à l’enregistrement demandé, il renvoie l’adresse IP pour le nom d’hôte demandé au récurseur DNS (le bibliothécaire) qui a effectué la requête initiale.

Quelle est la différence entre un serveur DNS faisant autorité et un résolveur DNS récursif ?

Chacun de ces concepts fait référence à des serveurs (groupe de serveurs) qui font partie intégrante de l’infrastructure DNS, mais ils ont chacun un rôle différent et ne se situent pas au même emplacement dans le processus d’une requête DNS. Le résolveur récursif est situé au début de la requête DNS tandis que le serveur de noms faisant autorité est situé à la fin.

Résolveur DNS récursif

Le résolveur récursif est l’ordinateur qui répond à une requête récursive émanant d’un client et prend le temps de rechercher un enregistrement DNS. Il lance pour cela une série de requêtes jusqu’à atteindre le serveur de noms DNS faisant autorité pour l’enregistrement demandé (ou expire ou retourne une erreur si aucun enregistrement n’est trouvé). Heureusement, les résolveurs DNS récursifs n’ont pas toujours à effectuer plusieurs requêtes pour rechercher les enregistrements nécessaires pour répondre à un client ; la mise en cache est un processus de persistance des données qui aide à court-circuiter les demandes nécessaires en fournissant l’enregistrement de la ressource demandée plus tôt dans la recherche DNS.

DNS query diagram

Serveur DNS faisant autorité

Pour faire simple, un serveur DNS faisant autorité est un serveur qui contient, et est responsable de, l’enregistrement de la ressource DNS. Il s’agit du serveur situé en bas de la chaine de recherche DNS qui répondra avec l’enregistrement de ressource demandé, permettant ainsi au navigateur Web à l’origine de la requête d’atteindre l’adresse IP nécessaire pour accéder à un site Web ou à d’autres ressources Web. Un serveur de noms faisant autorité peut répondre aux requêtes avec ses propres données sans avoir à faire de demandes auprès d’une autre source, puisqu’il est la source final de certains enregistrements DNS.

DNS query diagram

Il est utile de noter que lorsque la requête concerne un sous-domaine tel que foo.exemple.com ou blog.cloudflare.com, un serveur de noms supplémentaire est ajouté à la séquence après le serveur de noms faisant autorité, qui est chargé de stoker l’enregistrement CNAME du sous-domaine.

DNS query diagram

Il y a une différence essentielle entre de nombreux services DNS et ceux fournis par Cloudflare. Les différents résolveurs DNS récursifs comme Google DNS, OpenDNS, et les fournisseurs comme Comcast utilisent tous des datacenters de résolveurs DNS récursifs. Ces résolveurs permettent d’obtenir des requêtes rapides et faciles via des clusters optimisés de systèmes informatiques optimisés pour DNS, mais ils sont fondamentalement différents des serveurs de noms hébergés par Cloudflare.

Cloudflare utilise des serveurs de noms au niveau de l’infrastructure qui font partie intégrante du fonctionnement d’Internet. L’exemple principal est le réseau de serveur f-root que Cloudflare est en partie chargé d’héberger. Le F-root est l’un des éléments de l’infrastructure du serveur de noms DNS au niveau racine responsable de milliards de requêtes Internet chaque jour. Notre réseau anycast nous offre une position unique pour traiter d’importants volumes de trafic DNS sans interruption de service.

Quelles sont les étapes d’une recherche DNS ?

Dans la plupart des cas, le DNS concerne un nom de domaine traduit vers l’adresse IP correspondante. Pour en savoir plus sur le fonctionnement de ce processus, il est utile de suivre le cheminement d’une recherche DNS depuis un navigateur Web, via le processus de recherche DNS et de retour vers le navigateur. Étudions les différentes étapes.

Remarque : Les informations de recherche DNS sont souvent mises en cache, soit localement dans l’ordinateur demandeur soit à distance dans l’infrastructure DNS. Une recherche DNS comporte généralement 8 étapes. Lorsque l’information DNS est mise en cache, certaines étapes sont ignorées ce qui accélère le processus de recherche DNS. L’exemple ci-dessous souligne les 8 étapes nécessaires lorsqu’il n’y a pas de mise en cache.

Les 8 étapes d’une recherche DNS :

  1. Un utilisateur tape « exemple.com » dans un navigateur Web et la requête est acheminée à travers Internet et reçue par un résolveur DNS récursif.
  2. Le résolveur demande alors un serveur de noms racine DNS (.).
  3. Le serveur racine répond alors au résolveur avec l’adresse le serveur DNS du domaine de premier niveau (TLD), tel que .com ou .net, qui stocke l’information pour son domaine. Lors d’une recherche pour exemple.com, notre requête est orientée vers le TLD .com.
  4. Le résolveur envoie alors une requête au TLD .com.
  5. Le serveur TLD répond avec l’adresse IP du serveur de noms du domaine, exemple.com.
  6. Enfin, le résolveur récursif envoie une requête au serveur de noms du domaine.
  7. L’adresse IP de exemple.com est ensuite renvoyée depuis le serveur de noms vers le résolveur.
  8. Le résolveur DNS répond alors au navigateur Web avec l’adresse IP du domaine initialement demandé.

  9. Une fois que les 8 étapes de la recherche DNS ont renvoyé l’adresse IP de exemple.com, le navigateur peut lancer la requête pour la page Web :

  10. Le navigateur lance une requête HTTP à l’adresse IP.
  11. Le serveur à cette IP renvoie la page Web à afficher dans le navigateur (étape 10).
DNS query diagram

Qu’est ce qu’un résolveur DNS ?

Un résolveur DNS est la première étape d’une recherche DNS et est responsable des échanges avec le client originaire de la requête initiale. Le résolveur commence une séquence de requêtes qui à terme donne lieu à la traduction d’une URL en l’adresse IP nécessaire.

Remarque : Une recherche DNS non mise en cache typique comporte des requêtes récursives et itératives.

Il est important de comprendre la différence entre une requête DNS récursive et un résolveur DNS récursif. La requête est la requête effectuée par un résolveur DNS demandant la résolution de la requête. Un résolveur DNS récursif est l’ordinateur qui accepte une requête récursive et les processus de réponse comportant les requêtes nécessaires.

DNS query diagram

Quels sont les types de requêtes DNS ?

Dans une recherche DNS typique, trois types de requêtes ont lieu. Par la combinaison de ces requêtes, un processus optimisé pour la résolution DNS peut conduire à une réduction de la distance parcourue. Dans une situation idéale, des données d’enregistrement mises en cache sont disponibles ce qui permet au serveur de noms DNS de renvoyer une requête non récursive.

3 types de requêtes DNS :

  1. Requête récursive - Dans une requête récursive, un client DNS demande à un serveur DNS (généralement un résolveur DNS récursif) de répondre au client soit avec l’enregistrement de la ressource demandé soit avec un message d’erreur s’il ne trouve pas l’enregistrement.

  2. Requête itérative - dans ce cas, le client DNS permet à un serveur DNS de renvoyer la meilleure réponse possible. Si le serveur DNS interrogé n’a pas de réponse correspondante au nom de la requête, il renvoie une recommandation de serveur DNS faisant autorité pour un niveau plus bas de l’espace de noms du domaine. Le client DNS effectue alors une requête auprès de l’adresse recommandée. Ce processus continue avec les serveurs DNS supplémentaires le long de la chaîne jusqu’à ce qu’une erreur se produise ou qu’un délai expire.

  3. Requête non récursive - généralement, ce type de requête survient lorsqu’un client résolveur interroge un serveur DNS sur un enregistrement auquel il a accès, soit parce qu’il fait autorité pour cet enregistrement soit parce qu l’enregistrement existe dans son cache. Généralement, un serveur DNS met en cache les enregistrements DNS pour éviter une consommation de bande passante supplémentaire et les charge sur les serveurs en amont.

Qu’est ce que la mise en cache DNS ? Où intervient la mise en cache DNS ?

L’objectif de la mise en cache est de stocker de façon provisoire les données dans un emplacement dans le but d’améliorer la performance et la fiabilité des requêtes de données. La mise en cache DNS consiste à stocker les données plus près du client demandeur afin que la requête DNS soit résolue plus rapidement et que les requêtes supplémentaires dans la chaine de recherches DNS puissent être évitées, les temps de chargement peuvent ainsi être améliorés et la consommation de bande passante/processeur réduite. Les données DNS peuvent être mises en cache dans divers emplacements, chacun stockant des enregistrements DNS pour un laps de temps déterminé par une durée de vie (TTL - Time to live).

Mise en cache DNS du navigateur

Les navigateurs Web modernes sont conçus pour mettre en cache par défaut les enregistrements DNS pour un laps de temps défini. L’objectif est clair : plus la mise en cache DNS est effectuée à proximité du navigateur Web, plus le nombre d’étapes de traitement nécessaires pour vérifier le cache et effectuer les bonnes requêtes sur une adresse IP est réduit. Lorsqu’une requête est effectuée pour un enregistrement DNS, le cache du navigateur est le premier emplacement où l’enregistrement demandé est recherché.

Dans Chrome, vous pouvez consulter l’état de votre cache DNS en accédant à chrome://net-internals/#dns.

Mise en cache DNS au niveau du système d’exploitation

Le résolveur DNS au niveau du système d’exploitation est la deuxième et dernière étape avant qu’une requête DNS quitte votre machine. Le processus au sein de votre système d’exploitation qui est conçu pour traiter la requête est généralement appelé un « résolveur souche » ou client DNS. Lorsqu’un résolveur souche reçoit une requête d’une application, il consulte d’abord son propre cache pour voir s’il contient l’enregistrement. S’il ne le contient pas, il envoie une requête DNS (avec un ensemble récursif de drapeaux) à l’extérieur de son réseau local vers un résolveur DNS récursif au sein du fournisseur d'accès Internet (FAI).

Lorsqu’un résolveur récursif au sein d’un FAI reçoit une requête DNS, comme dans toutes les étapes précédentes, il vérifie également si la traduction de l’adresse hôte à IP demandée est déjà stockée dans sa couche de persistance locale.

Le résolveur récursif est également doté de fonctionnalités supplémentaires selon le type d’enregistrements présents dans son cache :

  1. Si le résolveur ne contient pas l’enregistrement A, mais contient les enregistrements NS pour les serveurs de noms faisant autorité, il demande ces serveurs de noms directement en contournant plusieurs étapes de la requête DNS. Ce raccourci évite les recherches depuis les serveurs de noms racine et .com (dans notre recherche exemple.com) et permet une résolution plus rapide de la requête DNS.
  2. Si le résolveur ne contient pas d’enregistrements NS, il envoie une requête aux serveurs TLD (.com dans le cas présent), en contournant le serveur racine.
  3. Dans l’éventualité peu probable où le résolveur ne contient pas d’enregistrements pointant vers des serveurs TLD, il interroge les serveurs racine. Cette éventualité se produit généralement après qu’un cache DNS ait été purgé.

Découvrez ce qui différencie le DNS Cloudflare des autres fournisseurs de service DNS.