Jour 22 Day 22 · mardi 1 septembre 2026 Tuesday 1 September 2026 DevOps Fondamental

DNS : de l'URL à l'IP DNS: from URL to IP

Résolution récursive, types d'enregistrements, TTL et le mythe de la « propagation » : le DNS est au cœur du « que se passe-t-il quand tu tapes une URL ? », la question culte des entretiens. Recursive resolution, record types, TTL and the "propagation" myth: DNS sits at the heart of "what happens when you type a URL?", the cult interview question.

L’essentiel

Le DNS (Domain Name System) est l’annuaire d’Internet : il traduit des noms mémorisables (www.example.com) en adresses IP (93.184.216.34) que les machines utilisent pour se joindre. C’est une base de données distribuée et hiérarchique : personne n’a la liste complète, chaque niveau sait seulement vers qui déléguer.

La hiérarchie se lit de droite à gauche : la racine (.) connaît les serveurs des TLD (.com, .fr, .me) ; le TLD connaît les serveurs autoritaires de chaque domaine (example.com) ; et l’autoritaire détient les enregistrements réels du domaine. Entre vous et cette hiérarchie, un resolver récursif (celui de la box, du FAI, ou un public comme 1.1.1.1 / 8.8.8.8) fait le travail d’enquête et met en cache les réponses.

Quand vous tapez une URL, la résolution DNS est la toute première étape — avant TCP, avant TLS, avant HTTP. Et dans l’immense majorité des cas, elle ne va nulle part : la réponse est déjà dans un cache (navigateur, OS, resolver).

Comment ça marche

Le déroulé complet, du navigateur à l’autoritaire — chaque étape ne se produit que si la précédente n’a pas la réponse en cache :

Navigateur → cache navigateur → cache OS
     │ (raté)
     ▼
Resolver récursif (FAI, 1.1.1.1…) ── cache ? ── oui → IP
     │ (raté : il enquête)
     ├─▶ 1. Racine « . »
     │      ← « voici les serveurs du .com »
     ├─▶ 2. TLD .com
     │      ← « voici les autoritaires
     │         d'example.com »
     └─▶ 3. Autoritaire d'example.com
            ← « www = 93.184.216.34 » (TTL 300)
     │
     ▼
IP rendue au navigateur, réponse mise en
cache partout pour TTL secondes

Vous pouvez rejouer cette enquête vous-même avec dig +trace, qui court-circuite les caches et interroge la hiérarchie depuis la racine :

dig +trace www.example.com

# .            518400  IN  NS  a.root-servers.net.
#   → étape 1 : la racine liste les serveurs des TLD
# com.         172800  IN  NS  a.gtld-servers.net.
#   → étape 2 : le TLD .com délègue vers les
#     serveurs autoritaires du domaine
# example.com. 172800  IN  NS  a.iana-servers.net.
#   → étape 3 : l'autoritaire répond enfin
# www.example.com. 300 IN  A   93.184.216.34
#   → la réponse finale : un enregistrement A,
#     avec son TTL de 300 secondes

# Au quotidien : dig www.example.com   (via le resolver, caches inclus)
#                dig @1.1.1.1 example.com MX   (interroger un resolver précis)

Chaque réponse porte un TTL (Time To Live, en secondes) : la durée pendant laquelle un cache a le droit de la garder. C’est la clé du mythe le plus répandu du DNS :

💡 La « propagation » n’existe pas — le DNS ne « pousse » rien vers personne. Quand vous changez un enregistrement, les caches qui détiennent l’ancienne valeur la servent jusqu’à expiration de leur TTL, puis vont chercher la nouvelle. Ce qu’on appelle « attendre la propagation », c’est attendre que les caches expirent — c’est de l’expiration, pas de la diffusion. D’où la pratique : baisser le TTL (300s) avant une migration, le remonter après.

Concepts clés à maîtriser

Les types d’enregistrements à connaître :

