Trước khi có ai hỏi: Tôi đã thấy Khi nào các truy vấn DNS sử dụng TCP thay vì UDP? và nó không trả lời câu hỏi của tôi.
Tất cả những gì tôi nghe được là " nếu câu trả lời quá dài, DNS sẽ sử dụng TCP ". Điều này không giải thích làm thế nào nó xảy ra mặc dù.
Vì vậy, đây là tình huống: Máy khách DNS yêu cầu giải quyết bản ghi bằng UDP. Bản ghi quá dài cho UDP:
- máy chủ trả lời với opcode cụ thể, để chuyển máy khách sang TCP
- máy chủ hoàn toàn không trả lời và khách hàng thử lại qua TCP
- Máy chủ mở kết nối TCP tới máy khách (ngu ngốc, nếu bạn đếm NAT, nhưng ai biết?)
- khách hàng bằng cách nào đó (?) 'biết' rằng truy vấn đã cho nên được chạy qua TCP để nó không bận tâm với UDP ngay từ đầu
- DNS pixies biến UDP thành TCP khi cần thiết
Tôi đã tìm kiếm trên internet để tìm câu trả lời, nhưng có rất nhiều tiếng ồn (xem ở trên) và dường như tôi không thể viết truy vấn Google thích hợp cho điều đó (tôi cũng không thể tìm thấy thông tin trong RFC) .
1.
và 4.
cả hai đều gần đúng (cái nào trong hai cái này phụ thuộc vào hoàn cảnh).