Zanim ktokolwiek zapyta: Widziałem Kiedy zapytania DNS używają TCP zamiast UDP? i to nie odpowiada na moje pytanie.
Ciągle słyszę tylko: „ jeśli odpowiedź jest za długa, DNS użyje TCP ”. Nie wyjaśnia to jednak, jak to się dzieje.
Oto sytuacja: klient DNS prosi o rozstrzygnięcie rekordu za pomocą UDP. Rekord jest za długi dla UDP:
- serwer odpowiada określonym kodem operacji, aby klient przeszedł na TCP
- serwer w ogóle nie odpowiada, a klient próbuje ponownie przez TCP
- serwer otwiera połączenie TCP z klientem (głupie, jeśli liczyć NAT, ale kto wie?)
- klient jakoś (?) „wie”, że dane zapytanie powinno być uruchamiane przez TCP, aby nie przeszkadzało to UDP
- W razie potrzeby pixie DNS w magiczny sposób przekształcają UDP w TCP
Szukałem odpowiedzi w całym Internecie, ale jest dużo hałasu (patrz wyżej) i wydaje mi się, że nie mogę napisać odpowiedniego zapytania Google (nie mogę też znaleźć informacji w RFC) .
1.
i 4.
oba są mniej więcej poprawne (które z nich zależy od okoliczności).