Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article fournit une vue d’ensemble du processus de requête DNS (Domain Name System) et de la façon dont les serveurs DNS résolvent les requêtes. Il explique également comment les serveurs DNS utilisent la récursivité et l’itération pour résoudre les requêtes.
Fonctionnement des requêtes DNS
Lorsqu’un client DNS a besoin de rechercher un nom, il interroge les serveurs DNS pour résoudre ce nom. Chaque message de requête envoyé par le client contient trois informations, spécifiant une question à laquelle le serveur doit répondre :
- Un nom de domaine DNS spécifié, indiqué comme un nom de domaine complet (FQDN).
- Un type de requête spécifié, qui peut spécifier un enregistrement de ressource (RR) par type ou un type d’opération de requête spécialisé.
- Classe spécifiée pour le nom de domaine DNS. Pour les serveurs DNS exécutant le système d’exploitation Windows, cette classe doit toujours être spécifiée en tant que classe Internet (IN).
Par exemple, le nom spécifié peut être le nom de domaine complet d’un ordinateur, tel que host-a.example.contoso.com., et le type de requête spécifié pour rechercher une adresse de RR (A) portant ce nom. Considérez une requête DNS comme un client posant à un serveur une question en deux parties, telle que « Y a-t-il des enregistrements de ressource A pour un ordinateur nommé hostname.example.contoso.com. ? » Lorsque le client reçoit une réponse du serveur, il lit et interprète la réponse de RR A et apprend ainsi l’adresse IP de l’ordinateur qu’il a demandé à partir de son nom.
Le tableau suivant décrit les types de requêtes DNS courants et les ID correspondants.
| Type | ID |
|---|---|
| A | 1 |
| AAAA | 28 |
| SOA | 6 |
| SRV | 33 |
Les requêtes DNS se résolvent de différentes manières. Un client peut parfois répondre à une requête localement à l’aide d’informations mises en cache obtenues à partir d’une requête précédente. Le serveur DNS peut utiliser son propre cache d’informations d’enregistrement de ressource pour répondre à une requête. Un serveur DNS peut également interroger d’autres serveurs DNS pour le compte du client. Ce processus est appelé récursivité. Le serveur résout le nom, puis renvoie une réponse au client.
De plus, le client lui-même peut tenter de contacter d’autres serveurs DNS pour résoudre un nom. Pour ce faire, il utilise des requêtes distinctes basées sur les réponses de référence des serveurs. On parle alors d'itération.
En général, le processus de requête DNS se déroule en deux parties :
- Une requête de nom commence sur un ordinateur client et est transmise à un résolveur, le service client DNS, pour résolution.
- Lorsque la requête ne peut pas être résolue localement, les serveurs DNS peuvent être interrogés si nécessaire pour résoudre le nom.
Chaque processus est expliqué plus en détail dans cet article.
Fonctionnement de l’itération
L’itération est le type de résolution de noms utilisé entre les clients DNS et les serveurs lorsque les conditions suivantes sont remplies :
- Le client demande l’utilisation de la récursivité, mais celle-ci est désactivée sur le serveur DNS.
- Le client ne demande pas l’utilisation de la récursivité lors de l’interrogation du serveur DNS.
Une requête itérative d’un client indique au serveur DNS que le client attend la meilleure réponse que le serveur DNS peut fournir immédiatement, sans contacter d’autres serveurs DNS.
Lorsque l’itération est utilisée, un serveur DNS répond à un client en fonction de sa propre connaissance spécifique de l’espace de noms concernant les données de noms interrogées. Par exemple, si un serveur DNS de votre intranet reçoit une requête d’un client local pour www.contoso.com, il peut renvoyer une réponse à partir de son cache de noms. Si le nom interrogé n’est pas actuellement stocké dans le cache de noms du serveur, celui-ci peut répondre en fournissant une référence. Une référence est une liste de RR NS et A vers d’autres serveurs DNS qui sont plus proches du nom demandé par le client.
Lorsqu’une itération est utilisée, un serveur DNS peut contribuer à la résolution d’une requête de nom au-delà du renvoi de sa propre meilleure réponse au client. Pour la plupart des requêtes itératives, un client utilise sa liste de serveurs DNS configurée localement pour contacter d’autres serveurs de noms dans l’espace de noms DNS si son serveur DNS principal ne peut pas résoudre la requête.
Le service client DNS Windows n’effectue pas de récursivité.
Comment la mise en cache fonctionne
Lorsque les serveurs DNS traitent les requêtes des clients à l’aide de la récursivité ou de l’itération, ils découvrent et acquièrent un stock important d’informations sur l’espace de noms DNS. Le serveur met ensuite ces informations en cache.
La mise en cache permet d’accélérer les performances de la résolution DNS pour les prochaines requêtes de noms populaires, tout en réduisant considérablement le trafic de requêtes DNS sur le réseau.
Lorsque les serveurs DNS effectuent des requêtes récursives pour le compte des clients, ils mettent temporairement en cache les enregistrements de ressources. Les enregistrements de ressources mis en cache contiennent des informations obtenues à partir de serveurs DNS. Ces serveurs font autorité pour les noms de domaine DNS. Les informations sont apprises lors de requêtes itératives. Ces requêtes permettent de répondre entièrement à une requête récursive effectuée pour le compte d’un client. Par la suite, lorsque d’autres clients placent de nouvelles requêtes qui demandent des informations d’enregistrement de ressource correspondant aux enregistrements mis en cache, le serveur DNS peut utiliser les informations mises en cache pour y répondre.
Lorsque des informations sont mises en cache, une valeur de durée de vie (TTL) s’applique à tous les enregistrements de ressources mis en cache. Tant que la durée de vie d’un enregistrement de ressource mis en cache n’expire pas, un serveur DNS peut continuer à mettre en cache. Il peut réutiliser l’enregistrement de ressource mis en cache lorsqu’il répond à des requêtes de ses clients qui correspondent à ces enregistrements. Les valeurs de durée de vie de mise en cache utilisées par les enregistrements de ressources dans la plupart des configurations de zone se voient attribuer la TTL minimale (par défaut) qui est définie dans l’enregistrement de ressource SOA (Start of Authority) de la zone. Par défaut, la durée de vie minimale est de 3 600 secondes (une heure), mais elle peut être ajustée ou, si nécessaire, des durées de vie individuelles de mise en cache peuvent être définies pour chaque enregistrement de ressource.
Note
Par défaut, le service Serveur DNS utilise un fichier d’indications de racine, cache.dns, qui est stocké dans le dossier <systemroot>\System32\Dns de l’ordinateur serveur. Ce fichier contient les enregistrements de ressources NS et A pour les serveurs racine de l’espace de noms DNS (les serveurs racine Internet ou les serveurs racines intranet). Lorsque le service de serveur DNS est démarré, la liste des serveurs racine est interrogée pour obtenir une liste actuelle de tous les serveurs racines. Les résultats de la requête sont utilisés pour mettre à jour le fichier d’indications de racine. Cette opération est également effectuée périodiquement pendant l’exécution du service. Lorsqu’un administrateur apporte des modifications aux indications de racine, ces modifications sont écrites dans le fichier d’indications de racine.
Résolution du service client DNS
Lorsqu’un nom de domaine DNS est utilisé dans un programme sur l’ordinateur local, la demande est ensuite transmise pour résolution au service client DNS, qui vérifie d’abord les informations mises en cache localement. Si le nom interrogé peut être résolu, la réponse à la requête est donnée et le processus est terminé.
Le diagramme suivant montre un exemple simple d’un client DNS interrogeant le service client DNS pour une résolution de nom.
Le cache du résolveur local peut inclure des informations de nom obtenues à partir de deux sources possibles :
Si un fichier Hosts est configuré localement, tous les mappages nom d’hôte-adresse de ce fichier sont chargés dans le cache au démarrage du service Client DNS.
Les enregistrements de ressources obtenus dans les réponses aux requêtes DNS précédentes sont ajoutés au cache et conservés pendant une durée déterminée par la durée de vie (TTL).
Si la requête ne correspond pas à une entrée dans le cache, le processus de résolution se poursuit : le client interroge un serveur DNS pour résoudre le nom.
Le diagramme suivant montre le service Client DNS vérifiant le cache pour une requête DNS.
La configuration de clients DNS avec plusieurs adresses IP de serveur DNS ajoute une tolérance aux pannes à votre infrastructure DNS. L’ajout de plusieurs adresses IP de serveur DNS garantit que les noms DNS peuvent toujours être résolus en cas de défaillance du serveur DNS principal, de la liaison réseau ou de l’infrastructure de prise en charge.
Les défaillances de noms peuvent entraîner le blocage d’applications ou de composants, des pannes de ressources en attendant l’expiration des délais dépendants, ce qui provoque directement ou indirectement des défaillances opérationnelles. Consultez Délais d’expiration de la résolution du client DNS pour plus d’informations sur tous les scénarios possibles.
Pour ces raisons, nous vous recommandons de configurer tout client Windows avec plus d’un serveur DNS. Toutefois, le processus de résolution du client Windows varie en fonction du nombre de serveurs DNS configurés.
Processus de requête du serveur DNS
Lorsque le serveur DNS reçoit une requête, il vérifie d’abord s’il peut y répondre avec une source d'autorité. Le serveur DNS effectue des vérifications à l’aide des informations d’enregistrement de ressource contenues dans une zone configurée localement sur le serveur.
Si le nom interrogé renvoie une correspondance de RR dans les informations de zone locale, le serveur répond avec une source d'autorité, en utilisant ces informations pour résoudre le nom interrogé.
S’il n’existe aucune information de zone pour le nom interrogé, le serveur vérifie ensuite s’il peut résoudre le nom à l’aide des informations mises en cache localement des requêtes précédentes. Si une correspondance est trouvée ici, le serveur répond avec cette information. Là encore, si le serveur préféré peut répondre par une réponse positive à partir de son cache au client demandeur, la requête est terminée.
Si le nom interrogé ne trouve pas de correspondance sur le serveur préféré, que ce soit à partir du cache ou des informations de zone, le processus de requête peut se poursuivre, en utilisant la récursivité pour résoudre complètement le nom. Ce processus implique l’aide d’autres serveurs DNS pour la résolution du nom. Par défaut, le service Client DNS demande au serveur d’utiliser un processus de récursivité pour résoudre entièrement les noms pour le compte du client avant de renvoyer une réponse.
Pour que le serveur DNS puisse effectuer correctement la récursivité, il a d’abord besoin d’informations de contact utiles sur d’autres serveurs DNS dans l’espace de noms de domaine DNS. Ces informations sont fournies en tant qu’indications de racine. Les indications de racine sont une liste d’enregistrements de ressources préliminaires. Le service DNS utilise ces enregistrements pour localiser d’autres serveurs DNS qui font autorité pour la racine de l’arborescence de l’espace de noms de domaine DNS. Les serveurs racines font autorité pour la racine du domaine et les domaines de niveau supérieur dans l'arborescence de l'espace de noms de domaine DNS.
En utilisant des indications de racine pour trouver des serveurs racines, un serveur DNS est capable d'utiliser la récursivité. En théorie, ce processus permet à n’importe quel serveur DNS de localiser les serveurs qui font autorité pour tout autre nom de domaine DNS utilisé à n’importe quel niveau de l’arborescence de l’espace de noms.
Les étapes suivantes décrivent le processus d’interrogation d’un serveur DNS :
S’il s’agit d’un nom de domaine complet (FQDN), c’est-à-dire qu’il se termine par un point de fin (
.), la requête est soumise au serveur DNS. Par exemple,www.contoso.com.S’il s’agit d’une requête multi-étiquettes non qualifiée, c’est-à-dire qu’elle ne se termine pas par un point de fin (
.), le client DNS la soumet au serveur DNS avec un point de fin (.). Par exemple,www.contoso.com.Si la non qualifiée est une requête à une seule étiquette telle que
www. Ensuite, le comportement est différent en fonction des paramètres DNS de la carte réseau.S’il existe une liste de recherche de suffixes DNS, le service Client DNS les ajoute du premier au dernier à la requête pour former une seule étiquette et soumet la requête avec le point de fin (
.) au serveur DNS. Ce processus est répété jusqu’à ce que toute la liste de recherche de suffixes DNS soit utilisée.Si aucune liste de recherche de suffixe DNS n’est configurée, le service client DNS ajoute le suffixe DNS principal à la requête à étiquette unique avec le point de fin (
.) et l’envoie au serveur DNS.Lorsque le client DNS est configuré pour effectuer la dévolution de nom, il dévolue le suffixe DNS principal et envoie une autre requête avec un point de fin (
.) si le suffixe DNS principal échoue. Par exemple, si la résolution enwww.test.contoso.coméchoue, le client est dévolu àwww.contoso.comS’il existe un suffixe DNS spécifique aux connexions configuré sur les adaptateurs, il ajoute la requête avec un point (
.) et la soumet au serveur DNS.
Dans tous les cas, la réponse est stockée dans le cache du client DNS, qu’elle soit positive ou négative.
L’organigramme suivant illustre le processus décrit d’interrogation d’un serveur DNS.
Récursivité DNS
Envisagez l’utilisation du processus de récursivité pour localiser le nom host-b.example.contoso.com. lorsque le client interroge un seul serveur DNS. Le processus se produit lorsqu’un serveur et un client DNS sont démarrés pour la première fois et qu’aucune information mise en cache localement n’est disponible pour aider à résoudre une requête de nom. Il suppose que le nom demandé par le client est celui d’un nom de domaine dont le serveur n’a pas de connaissance locale, en fonction de ses zones configurées.
Tout d’abord, le serveur préféré analyse le nom complet et détermine qu’il a besoin de l’emplacement du serveur qui fait autorité pour le domaine de premier niveau, com. Il utilise ensuite une requête itérative adressée au serveur DNS com pour obtenir une référence au serveur contoso.com. Ensuite, une réponse de référence est transmise du serveur contoso.com au serveur DNS pour example.contoso.com.
Enfin, le serveur example.contoso.com. est contacté. Étant donné que ce serveur contient le nom interrogé dans ses zones configurées, il envoie une réponse d'autorité au serveur d’origine qui a lancé la récursivité. Lorsque le serveur d’origine reçoit la réponse, il vérifie si la réponse fait autorité. Si c’est le cas, le serveur renvoie cette réponse au client demandeur, ce qui termine le processus de requête récursive.
Bien que le processus de requête récursive puisse être gourmand en ressources lorsqu’il est exécuté comme décrit, il présente certains avantages en termes de performances pour le serveur DNS. Par exemple, pendant le processus de récursivité, le serveur DNS qui effectue la recherche récursive obtient des informations sur l’espace de noms de domaine DNS. Le serveur met en cache les informations, qui peuvent être réutilisées pour accélérer la réponse aux requêtes ultérieures qui les utilisent ou qui leur correspondent. Au fil du temps, ces informations mises en cache peuvent augmenter jusqu’à occuper une partie importante des ressources de mémoire du serveur. Le cache est effacé chaque fois que le service DNS est redémarré.
Expiration adaptative de requête DNS
La fonctionnalité d’expiration adaptative des requêtes DNS permet d’adapter le délai d’expiration des requêtes DNS en fonction du temps requis pour les requêtes précédentes, réduisant ainsi l’expiration de la plupart des requêtes. Les délais d’expiration peuvent être augmentés pour les liaisons à latence élevée, telles que les liaisons satellite. Les applications du Windows Store peuvent optimiser la configuration des délais d’expiration DNS pour chaque interface réseau.
Au lieu d’attendre 1 000 ms avant de faire expirer une requête DNS, le premier délai d’expiration est ajusté pour être compris entre 25 ms et 1 000 ms, en fonction des performances passées du réseau.
Cache non réactif du serveur DNS
Les serveurs DNS non réactifs sont mis en cache et font régulièrement l’objet de nouvelles tentatives. Cela permet au client DNS d’utiliser de manière cohérente le meilleur serveur disponible et de passer moins de temps à attendre les serveurs DNS non réactifs.
La figure suivante montre un exemple de client DNS qui interroge chaque serveur sur chaque carte à l’aide du processus décrit dans cette section.
Le service Client DNS interroge les serveurs DNS dans l’ordre suivant :
Le service Client DNS envoie la requête de nom au premier serveur DNS de la liste des serveurs DNS préférés de la carte et attend une réponse pendant une seconde.
Si le service Client DNS ne reçoit pas de réponse du premier serveur DNS dans la seconde, il envoie la requête de nom aux premiers serveurs DNS sur toutes les cartes encore envisageables et attend une réponse pendant deux secondes.
Si le service Client DNS ne reçoit pas de réponse d’un serveur DNS dans les deux secondes, il envoie la requête à tous les serveurs DNS sur toutes les cartes encore envisageables. Le service Client DNS attend ensuite une réponse pendant deux secondes supplémentaires.
Si le service Client DNS ne reçoit toujours pas de réponse d’un serveur DNS, il envoie la requête de nom à tous les serveurs DNS sur toutes les cartes encore envisageables et attend une réponse pendant quatre secondes.
Si le service Client DNS ne reçoit pas de réponse d’un serveur DNS, le client DNS envoie la requête de nom à tous les serveurs DNS sur toutes les cartes encore envisageables et attend une réponse pendant huit secondes.
Si le service Client DNS ne reçoit pas de réponse d’un serveur dans les huit secondes, le service Client DNS répond avec un message d’expiration. Si le service Client DNS ne reçoit pas de réponse d’un serveur DNS sur une carte spécifique, toutes les requêtes adressées à ces serveurs pendant les 30 secondes suivantes sur cette carte expirent.
Si, à un moment donné, le service Client DNS reçoit une réponse négative d’un serveur, il supprime tous les serveurs de cette carte lors de cette recherche. Par exemple, si le premier serveur de la carte secondaire A donne une réponse négative à l’étape 2, le service Client DNS n’interroge aucun autre serveur de la liste pour la carte secondaire A.
Si le service Client DNS reçoit une réponse positive, il arrête de demander le nom, ajoute la réponse au cache et renvoie la réponse au client.
Le service Client DNS assure le suivi des serveurs qui répondent le plus rapidement aux requêtes de nom et déplace les serveurs vers le haut ou vers le bas de la liste en fonction de la rapidité avec laquelle ils répondent aux requêtes de nom.
Autres réponses aux requêtes
La description précédente des requêtes DNS suppose que le processus se termine par une réponse positive renvoyée au client. Cependant, les requêtes peuvent également renvoyer d’autres réponses. Voici les réponses les plus courantes aux requêtes :
- Réponse faisant autorité
- Réponse positive
- Réponse de référence
- Réponse négative
Une réponse faisant autorité est une réponse positive d’un serveur DNS qui a une autorité directe sur le nom interrogé. Cette réponse inclut le bit d’autorité défini dans le message DNS pour indiquer son authenticité.
Une réponse positive peut contenir le RR demandé ou une liste de RR (également appelée ensemble de RR) qui correspond au nom de domaine DNS demandé et au type d’enregistrement spécifié dans le message de requête.
Une réponse de référence contient d’autres RR non spécifiés par nom ou type dans la requête. Ce type de réponse est renvoyé au client si le processus de récursivité n’est pas pris en charge. Les enregistrements sont destinés à servir de réponses de référence utiles que le client peut utiliser pour poursuivre la requête avec l’itération. Une réponse de référence contient plus de données comme les RR autres que le type interrogé. Par exemple, si le serveur DNS ne trouve pas de RR A pour le nom d’hôte www demandé dans cette zone, mais qu’il trouve un RR CNAME pour www à la place, il peut inclure ces informations dans sa réponse au client. Si le client est en mesure d’utiliser l’itération, il peut effectuer d’autres requêtes à l’aide des informations de référence pour tenter de résoudre entièrement le nom par lui-même.
Une réponse négative du serveur peut indiquer l’un des deux résultats suivants :
- Le serveur faisant autorité n’a pas pu trouver le nom demandé dans l’espace de noms DNS.
- Le serveur faisant autorité a trouvé le nom demandé, mais il n’existe aucun enregistrement du type spécifié pour ce nom.
Le résolveur traite la requête et renvoie les résultats au programme demandeur. La réponse peut être positive ou négative. De plus, le résolveur met en cache la réponse pour une utilisation ultérieure.
Si la réponse résultante à une requête est trop longue pour être envoyée et résolue dans un seul paquet de message UDP, le serveur DNS peut lancer une réponse de basculement sur le port TCP 53 pour répondre entièrement au client dans une session connectée via TCP.
La désactivation de l’utilisation de la récursivité sur un serveur DNS est effectuée lorsque les clients DNS sont limités à la résolution des noms sur un serveur DNS spécifique, tel qu’un serveur situé sur votre intranet. La récursivité peut également être désactivée lorsque le serveur DNS ne peut pas résoudre les noms DNS externes. Dans ce cas, les clients sont censés basculer vers un autre serveur DNS pour la résolution de noms. Si vous désactivez la récursivité sur le serveur DNS, vous ne pouvez pas utiliser de redirecteurs sur le même serveur.
Par défaut, les serveurs DNS utilisent plusieurs minutages par défaut lorsqu’ils exécutent une requête récursive et contactent d’autres serveurs DNS. Ces valeurs par défaut comprennent :
- Une récurrence essaie à nouveau toutes les 3 secondes. Cet intervalle correspond à la durée pendant laquelle le service DNS attend avant de réessayer une requête effectuée lors d’une recherche récursive.
- Un délai d’expiration de récursivité de 8 secondes. Cet intervalle correspond à la durée pendant laquelle le service DNS attend avant de déclarer l'échec d'un nouvel essai d'une recherche récursive.
Dans la plupart des cas, ces paramètres n’ont pas besoin d’être ajustés. Toutefois, si vous utilisez des recherches récursives sur une liaison de réseau étendu (WAN) à faible vitesse, vous pouvez améliorer les performances du serveur et la complétion des requêtes en apportant de légers ajustements aux paramètres.
Contenu connexe
Pour en savoir plus sur le processus de recherche inversée, consultez Recherche inversée.