TypeRôleExemple
ANom → adresse IPv4app.bantou.me → 51.210.246.139
AAAANom → adresse IPv6example.com → 2606:2800:…
CNAMEAlias vers un autre nomwww → example.com
MXServeurs de mail du domaine (avec priorité)10 mail.example.com
TXTTexte libre : vérifications, SPF/DKIM/DMARC"v=spf1 include:…"
NSDélègue la zone à des serveurs autoritairesns1.ovh.net
* (wildcard)Attrape tous les sous-domaines non définis*.bantou.me → VPS
  • CNAME, la subtilité classique : il aliasse un nom entier vers un autre nom (résolution en deux temps), et un nom portant un CNAME ne peut porter aucun autre enregistrement — c’est pourquoi l’apex (example.com sans sous-domaine) ne peut pas être un CNAME (il porte déjà NS…), d’où les solutions type ALIAS/ANAME chez certains hébergeurs.
  • DNS et déploiements : le workflow type — créer l’enregistrement A (ou wildcard *.domaine.tld → serveur, et chaque nouvelle app n’est plus qu’une config du reverse proxy), attendre l’expiration des caches, et seulement alors la validation Let’s Encrypt (HTTP-01) peut aboutir puisqu’elle exige que le nom résolve vers votre serveur. Le wildcard DNS est exactement ce qui permet le pattern « un sous-domaine par app » sans toucher à la zone à chaque déploiement.
  • dig, l’outil du quotidien : dig domaine (résolution via resolver), dig @8.8.8.8 domaine (interroger un serveur précis — pratique pour comparer caches), dig domaine MX (un type précis), dig +trace (rejouer la hiérarchie), dig -x IP (résolution inverse).
  • DoH / DoT en une phrase : DNS-over-HTTPS et DNS-over-TLS chiffrent les requêtes entre vous et le resolver — le DNS historique circule en clair sur le port 53, lisible par tout intermédiaire.

⚠️ Piège vécu — après un changement DNS, votre machine peut « voir » la nouvelle IP et pas celle du voisin (caches différents, TTL non expirés). Diagnostiquer avec dig @1.1.1.1 vs dig @8.8.8.8 vs votre resolver local : trois réponses potentiellement différentes, aucune n’est « fausse » — leurs caches ont expiré à des moments différents.

En entretien

« Que se passe-t-il quand tu tapes une URL dans le navigateur ? » — Dérouler dans l’ordre : 1) résolution DNS (caches navigateur/OS → resolver récursif → si besoin racine → TLD → autoritaire) ; 2) connexion TCP vers l’IP (handshake) ; 3) handshake TLS si HTTPS ; 4) requête HTTP, réponse du serveur ; 5) parsing et rendu. La profondeur attendue sur le DNS : citer la hiérarchie et les caches. C’est LA question pour évaluer votre vision d’ensemble.

« Quelle différence entre resolver récursif et serveur autoritaire ? » — Le récursif est un enquêteur mandaté par le client : il parcourt la hiérarchie et met en cache. L’autoritaire détient la vérité pour une zone : il répond sans rien demander à personne. 8.8.8.8 est un récursif ; les serveurs NS de votre registrar sont autoritaires pour votre domaine.

« A vs CNAME ? » — A : nom → IP, direct. CNAME : nom → autre nom, résolu ensuite (une indirection de plus). CNAME pratique quand la cible change d’IP (le CNAME suit tout seul) ; impossible à l’apex du domaine.

« Pourquoi mon changement DNS n’est-il pas visible partout ? » — Parce qu’il n’y a pas de propagation : chaque cache sert l’ancienne valeur jusqu’à expiration de son TTL. Réponse bonus : « c’est pour ça qu’on baisse le TTL avant une migration » — vous venez de montrer que vous avez déjà migré quelque chose.

« À quoi servent les enregistrements TXT ? » — Métadonnées en texte libre : prouver la propriété d’un domaine (vérifications Google/Let’s Encrypt DNS-01) et lutter contre l’usurpation d’email via SPF, DKIM, DMARC.

Pièges & idées reçues

