2026-09-07 — Le protocole DNS

Contexte

Matière : _Reseaux · Type : cours · Source : support Chapitre 2 — La couche Application (Partie 3) Précédent : 2026-09-07 — Le protocole HTTP Suite : 2026-09-07 — Programmation par socket

🎯 Objectifs de la séance

  • Comprendre pourquoi le DNS existe et quelle est sa fonction unique.
  • Connaître la hiérarchie des serveurs DNS et qui gère quoi.
  • Distinguer résolution récursive et itérative.
  • Savoir lire les principaux enregistrements de ressources (RR) et utiliser nslookup.

Partie 1 — Pourquoi le DNS ?

Créé en 1983 par Paul Mockapetris et Jon Postel (RFC 1034 et 1035), enrichi depuis par de nombreuses RFC.

Fonction principale du DNS

Nom de domaine du site Web ⟹ adresse IP de la machine qui l’héberge.

Le raisonnement du cours part d’une analogie téléphonique : les adresses servent à localiser des objets, mais les noms sont plus faciles à retenir. Le DNS fait le pont entre les deux.

     PC1                                          Serveur
172.128.1.33  ── « Where is harvard.edu ? » ──▶     DNS
              ◀── « It is at 192.0.66.20 » ───
                                                harvard.edu
                                                192.0.66.20
                                                (Web Server)

Trois propriétés à citer

  • Le DNS est un protocole de couche application.
  • Il est totalement transparent pour l’utilisateur final.
  • Il permet d’atteindre n’importe quel site public sans savoir quelle machine l’héberge.

Partie 2 — Architecture du système DNS

Le DNS n’est pas un serveur, c’est un groupe de serveurs qui collaborent, distribués mondialement avec une redondance suffisante.

Qui gère quoi

NiveauGéré par
Serveurs racine (Root)IANA — Internet Assigned Numbers Authority (autorité centrale)
TLD — Top Level Domain (.com, .edu, .net, .fr)IANA (autorité centrale)
Serveurs DNS faisant autoritéLes organisations elles-mêmes
Sous-domainesLe domaine parent

Chiffre à retenir

Il existe 13 serveurs DNS racine (13 identités racine, répliquées par anycast).

La hiérarchie parent-enfant

                        Root  « . »
                          │
        ┌─────────────────┼─────────────────┐
      com               edu               net
        │
   ┌────┴──────┐
 google    microsoft
                │
             support
                │
            customer  ← serveur Web (PAS un serveur DNS)

La propriété fondamentale de la hiérarchie

Un serveur supérieur ne sait que comment atteindre directement les serveurs immédiatement inférieurs. La racine ne connaît pas customer.support.microsoft.com : elle ne connaît que les TLD.

Exemple de contenu de tables :

Serveur RootServeur .com
.comIP1.google8.8.8.8
.eduIP2.microsoft121.1.1.1
.netIP3……

Lire un nom de domaine à l’envers

Un nom de site = un chemin dans l'arbre, en ordre inverse

www.customer.support.microsoft.com.

  • Le . final = le serveur DNS racine
  • .com = le TLD
  • .microsoft = serveur DNS de Microsoft
  • .support = serveur DNS du sous-domaine
  • .customer = nom du serveur qui héberge le site — ce n’est pas un serveur DNS

Enregistrer un domaine

Pour héberger www.example.com et le rendre joignable mondialement, il faut faire insérer une entrée dans la base du TLD .com — via un bureau d’enregistrement, contre paiement à l’autorité centrale.

Le registrar insère deux enregistrements dans le serveur du TLD .com :

(example.com,      dns1.example.com,  NS)
(dns1.example.com, 212.212.212.1,     A)

Il reste ensuite à faire tourner le serveur Web, connecté à Internet avec l’IP publique attribuée au nom de domaine.


Partie 3 — Les mécanismes de résolution

Le résolveur — First Hop DNS Server

FHDNS / DNS Resolver

