Avant que quelqu'un ne 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 j'entends, c'est " si la réponse est trop longue, DNS utilisera TCP ". Cela n'explique cependant pas comment cela se produit.
Voici donc la situation: le client DNS demande la résolution d'un enregistrement en utilisant UDP. Le record est trop long pour UDP:
- le serveur répond avec un opcode spécifique, pour que le client passe à TCP
- le serveur ne répond pas du tout et le client réessaye via TCP
- le serveur ouvre une connexion TCP au client (stupide, si vous comptez NAT, mais qui sait?)
- le client en quelque sorte (?) sait que la requête donnée doit être exécutée sur TCP afin de ne pas déranger avec UDP en premier lieu
- Les pixies DNS transforment par magie UDP en TCP en cas de besoin
J'ai cherché partout sur Internet pour la réponse, mais il y a beaucoup de bruit (voir ci-dessus), et je n'arrive pas à écrire la bonne requête Google à ce sujet (je ne peux pas non plus trouver les informations dans les RFC, d'ailleurs) .
1.
et 4.
sont à peu près corrects (lequel des deux dépend des circonstances).