🎤 En entretien — « que se passe-t-il quand tu tapes une URL ? » est posée dans une majorité d’entretiens, du stage au senior. Elle ne teste pas le par-cœur : elle teste si vous savez où s’arrêter et où creuser. Stratégie gagnante : dérouler les 5 grandes étapes en une minute, puis proposer « je peux détailler l’étape que vous voulez » — et être réellement capable de creuser le DNS et TLS.

  • « Le DNS, c’est un serveur » — non : une base distribuée et hiérarchique. Aucun serveur ne connaît tout ; chacun sait déléguer. Les 13 « root servers » (a à m) sont eux-mêmes des centaines d’instances anycast.
  • « La propagation prend 24-48h » — non : ça dépend du TTL des enregistrements concernés. TTL de 300s = visible partout en ~5 minutes une fois les caches expirés. Les « 48h » viennent des changements de serveurs NS chez le registrar, dont les TTL sont longs.
  • Confondre registrar et hébergeur DNS — le registrar loue le nom ; l’hébergeur DNS fait tourner les serveurs autoritaires de la zone. C’est souvent la même entreprise, jamais le même rôle.
  • Oublier le cache de l’OS et du navigateur — vider le cache du resolver ne suffit pas toujours : Chrome et l’OS ont les leurs (chrome://net-internals/#dns, resolvectl flush-caches).
  • /etc/hosts court-circuite tout — lu avant toute requête DNS : parfait pour tester un site avant la bascule DNS, source de « bugs » mystérieux quand on l’oublie dedans.

Pour aller plus loin

  • Cloudflare — What is DNS? : la meilleure série d’articles d’introduction
  • How DNS works : la BD qui explique la résolution récursive — mémorable en dix minutes
  • RFC 1034 : les concepts DNS à la source (survol suffisant)
  • Manipuler : dig +trace sur votre propre domaine, changer un TTL, chronométrer l’expiration réelle des caches avec dig @1.1.1.1 vs dig @8.8.8.8

The essentials

DNS (Domain Name System) is the Internet’s directory: it translates memorable names (www.example.com) into IP addresses (93.184.216.34) that machines use to reach each other. It’s a distributed, hierarchical database: nobody holds the full list, each level only knows whom to delegate to.

The hierarchy reads right to left: the root (.) knows the servers of the TLDs (.com, .fr, .me); the TLD knows the authoritative servers of each domain (example.com); and the authoritative server holds the domain’s actual records. Between you and this hierarchy, a recursive resolver (your router’s, your ISP’s, or a public one like 1.1.1.1 / 8.8.8.8) does the detective work and caches the answers.

When you type a URL, DNS resolution is the very first step — before TCP, before TLS, before HTTP. And in the vast majority of cases, it goes nowhere: the answer is already in a cache (browser, OS, resolver).

How it works

The full walkthrough, from browser to authoritative server — each step only happens if the previous one had no cached answer:

Browser → browser cache → OS cache
     │ (miss)
     ▼
Recursive resolver (ISP, 1.1.1.1…) ── cache? ── yes → IP
     │ (miss: it investigates)
     ├─▶ 1. Root "."
     │      ← "here are the .com servers"
     ├─▶ 2. .com TLD
     │      ← "here are example.com's
     │         authoritative servers"
     └─▶ 3. example.com authoritative
            ← "www = 93.184.216.34" (TTL 300)
     │
     ▼
IP returned to the browser, answer cached
everywhere for TTL seconds

You can replay this investigation yourself with dig +trace, which bypasses the caches and queries the hierarchy from the root:

dig +trace www.example.com

# .            518400  IN  NS  a.root-servers.net.
#   → step 1: the root lists the TLD servers
# com.         172800  IN  NS  a.gtld-servers.net.
#   → step 2: the .com TLD delegates to the
#     domain's authoritative servers
# example.com. 172800  IN  NS  a.iana-servers.net.
#   → step 3: the authoritative finally answers
# www.example.com. 300 IN  A   93.184.216.34
#   → the final answer: an A record,
#     with its 300-second TTL

# Day to day: dig www.example.com   (via the resolver, caches included)
#             dig @1.1.1.1 example.com MX   (query a specific resolver)

Every answer carries a TTL (Time To Live, in seconds): how long a cache may keep it. It’s the key to DNS’s most widespread myth:

💡 “Propagation” does not exist — DNS “pushes” nothing to anyone. When you change a record, caches holding the old value keep serving it until their TTL expires, then fetch the new one. What people call “waiting for propagation” is waiting for caches to expire — it’s expiration, not broadcast. Hence the practice: lower the TTL (300s) before a migration, raise it back afterwards.

Key concepts to master

The record types to know:

TypeRoleExample
AName → IPv4 addressapp.bantou.me → 51.210.246.139
AAAAName → IPv6 addressexample.com → 2606:2800:…
CNAMEAlias to another namewww → example.com
MXThe domain’s mail servers (with priority)10 mail.example.com
TXTFree text: verifications, SPF/DKIM/DMARC"v=spf1 include:…"
NSDelegates the zone to authoritative serversns1.ovh.net
* (wildcard)Catches all undefined subdomains*.bantou.me → VPS
  • CNAME, the classic subtlety: it aliases an entire name to another name (two-step resolution), and a name carrying a CNAME can carry no other record — which is why the apex (example.com with no subdomain) cannot be a CNAME (it already carries NS…), hence ALIAS/ANAME workarounds at some providers.
  • DNS and deployments: the typical workflow — create the A record (or a wildcard *.domain.tld → server, and every new app is then just reverse-proxy config), wait for caches to expire, and only then can Let’s Encrypt validation (HTTP-01) succeed, since it requires the name to resolve to your server. Wildcard DNS is exactly what enables the “one subdomain per app” pattern without touching the zone on every deployment.
  • dig, the daily tool: dig domain (resolution via your resolver), dig @8.8.8.8 domain (query a specific server — handy for comparing caches), dig domain MX (a specific type), dig +trace (replay the hierarchy), dig -x IP (reverse resolution).
  • DoH / DoT in one sentence: DNS-over-HTTPS and DNS-over-TLS encrypt queries between you and the resolver — historical DNS travels in cleartext on port 53, readable by any intermediary.

⚠️ Real-world trap — after a DNS change, your machine may “see” the new IP while your neighbor’s doesn’t (different caches, unexpired TTLs). Diagnose with dig @1.1.1.1 vs dig @8.8.8.8 vs your local resolver: three potentially different answers, none of them “wrong” — their caches expired at different times.

In an interview

“What happens when you type a URL in the browser?” — Walk through in order: 1) DNS resolution (browser/OS caches → recursive resolver → if needed root → TLD → authoritative); 2) TCP connection to the IP (handshake); 3) TLS handshake if HTTPS; 4) HTTP request, server response; 5) parsing and rendering. Expected depth on DNS: name the hierarchy and the caches. This is THE question for assessing your big-picture understanding.