Le serveur First Hop DNS est l’interface entre vous et le système DNS — il joue le rôle de proxy DNS.

  • Le PC reçoit l’adresse de son résolveur statiquement (configuration manuelle) ou dynamiquement via DHCP.
  • Un résolveur est partagé par plusieurs utilisateurs (d’où l’efficacité de son cache).
  • Le FHDNS est configuré pour connaître les IP des serveurs racine.

Les trois cas de figure

Cas 0 — le PC vérifie son cache DNS local
        ├── correspondance trouvée → résolution immédiate, terminé
        └── pas de correspondance  → requête DNS au FHDNS
                                        │
Cas 1 ──────────────────────────────────┤
        Le FHDNS a l'IP dans SON cache → il renvoie directement la réponse
                                        │
Cas 2 ──────────────────────────────────┘
        Le FHDNS n'a pas l'IP → il interroge le serveur DNS RACINE

Récursive vs itérative

Requête récursiveRequête itérative
Qui fait le travailLe résolveur DNS (FHDNS)Le client DNS lui-même
EnchaînementLe résolveur interroge le serveur suivant selon la réponse de référenceLe client interroge le serveur suivant selon la réponse de référence
Ce que reçoit le clientUniquement la réponse définitive (résolution ou message d’erreur)Les réponses de référence et la réponse définitive
ChargeSur le résolveur DNSSur le client DNS

La question d'examen

« Qui supporte la charge ? » — récursive → le résolveur, itérative → le client. Tout le reste en découle.

Déroulé d’une requête récursive

Vous ──▶ FHDNS ──▶ Root       « où est microsoft.com ? »
                 ◀──          « refer to .microsoft.com server (IP) »
         FHDNS ──▶ .com
                 ◀──          référence vers le serveur Microsoft
         FHDNS ──▶ microsoft
                 ◀──          référence vers .support
         FHDNS ──▶ support
                 ◀──          .customer – 212.182.1.2   ← réponse définitive
         FHDNS   [Update Cache]
Vous  ◀── réponse définitive
[Update Cache côté client]

En itératif, c’est la machine hôte qui joue ce rôle : elle reçoit chaque réponse de référence et relance elle-même la requête au serveur suivant, jusqu’à interroger directement le serveur final.

Le cache est mis à jour aux deux bouts

À la fin d’une résolution, le FHDNS et le client mettent leur cache à jour. Sous Windows, ipconfig /displaydns affiche toutes les entrées DNS mises en cache par le service client DNS.


Partie 4 — Les enregistrements de ressources (RR)

Resource Record

La base de données d’un serveur DNS est constituée d’enregistrements de ressources (RR), répartis en classes. La seule classe usuellement employée est la classe Internet (IN).

Les champs d’un RR

ChampTailleRôle
Nom—Domaine où se trouve le RR
Type16 bitsType de données du RR (A, AAAA, CNAME, MX, NS…)
Classe16 bitsFamille de protocoles — en pratique IN
TTL32 bitsDurée de vie en secondes — validité de l’info en cache
Longueur16 bitsLongueur des données qui suivent
DonnéesvariableContenu, dépendant du type de ressource

Les types de RR au programme

TypeRôleExemple
ADomaine → adresse IPv4 (enregistrement hôte)esiea.fr → 149.62.158.57 (TTL 7200)
AAAADomaine → adresse IPv6google.com → 2a00:1450:4007:80c0::200e
CNAMEAlias → nom canonique (jamais vers une IP)www.esiea.fr → esiea.fr
MXDirige les e-mails vers les serveurs de messagerie, avec prioritéexample.com → mail1.example.com (prio 10), mail2 (prio 20)
NSListe les serveurs DNS faisant autorité — où trouver les autres RRexample.com → ns1.example.com, ns2.example.com

Les deux pièges classiques

  • Un CNAME pointe toujours vers un nom, jamais vers une adresse IP.
  • Pour MX, la plus petite valeur de priorité gagne : mail1 (10) est essayé avant mail2 (20).

