Le DNS (Domain Name System) est un système de distribution d'informations relatives à des noms de domaines. Il est notamment utilisé pour obtenir des adresses IP à partir d'un nom de domaine, mais peut servir à obtenir n'importe quelle information suffisamment courte à partir d'un nom de domaine.
## Principe de base
Le DNS utilise le modèle client-serveur : le client demande un type de donnée pour un domaine à un serveur, qui répond :
1. le ou les enregistrements correspondants s'il les connait
2. sinon les adresses des serveurs d'une zone DNS qui est plus proche du résultat
3. sinon une erreur
## Le cache
En réalité, un résolveur DNS correct ne fera pas toutes ces requêtes à chaque fois. Il garde les données reçu des serveurs ayant autorité pendant la période de validité indiquée par ceux-ci, cette période s'appelle le TTL (Time-To-Live). Cela permet de ne pas surcharger les serveurs ayant autorité les plus haut placés, qui devraient sans le cache des résolveurs répondre à beaucoup plus de requêtes.
Ce mécanisme signifie toutefois que la modification d'un enregisrement n'est assurée d'être effective partout qu'une fois que la durée du TTL précédent a expiré.
Ces informations sont conventionnellement représentées avec une ligne par enregistrement, et chaque sous-partie séparée par des espaces, comme dans l'exemple suivant :
```
mondomain.example. 3600 IN TXT "Ceci est un enregistrement TXT pour mondomaine.example."
mondomain.example. 3600 IN TXT "Ceci est un second enregistrement TXT pour mondomaine.example."
Ainsi, il est probable que le résolveur reçoivent plusieurs adresses de serveurs ayant autorité pour un domaine ou que le client recoive plusieurs adresses IPv6 pour le domaine demandé ; le résolveur ou le client n'utilisera alors généralement qu'une seule de ces adresses, choisie aléatoirement. Si jamais l'adresse ne fonctionne pas, l'une des autres adresses reçues sera essayée, ce qui permet une meilleure résistance aux pannes de serveur.