Sebelum ada yang bertanya: Saya sudah melihat Kapan permintaan DNS menggunakan TCP, bukan UDP? dan itu tidak menjawab pertanyaan saya.
Yang saya terus dengar adalah " jika jawabannya terlalu panjang, DNS akan menggunakan TCP ". Ini tidak menjelaskan bagaimana itu terjadi.
Jadi inilah situasinya: Klien DNS meminta resolusi catatan menggunakan UDP. Rekor terlalu panjang untuk UDP:
- server menjawab dengan opcode tertentu, agar klien beralih ke TCP
- server tidak menjawab sama sekali, dan klien mencoba ulang melalui TCP
- server membuka koneksi TCP ke klien (bodoh, jika Anda menghitung NAT, tapi siapa yang tahu?)
- client entah bagaimana (?) 'tahu' bahwa kueri yang diberikan harus dijalankan melalui TCP sehingga tidak mengganggu UDP
- Pixies DNS secara ajaib mengubah UDP menjadi TCP bila diperlukan
Saya sudah mencari di internet untuk jawabannya, tetapi ada banyak suara (lihat di atas), dan saya sepertinya tidak bisa menulis permintaan Google yang tepat untuk itu (saya juga tidak bisa menemukan info di RFC, dalam hal ini) .
1.
dan 4.
keduanya kira-kira benar (yang mana dari keduanya tergantung pada keadaan).