ก่อนใครถาม: ฉันเคยเห็นDNS การสืบค้นใช้ TCP แทนที่จะเป็น UDP เมื่อใด และมันไม่ตอบคำถามของฉัน
สิ่งที่ฉันได้ยินคือ " ถ้าคำตอบยาวเกินไป DNS จะใช้ TCP " สิ่งนี้ไม่ได้อธิบายว่ามันเกิดขึ้นได้อย่างไร
ดังนั้นนี่คือสถานการณ์: ไคลเอนต์ DNS ขอให้มีการแก้ไขเรคคอร์ดโดยใช้ UDP บันทึกยาวเกินไปสำหรับ UDP:
- คำตอบของเซิร์ฟเวอร์ที่มี opcode เฉพาะเพื่อให้ไคลเอนต์สลับเป็น TCP
- เซิร์ฟเวอร์ไม่ตอบรับเลยและไคลเอนต์ลองใหม่ผ่าน TCP
- เซิร์ฟเวอร์เปิดการเชื่อมต่อ TCP ไปยังไคลเอนต์ (โง่ถ้าคุณนับ NAT แต่ใครจะรู้?)
- อย่างใดลูกค้า (?) 'รู้' ว่าแบบสอบถามที่กำหนดควรจะเรียกใช้ผ่าน TCP จึงไม่รบกวน UDP ในสถานที่แรก
- DNS พิกซี่เปลี่ยน UDP ให้เป็น TCP อย่างน่าอัศจรรย์
ฉันได้รับคำตอบจากทั่วอินเทอร์เน็ต แต่ก็มีเสียงดังมาก (ดูด้านบน) และฉันไม่สามารถเขียนข้อความค้นหา Google ที่เหมาะสมสำหรับเรื่องนั้นได้ (ฉันไม่สามารถหาข้อมูลใน RFC ได้) .
1.
และ4.
ทั้งสองถูกต้องคร่าวๆ (ซึ่งทั้งสองขึ้นอยู่กับสถานการณ์)