Avant que quiconque ne le demande: 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 je continue à entendre, c'est " si la réponse est trop longue, DNS utilisera TCP ". Cela n'explique pas comment ça se passe.
Voici donc la situation: le client DNS demande la résolution d'un enregistrement à l'aide de UDP. L'enregistrement est trop long pour UDP:
Je cherche partout sur Internet pour la réponse, mais il y a beaucoup de bruit (voir ci-dessus), et je ne peux pas sembler écrire une requête Google appropriée pour cela (ni trouver l'information dans les RFCS, à ce sujet). .
Le client ne sait pas à l'avance que la réponse sera trop grande, il va donc interroger 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 ensuite renvoyer la demande via TCP et obtenir la réponse complète.
Voir aussi: https://tools.ietf.org/html/rfc5966
En l'absence d'EDNS0 (mécanismes d'extension pour DNS 0) (voir ci-dessous), le comportement normal de tout serveur DNS nécessitant une réponse UDP dépasserait la limite de 512 octets est destiné au serveur de tronquer la réponse de manière à tronquer. dans cette limite, puis réglez le drapeau TC dans l'en-tête de réponse. Lorsque le client reçoit une telle réponse, il faut le drapeau TC comme indiquant qu'il devrait réessayer sur TCP à la place.
Et: https://www.ietf.org/rfc/rfc2181.txt
Et comme mentionné dans les commentaires, bien sûr, les transferts de la zone DNS utilisent toujours TCP.