“What’s the difference between a recursive resolver and an authoritative server?” — The recursive one is a detective working for the client: it walks the hierarchy and caches. The authoritative one holds the truth for a zone: it answers without asking anyone. 8.8.8.8 is recursive; your registrar’s NS servers are authoritative for your domain.

“A vs CNAME?” — A: name → IP, direct. CNAME: name → another name, resolved next (one more indirection). CNAME is handy when the target changes IP (the CNAME follows automatically); impossible at the domain apex.

“Why isn’t my DNS change visible everywhere?” — Because there is no propagation: each cache serves the old value until its TTL expires. Bonus answer: “that’s why you lower the TTL before a migration” — you’ve just shown you’ve actually migrated something.

“What are TXT records for?” — Free-text metadata: proving domain ownership (Google verifications, Let’s Encrypt DNS-01) and fighting email spoofing via SPF, DKIM, DMARC.

Pitfalls & misconceptions

🎤 In an interview — “what happens when you type a URL?” is asked in a majority of interviews, from internship to senior. It doesn’t test memorization: it tests whether you know where to stop and where to dig. Winning strategy: walk through the 5 major steps in one minute, then offer “I can detail whichever step you want” — and actually be able to go deep on DNS and TLS.

  • “DNS is a server” — no: a distributed, hierarchical database. No server knows everything; each knows how to delegate. The 13 “root servers” (a through m) are themselves hundreds of anycast instances.
  • “Propagation takes 24-48h” — no: it depends on the TTL of the records involved. A 300s TTL = visible everywhere in ~5 minutes once caches expire. The “48h” figure comes from NS server changes at the registrar, whose TTLs are long.
  • Confusing registrar and DNS host — the registrar leases the name; the DNS host runs the zone’s authoritative servers. Often the same company, never the same role.
  • Forgetting the OS and browser caches — flushing the resolver cache isn’t always enough: Chrome and the OS have their own (chrome://net-internals/#dns, resolvectl flush-caches).
  • /etc/hosts short-circuits everything — read before any DNS query: perfect for testing a site before the DNS switch, and a source of mysterious “bugs” when you forget an entry in it.

Going further

  • Cloudflare — What is DNS?: the best introductory article series
  • How DNS works: the comic that explains recursive resolution — memorable in ten minutes
  • RFC 1034: DNS concepts at the source (a skim is enough)
  • Hands-on: dig +trace on your own domain, change a TTL, time the actual cache expiration with dig @1.1.1.1 vs dig @8.8.8.8

S'entraîner sur ce sujet → Practice this topic →