La commande nslookup

nslookup

Utilitaire permettant d’interroger manuellement les serveurs DNS configurés sur la machine pour résoudre un nom d’hôte donné.

Usages :

  • Résoudre un nom d’hôte à la demande.
  • Diagnostiquer des problèmes de résolution de noms.
  • Vérifier l’état des serveurs de noms.
  • Quand la commande est émise, le serveur DNS par défaut de l’hôte est affiché.

Requête inverse

Le résolveur demande le nom d’hôte associé à une IP connue. Utile surtout pour des questions de sécurité : savoir avec qui on échange.

Trouver l’IP de son serveur DNS

# Kali Linux
grep "nameserver" /etc/resolv.conf
 
# Windows
ipconfig /all
ipconfig /displaydns   # affiche le cache DNS

Partie 5 — Le format des messages DNS

Même format pour la requête et la réponse. L’en-tête fait 12 octets.

Les champs de l’en-tête

ChampTailleRôle
Id16 bitsIdentifiant recopié dans la réponse → permet d’apparier requête et réponse
Qr1 bit0 = requête, 1 = réponse
Opcode4 bitsType de requête
Aa1 bitAuthoritative Answer — réponse d’une entité faisant autorité
Tc1 bitTruncated — le message a été tronqué
Rd1 bitRecursion Desired — à 1 pour demander la récursivité
Ra1 bitRecursion Available — la récursivité est autorisée par le serveur
Z3 bitsRéservé (à 0). Découpé depuis en : Z, AA (Authenticated Answer), NAD (Non-Authenticated Data)
Rcode4 bitsType de réponse / code d’erreur
Qdcount16 bitsNombre d’entrées section Question
Ancount16 bitsNombre d’entrées section Réponse
Nscount16 bitsNombre d’entrées section Autorité
Arcount16 bitsNombre d’entrées section Additionnel

Valeurs d’Opcode

ValeurType
0Requête standard (Query)
1Requête inverse (Iquery)
2Status d’une requête serveur
3–15Réservé

Valeurs de Rcode

ValeurSignification
0Pas d’erreur
1Erreur de format dans la requête
2Problème sur le serveur
3Le nom n’existe pas
4Non implémenté
5Refus
6–15Réservés

Les valeurs les plus probables en examen

Rcode 0 (succès) et Rcode 3 (nom inexistant) · Qr (0/1) · Rd et Ra (le couple récursivité).

⚠️ À retenir absolument (examen)

  • DNS = nom de domaine → adresse IP, protocole de couche application, transparent pour l’utilisateur.
  • 13 serveurs racine · Root et TLD gérés par l’IANA · serveurs faisant autorité gérés par les organisations.
  • Un serveur DNS ne connaît que le niveau immédiatement inférieur.
  • Dans www.customer.support.microsoft.com., le . final = la racine et customer n’est pas un serveur DNS.
  • Récursive → charge sur le résolveur · Itérative → charge sur le client.
  • Le FHDNS est obtenu manuellement ou par DHCP, et connaît les IP des serveurs racine.
  • RR : A (IPv4) · AAAA (IPv6) · CNAME (alias → nom, jamais une IP) · MX (mail, avec priorité) · NS (serveurs faisant autorité).
  • Le TTL est en secondes, sur 32 bits.
  • En-tête DNS : Qr 0/1 · Rd demande la récursivité · Ra l’autorise · Rcode 3 = nom inexistant.

❓ Points flous / à revoir

  • DNS utilise-t-il UDP ou TCP selon les cas ? (bit Tc = tronqué → bascule TCP ?)
  • Différence entre serveur faisant autorité et serveur secondaire
  • Refaire un nslookup complet sur esiea.fr et lire chaque champ
  • Que se passe-t-il si le TTL expire pendant une navigation active ?

🔗 Liens