Révisions — DNS et sockets
Résumé du chapitre
Le DNS traduit un nom de domaine en adresse IP. Son architecture est une hiérarchie de serveurs où chacun ne connaît que le niveau immédiatement inférieur : 13 serveurs racine et les TLD gérés par l’IANA, les serveurs faisant autorité par les organisations. La résolution passe par un résolveur (FHDNS) obtenu par DHCP ; elle est récursive (charge sur le résolveur) ou itérative (charge sur le client). Les données sont stockées en RR : A, AAAA, CNAME, MX, NS, avec un TTL. Côté programmation, le socket est l’abstraction entre couche application et couche transport : en UDP (
SOCK_DGRAM) chaque message porte l’adresse ; en TCP (SOCK_STREAM) la connexion la porte, et le serveur manipule deux sockets.
Séances sources : 2026-09-07 — Le protocole DNS · 2026-09-07 — Programmation par socket
🃏 Flashcards
DNS — fondamentaux
DNS
Domain Name System — protocole de couche application traduisant un nom de domaine en adresse IP
Qui a créé le DNS, et quand ?
Paul Mockapetris et Jon Postel, en 1983 (RFC 1034 et 1035)
Pourquoi le DNS existe-t-il ?
Les adresses localisent les objets, mais les noms sont plus faciles à retenir — le DNS fait le pont entre les deux
Le DNS est-il visible pour l'utilisateur final ?
Non — il est totalement transparent
Combien y a-t-il de serveurs DNS racine ?
13
Architecture DNS
Qui gère les serveurs racine et les TLD ?
L’autorité centrale : IANA (Internet Assigned Numbers Authority)
Qui gère les serveurs DNS faisant autorité ?
Les organisations elles-mêmes
Quelle est la propriété fondamentale de la hiérarchie DNS ?
Un serveur supérieur ne sait atteindre directement que les serveurs immédiatement inférieurs dans la hiérarchie
Dans
www.customer.support.microsoft.com., que représente le point final ?Le serveur DNS racine
Dans
www.customer.support.microsoft.com., que représentecustomer?Le nom du serveur qui héberge le site Web — ce n’est pas un serveur DNS
Un nom de domaine est une séquence de serveurs DNS dans l’arborescence, lue dans l’ordre inverse
Que faut-il faire pour héberger
www.example.compubliquement ?Faire insérer, contre paiement à l’autorité centrale via un bureau d’enregistrement, une entrée dans la base du TLD
.com:(example.com, dns1.example.com, NS) (dns1.example.com, 212.212.212.1, A)Puis faire tourner le serveur Web sur l’IP publique attribuée.
Résolution DNS
FHDNS / DNS Resolver
Serveur First Hop DNS, interface entre l’utilisateur et le système DNS — il joue le rôle de proxy DNS
Comment un PC obtient-il l'adresse de son résolveur DNS ?
Statiquement (configuration manuelle) ou dynamiquement via DHCP
Que connaît obligatoirement le FHDNS ?
Les adresses IP des serveurs DNS racine
Les 3 cas de figure d'une résolution DNS
- Cas 0 — le PC vérifie son cache local : correspondance → terminé
- Cas 1 — le FHDNS a l’IP dans son propre cache → il répond directement
- Cas 2 — le FHDNS n’a pas l’IP → il interroge le serveur DNS racine
Requête DNS récursive
- Le résolveur DNS prend la responsabilité d’obtenir la résolution finale.
- Il interroge lui-même chaque serveur suivant selon les réponses de référence.
- Le client reçoit uniquement une réponse définitive (résolution ou erreur).
- La charge incombe au résolveur.
Requête DNS itérative
- Le client DNS doit travailler lui-même pour obtenir la résolution.
- Il interroge chaque serveur suivant selon les réponses de référence.
- Le client reçoit les réponses de référence et la réponse définitive.
- La charge incombe au client.
En récursif la charge est sur le résolveur DNS, en itératif elle est sur le client DNS
Quelle commande Windows affiche le cache DNS ?
ipconfig /displaydns
Enregistrements de ressources
RR
Resource Record — enregistrement composant la base de données d’un serveur DNS
Quelle classe de RR est usuellement employée ?
La classe Internet (IN)
Les champs d'un RR
- Nom du domaine où se trouve le RR
- Type (16 bits) — nature de la donnée
- Classe (16 bits) — famille de protocoles, en pratique IN
- TTL (32 bits) — durée de vie en secondes
- Longueur (16 bits)
- Données — dépend du type
Le TTL d’un RR est codé sur 32 bits et exprimé en secondes
Enregistrement A
Associe un domaine à une adresse IPv4 — ex.
esiea.fr→149.62.158.57
Enregistrement AAAA
Associe un domaine à une adresse IPv6
Enregistrement CNAME
Pointe un domaine (alias) vers un autre nom de domaine (canonique). Ne pointe jamais vers une adresse IP.
Enregistrement MX
Mail Exchanger — dirige les e-mails vers les serveurs de messagerie, avec un champ Priority (la plus petite valeur est prioritaire)
Enregistrement NS
Name Server — fournit la liste des serveurs DNS faisant autorité ; permet de localiser où sont stockés les autres enregistrements DNS
Un CNAME peut-il pointer vers une adresse IP ?
Non, jamais — uniquement vers un autre nom de domaine
nslookup
nslookup
Utilitaire permettant d’interroger manuellement les serveurs DNS configurés sur la machine pour résoudre un nom d’hôte
Que s'affiche-t-il en premier quand on lance
nslookup?Le serveur DNS par défaut configuré pour l’hôte
Qu'est-ce qu'une requête DNS inverse ?
Le résolveur demande le nom d’hôte associé à une adresse IP connue — utile en sécurité, pour savoir avec qui on échange
Commande Kali Linux pour connaître son serveur DNS
grep "nameserver" /etc/resolv.conf
Commande Windows pour connaître son serveur DNS
ipconfig /all
Format des messages DNS
Champ Id d'un message DNS
16 bits, recopié dans la réponse — permet d’apparier la réponse à la requête d’origine
Champ Qr
1 bit — 0 = requête, 1 = réponse
Champ Aa
Authoritative Answer, 1 bit — la réponse provient d’une entité faisant autorité
Champ Tc
Truncated, 1 bit — le message a été tronqué
Champ Rd
Recursion Desired, 1 bit — mis à 1 pour demander la récursivité
Champ Ra
Recursion Available, 1 bit — indique que la récursivité est autorisée
Les valeurs d'Opcode
- 0 — Requête standard (Query)
- 1 — Requête inverse (Iquery)
- 2 — Status d’une requête serveur
- 3–15 — Réservé
Les valeurs de Rcode
- 0 — Pas d’erreur
- 1 — Erreur de format dans la requête
- 2 — Problème sur serveur
- 3 — Le nom n’existe pas
- 4 — Non implémenté
- 5 — Refus
- 6–15 — Réservés
Les 4 compteurs de l'en-tête DNS
Qdcount (Question) · Ancount (Réponse) · Nscount (Autorité) · Arcount (Additionnel) — tous sur 16 bits
Sockets — concepts
Socket
Abstraction de l’interface de programmation située entre la couche application et la couche transport
De quoi une application réseau est-elle composée ?
De plusieurs processus qui communiquent par des messages
SOCK_DGRAMcorrespond à quel protocole ?UDP
SOCK_STREAMcorrespond à quel protocole ?TCP
Que signifie
bind(('', serverPort))?Attacher le socket au port local sur toutes les interfaces de la machine (le
'')
Pourquoi faut-il
encode()/decode()?Les sockets transportent des octets, pas des chaînes — c’est concrètement le rôle de formatage de la couche présentation
Sockets UDP
Quelle est la conséquence de l'absence de connexion en UDP ?
- Le client doit inclure explicitement l’@IP et le port du serveur dans chaque envoi.
- Le serveur doit extraire l’@IP et le port du client du datagramme reçu pour savoir à qui répondre.
Quelles méthodes utilise-t-on en UDP ?
sendto(data, addr)etrecvfrom(n)— elles portent toujours une adresse
Client UDP en Python
from socket import * serverName = 'hostname' serverPort = 12000 clientSocket = socket(AF_INET, SOCK_DGRAM) message = input('Input lowercase sentence:') clientSocket.sendto(message.encode(), (serverName, serverPort)) modifiedMessage, serverAddress = clientSocket.recvfrom(2048) print(modifiedMessage.decode()) clientSocket.close()
Serveur UDP en Python
from socket import * serverPort = 12000 serverSocket = socket(AF_INET, SOCK_DGRAM) serverSocket.bind(('', serverPort)) print('The server is ready to receive') while True: message, clientAddress = serverSocket.recvfrom(2048) modifiedMessage = message.decode().upper() serverSocket.sendto(modifiedMessage.encode(), clientAddress)
Sockets TCP
Combien de sockets le serveur TCP manipule-t-il, et lesquels ?
Deux :
serverSocket— socket d’accueil, écoute les demandes de connexion sur le port xconnectionSocket— créé paraccept(), dédié à un client, porte l’échangeUn serveur TCP utilise serverSocket pour accepter les connexions et connectionSocket pour dialoguer avec un client
Séquence des appels d'un serveur TCP
socket()→bind()→listen()→accept()→recv()/send()→close()
Que retourne
accept()?Un couple
(connectionSocket, addr)— le socket dédié au client et son adresse
Client TCP en Python
from socket import * serverName = 'servername' serverPort = 12000 clientSocket = socket(AF_INET, SOCK_STREAM) clientSocket.connect((serverName, serverPort)) sentence = input('Input lowercase sentence:') clientSocket.send(sentence.encode()) modifiedSentence = clientSocket.recv(1024) print('From Server:', modifiedSentence.decode()) clientSocket.close()
Serveur TCP en Python
from socket import * serverPort = 12000 serverSocket = socket(AF_INET, SOCK_STREAM) serverSocket.bind(('', serverPort)) serverSocket.listen(1) print('The server is ready to receive') while True: connectionSocket, addr = serverSocket.accept() sentence = connectionSocket.recv(1024).decode() capitalizedSentence = sentence.upper() connectionSocket.send(capitalizedSentence.encode()) connectionSocket.close()
Pourquoi
send()/recv()n'ont-ils pas besoin d'adresse en TCP ?Parce que TCP est orienté connexion : la connexion mémorise déjà qui parle à qui
Différences UDP / TCP dans le code
UDP TCP Type SOCK_DGRAMSOCK_STREAMConnexion Aucune connect()/listen()+accept()Sockets serveur 1 2 Envoi sendto()avec adressesend()sans adresseFermeture serveur Aucune connectionSocket.close()
🔗 Liens
- Séances : 2026-09-07 — Le protocole DNS · 2026-09-07 — Programmation par socket
- Quiz : Quiz — DNS et sockets
- Début du chapitre : Révisions — Couche Application et HTTP