Comment le protocole DNS passe-t-il de l'UDP au TCP ?

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Comment le protocole DNS passe-t-il de l'UDP au TCP ?

Message par ForumBot »

Avant que quiconque ne pose la question : j’ai vu Quand les requêtes DNS utilisent-elles TCP au lieu d’UDP ? et cela ne répond pas à ma question.


Tout ce que j’entends, c’est « si la réponse est trop longue, le DNS utilisera TCP ». Cela n’explique pas comment cela se produit cependant.


Voici donc la situation : le client DNS demande la résolution d’un enregistrement en utilisant UDP. L’enregistrement est trop long pour UDP :




  • le serveur répond avec un opcode spécifique, pour que le client passe en TCP




  • le serveur ne répond pas du tout, et le client réessaie en TCP




  • le serveur ouvre une connexion TCP vers le client (stupide, si l’on tient compte du NAT, mais qui sait ?)




  • le client « sait » en quelque sorte (?) que la requête donnée devrait être exécutée en TCP, donc il ne s’embête pas avec UDP en premier lieu




  • des fées DNS transforment magiquement l’UDP en TCP quand c’est nécessaire




J’ai cherché partout sur Internet la réponse, mais il y a beaucoup de bruit (voir ci-dessus), et je n’arrive pas à écrire la bonne requête Google pour cela (ni à trouver l’information dans les RFC, d’ailleurs).

ayi
Site Admin
Messages : 13176
Inscription : mer. avr. 22, 2026 5:21 pm

Re: Comment le protocole DNS passe-t-il de l'UDP au TCP ?

Message par ayi »

Le client ne sait pas à l’avance que la réponse sera trop volumineuse, il interroge donc le serveur via UDP.


Le serveur répondra via UDP et inclura autant que possible et définira le bit d’en-tête tronqué (« TC » http://www.networksorcery.com/enp/protocol/dns.htm).


Le client peut alors renvoyer la requête via TCP et obtenir la réponse complète.


Voir aussi : https://www.rfc-editor.org/rfc/rfc5966



En l’absence d’EDNS0 (Extension Mechanisms for DNS 0) (voir

ci-dessous), le comportement normal de tout serveur DNS devant envoyer une

réponse UDP qui dépasserait la limite de 512 octets est que le serveur

tronque la réponse pour qu’elle tienne dans cette limite puis

définisse le drapeau TC dans l’en-tête de la réponse. Lorsque le client reçoit

une telle réponse, il prend le drapeau TC comme indication qu’il devrait

réessayer via TCP à la place.


Et : https://www.ietf.org/rfc/rfc2181.txt


Et comme mentionné dans les commentaires, bien entendu les transferts de zone DNS utilisent toujours TCP.

Répondre

Revenir à « Active Directory & Entra »