Saya mencoba memahami perbedaan antara pencarian DNS berulang dan berulang. Pada dasarnya, saya menganggap iteratif seperti memanggil department store untuk mencari produk, dan ketika mereka tidak memilikinya, mereka memberi Anda nomor cabang lain yang akan dihubungi dan kemudian Anda menelepon cabang lainnya sendiri. Versus rekursif, yang seperti menelepon department store, dan ketika mereka tidak memiliki apa yang Anda cari, mereka memanggil cabang lain atas nama Anda mencari produk. Masalahnya, saya mendapatkan pandangan yang bertentangan tentang ini ketika datang ke DNS. Ketika saya memikirkan rekursif, saya memikirkan sesuatu yang terlihat seperti ini:
Tetapi ketika membaca artikel di web, dan bahkan melakukan pencarian gambar Google untuk DNS rekursif , saya melihat jauh lebih banyak contoh yang terlihat seperti ini:
Bagi saya, contoh kedua ini terlihat lebih iteratif daripada rekursif, karena masing-masing "server DNS lain" memberi tahu "server DNS pilihan" alamat mesin berikutnya untuk dicari, daripada mencarinya atas nama yang disukai Server DNS. Satu-satunya elemen rekursif yang saya lihat adalah bahwa server DNS pilihan melakukan pencarian atas nama klien DNS, tetapi mulai sekarang, itu terlihat berulang-ulang.
Jadi saya kira pertanyaan saya adalah, apakah pencarian DNS "rekursif" benar-benar hanya berarti rekursif dalam arti server DNS yang disukai melakukan sesuatu atas nama klien, tetapi benar-benar iteratif sejak saat ini? Mayoritas hasil yang saya lihat dalam pencarian gambar Google membuat saya percaya ini, yang kemudian menimbulkan pertanyaan, apakah gambar pertama dalam posting ini benar-benar salah?
sumber
Jawaban:
Paragraf terakhir Anda benar.
Bendera "Recursion Desired" (RD) yang dikirim oleh klien di header permintaan DNS (lihat RFC 1035) meminta server "tolong beri saya jawaban lengkap untuk pertanyaan ini".
Server itu daripada yang berulang meminta rantai nama server untuk jawaban yang benar. Pertanyaan-pertanyaan itu seharusnya tidak memiliki set bit RD.
Pada akhirnya respons server rekursif akan memiliki set flag "Recursion Available" (RA), yang menunjukkan bahwa jawabannya memang sepenuhnya dijawab. Sebaliknya server yang otoritatif tidak akan mengatur tanda RA.
IMHO, ini pilihan terminologi yang buruk.
Untuk apa nilainya, diagram pertama yang Anda temukan pada dasarnya salah. Root server tidak melakukan query ke server lain, mereka hanya mengeluarkan referensi ke server lain.
sumber
Sejauh yang saya mengerti, "pencarian rekursif" semata-mata dari pandangan querier asli. Jadi, jika ia meminta server DNS dan mendapatkan jawaban yang sepenuhnya teratasi, maka itu adalah "permintaan rekursif". Jika server itu pada gilirannya melakukan pencarian rekursif atau berulang, yah, bukan sesuatu yang harus diperhatikan oleh si querier asli.
sumber
Yang pertama dari dua diagram dalam pertanyaan Anda salah. Root server tidak mengirim permintaan ke server lain. Jika root server benar-benar meneruskan permintaan seperti yang ditunjukkan pada diagram itu, sistem DNS akan jauh lebih rentan terhadap serangan DoS daripada yang sebenarnya.
Diagram kedua sebagian besar benar tetapi terlalu sederhana untuk menunjukkan kepada Anda sifat rekursif pencarian. Diagram ini masih cukup rinci meskipun kita dapat menunjukkan di mana rekursi terjadi.
Server DNS di sebelah nomor
12
yang dilambangkanPreferred DNS server
adalah tempat rekursi terjadi. Istilah Server DNS yang dipilih bukan terminologi standar. Server itu biasanya disebut cursor DNS recursor atau singkatan dari itu.Ketika melihat lalu lintas jaringan itu memang terlihat berulang. Rekursi sepenuhnya internal ke kursor DNS. Jika Anda melihat implementasi dari DNS recursor Anda akan menemukan beberapa struktur rekursif dalam bagaimana permintaan ditangani.
Rekursi mungkin mudah dikenali jika implementasi menggunakan utas per permintaan dan pencarian diimplementasikan menggunakan panggilan fungsi rekursif. Tetapi desain yang lebih efisien tidak menggunakan utas per permintaan dan rekursi itu justru ditemukan di dalam struktur data yang digunakan oleh kursor DNS.
Alasan rekursi diperlukan adalah karena bagaimana referensi antara server DNS otoritatif diimplementasikan. Ini paling baik diilustrasikan dengan sebuah contoh. Dalam diagram Anda melihat server DNS otoritatif untuk
microsoft.com
titik ke server DNS otoritatif untukexample.microsoft.com
. Ini dilakukan dengan menggunakanNS
catatan yang menunjuk ke nama host. Jadi misalnya server otoritatif untukmicrosoft.com
bisa memberi tahu DNS recursor yangms.example.net
otoritatif untukexample.microsoft.com
.Pada saat itu DNS recursor harus menyelesaikannya
ms.example.net
sebelum dapat melanjutkan dengan resolusiexample.microsoft.com
.Untuk menyelesaikan satu nama host, yang pertama harus menyelesaikan nama host yang berbeda. Itu adalah rekursi. Agar hal ini tidak menyebabkan rekursi tak terbatas, DNS memiliki catatan lem yang dikirim bersama dengan
NS
catatan dalam kasus-kasus tertentu.sumber