Bevor jemand fragt: Ich habe gesehen, wann DNS-Abfragen TCP anstelle von UDP verwenden? und es beantwortet meine Frage nicht.
Ich höre nur noch " Wenn die Antwort zu lang ist, verwendet DNS TCP ". Dies erklärt jedoch nicht, wie es passiert.
Hier ist die Situation: Der DNS-Client fragt nach der Auflösung eines Datensatzes mit UDP. Der Datensatz ist für UDP zu lang:
- Der Server antwortet mit einem bestimmten Opcode, damit der Client zu TCP wechselt
- Der Server antwortet überhaupt nicht und der Client versucht es erneut über TCP
- Server öffnet TCP-Verbindung zum Client (dumm, wenn man NAT zählt, aber wer weiß?)
- Der Client (?) 'weiß' irgendwie, dass eine bestimmte Abfrage über TCP ausgeführt werden sollte, damit er sich überhaupt nicht um UDP kümmert
- DNS-Pixies verwandeln UDP bei Bedarf auf magische Weise in TCP
Ich habe im Internet nach der Antwort gesucht, aber es gibt viel Lärm (siehe oben), und ich kann anscheinend keine ordnungsgemäße Google-Abfrage dafür schreiben (und ich kann die Informationen auch nicht in RFCs finden). .
1.
und 4.
sind beide ungefähr richtig (welches von beiden von den Umständen abhängt).