1. Quelle est la fonction principale du DNS ?
a) Attribuer des IP · b) Traduire un nom de domaine en adresse IP · c) Traduire une IP en MAC · d) Router les paquets
Réponse 1
b) Traduire un nom de domaine en adresse IP. (Attribuer des IP = DHCP · IP → MAC = ARP.)
2. Combien existe-t-il de serveurs DNS racine ?
a) 1 · b) 8 · c) 13 · d) 256
Réponse 2
c) 13.
3. Qui gère les serveurs racine et les serveurs TLD ?
a) Les organisations propriétaires · b) L’IANA · c) Les FAI · d) Les registrars
Réponse 3
b) L’IANA (Internet Assigned Numbers Authority), l’autorité centrale. Les serveurs faisant autorité sont, eux, gérés par les organisations elles-mêmes.
4. Dans une requête DNS itérative, sur qui repose la charge ?
a) Le serveur racine · b) Le résolveur DNS · c) Le client DNS · d) Le TLD
Réponse 4
c) Le client DNS. En récursif, c’est le résolveur qui porte la charge.
5. Quel type d’enregistrement associe un domaine à une adresse IPv6 ?
a) A · b) AAAA · c) CNAME · d) MX
Réponse 5
b) AAAA. Le type A correspond à l’IPv4.
6. Que signifie le champ Qr dans l’en-tête d’un message DNS ?
a) La récursivité est demandée · b) Requête (0) ou réponse (1) · c) Le message est tronqué · d) Le code d’erreur
Réponse 6
b) Requête (0) ou réponse (1), sur 1 bit.
7. En Python, quel type de socket correspond à UDP ?
a) SOCK_STREAM · b) SOCK_DGRAM · c) AF_INET · d) SOCK_RAW
Réponse 7
b) SOCK_DGRAM (datagramme). SOCK_STREAM = TCP · AF_INET désigne la famille d’adresses (IPv4), pas le protocole.
8. Combien de sockets un serveur TCP manipule-t-il ?
a) 1 · b) 2 · c) 3 · d) Autant que de paquets
Réponse 8
b) 2 — serverSocket (socket d’accueil, en écoute) et connectionSocket (créé par accept(), dédié à un client).
Partie 2 — Vrai / Faux (4 pts)
9. Un serveur DNS racine connaît l’adresse IP de www.customer.support.microsoft.com.
Réponse 9
FAUX. Un serveur supérieur ne sait atteindre que les serveurs immédiatement inférieurs. La racine ne connaît que les TLD (.com, .edu, .net…).
10. Un enregistrement CNAME peut pointer vers une adresse IP.
Réponse 10
FAUX. Un CNAME pointe un alias vers un autre nom de domaine (canonique), jamais vers une adresse IP.
11. En UDP, le client doit inclure l’adresse IP et le port du serveur dans chaque envoi.
Réponse 11
VRAI. Il n’y a aucune connexion : rien ne mémorise le destinataire, donc sendto() porte toujours l’adresse.
12. Dans www.customer.support.microsoft.com., customer est un serveur DNS.
Réponse 12
FAUX.customer est le nom du serveur qui héberge le site Web. Les serveurs DNS de la chaîne sont .microsoft, .support, le TLD .com et la racine (le . final).
Partie 3 — Questions courtes (4 pts)
13. Explique la différence entre requête DNS récursive et itérative.
Réponse 13
Récursive :
Le résolveur DNS prend la responsabilité d’obtenir la résolution finale.
Il envoie lui-même la requête au serveur suivant selon chaque réponse de référence.
Le client reçoit une seule réponse définitive : la résolution ou un message d’erreur.
La charge incombe au résolveur DNS.
Itérative :
Le client DNS doit travailler lui-même.
Il relance la requête vers le serveur suivant selon chaque réponse de référence.
Le client reçoit les réponses de référenceet la réponse définitive.
La charge incombe au client DNS.
14. Cite les cinq types de RR vus en cours avec leur rôle.
Réponse 14
A — domaine → adresse IPv4 (enregistrement hôte)
AAAA — domaine → adresse IPv6
CNAME — alias → nom canonique (jamais une IP)
MX — dirige les e-mails vers les serveurs de messagerie, avec une priorité
NS — liste les serveurs DNS faisant autorité, où sont stockés les autres enregistrements
15. Qu’est-ce qu’un socket et où se situe-t-il ?
Réponse 15
C’est une abstraction utilisée par l’interface de programmation d’application située entre la couche application et la couche transport. C’est par ce point d’accès que les processus d’une application réseau envoient et reçoivent leurs messages.
16. Qu’est-ce que le FHDNS, et comment un PC en obtient-il l’adresse ?
Réponse 16
Le First Hop DNS Server (ou DNS Resolver) est l’interface entre l’utilisateur et le système DNS — il joue le rôle de proxy DNS et est partagé par plusieurs utilisateurs.
Le PC obtient son adresse statiquement (configuration manuelle) ou dynamiquement via DHCP. Le FHDNS est lui-même configuré pour connaître les IP des serveurs DNS racine.
Partie 4 — Cas pratiques (4 pts)
17. Tu tapes www.customer.support.microsoft.com dans ton navigateur, et rien n’est en cache nulle part. Décris la résolution récursive complète, en précisant ce qui est mis en cache à la fin.
Réponse 17
Le PC consulte son cache DNS local : pas de correspondance → il envoie la requête à son FHDNS.
Le FHDNS consulte son propre cache : pas de correspondance non plus → il interroge un serveur racine.
La racine répond par une référence : « voir le serveur du TLD .com ».
Le FHDNS interroge le serveur .com, qui renvoie une référence vers le serveur DNS de Microsoft (.Microsoft – 121.1.1.1).
Le FHDNS interroge le serveur Microsoft, qui renvoie une référence vers .support – 211.132.1.2.
Le FHDNS interroge le serveur support, qui renvoie enfin la réponse définitive : .customer – 212.182.1.2.
Le FHDNS met son cache à jour, puis transmet la réponse définitive au client.
Le client met à son tour son cache à jour.
Le client n’a envoyé qu’une seule requête et reçu qu’une seule réponse : toute la chaîne a été portée par le résolveur. Le cache est mis à jour aux deux bouts.
18. Analyse ce jeu d’enregistrements. Que se passe-t-il si on demande www.esiea.fr, et où part un mail adressé à contact@example.com ?
www.esiea.fr : la résolution trouve un CNAME qui renvoie vers le nom canonique esiea.fr — ce n’est pas encore une adresse. Il faut donc une seconde résolution, sur esiea.fr, qui donne l’enregistrement A → 149.62.158.57. C’est bien l’illustration du fait qu’un CNAME pointe vers un nom, jamais vers une IP.
Mail vers contact@example.com : les enregistrements MX désignent les serveurs de messagerie avec une priorité. La plus petite valeur est prioritaire → le mail part vers mail1.example.com (priorité 10) ; mail2.example.com (priorité 20) sert de secours si le premier est indisponible.
TTL 7200 : ces informations restent valides 7200 secondes (2 heures) dans les caches.
19. Un serveur UDP reçoit un datagramme. Comment sait-il à qui répondre ? Compare avec le cas TCP.
Réponse 19
UDP : il n’existe aucune connexion, donc rien ne mémorise l’identité de l’émetteur. Le serveur doit extraire l’@IP et le port du client du datagramme reçu. En Python, c’est recvfrom() qui les retourne :
L’adresse récupérée est réinjectée dans sendto() pour répondre.
TCP : le protocole est orienté connexion. La connexion — matérialisée par le connectionSocket retourné par accept() — mémorise déjà qui parle à qui. Les appels send() et recv() n’ont donc pas besoin d’adresse :
Toute la différence de code entre les deux découle de ce seul fait.
20. Écris de mémoire le serveur TCP de l’application de conversion en majuscules, et commente chaque appel.
Réponse 20
from socket import *serverPort = 12000serverSocket = socket(AF_INET, SOCK_STREAM) # socket d'accueil, TCP (flux)serverSocket.bind(('', serverPort)) # attaché au port 12000, toutes interfacesserverSocket.listen(1) # passe en écoute des demandes de connexionprint('The server is ready to receive')while True: connectionSocket, addr = serverSocket.accept() # socket DÉDIÉ au client + son adresse sentence = connectionSocket.recv(1024).decode() # lit jusqu'à 1024 octets, octets → str capitalizedSentence = sentence.upper() # le traitement applicatif connectionSocket.send(capitalizedSentence.encode()) # str → octets, puis envoi connectionSocket.close() # ferme la connexion de CE client
Points à ne pas manquer :
serverSocket reste ouvert : la boucle while True permet de servir les clients suivants.
encode() / decode() sont obligatoires : les sockets transportent des octets, pas des chaînes.
Seul connectionSocket est fermé — jamais serverSocket.