Dengan asumsi server nama Anda yang dikonfigurasikan tidak memiliki hasil cache apa pun yang tersedia, berapa banyak server nama yang harus ditanyakan server nama Anda untuk menyelesaikan maps.google.com? Perintah apa yang akan Anda gunakan untuk menemukan semua server nama ini? Sebutkan satu dari setiap level dan jelaskan mengapa level ini diperlukan.
Baiklah, mari kita pilih yang satu ini.
"Dengan asumsi nameserver Anda dikonfigurasi tidak memiliki hasil cache di pembuangan" - off pertama, jika telah ada cache data yang sama sekali, maka tidak bisa menyelesaikan apa-apa. Untuk mengunggah cache penyelesai, Anda harus memiliki catatan NS dan alamat (A, AAAA) untuk .
zona (akar AKA). Itu nama server root, yang ditemukan di root-servers.net.
zona. Tidak ada yang ajaib tentang zona itu atau server DNS tersebut. Namun, data ini sering diberikan "out of band" ke resolver DNS, tepatnya untuk mengunggah cache resolver. Server nama khusus-otoritatif tidak memerlukan data ini, tetapi menyelesaikan server nama memang perlu.
Juga, "putuskan" untuk apa? Adakah RRtype dengan nama itu? Sebuah A
RR? Atau sesuatu yang lain? Kelas apa ( CH
/ Chaosnet, IN
/ Internet, ...)? Proses pastinya akan berbeda, tetapi gagasan umumnya tetap sama.
Jika kita dapat berasumsi bahwa kita tahu bagaimana menemukan server nama root tetapi tidak lebih, dan bahwa dengan "menyelesaikan" yang kita maksudkan adalah mendapatkan konten dari setiap IN A
RR yang terkait dengan nama, itu menjadi jauh lebih praktis.
Untuk menyelesaikan nama DNS, Anda pada dasarnya membagi nama menjadi label dan kemudian bekerja dari kanan ke kiri. Jangan lupa .
pada akhirnya; Anda benar-benar akan menyelesaikan maps.google.com.
daripada maps.google.com
. Yang membuat kita perlu menyelesaikan (kita tahu ini, tetapi implementasi resolver DNS mungkin tidak akan):
.
com.
google.com.
maps.google.com.
Mulailah dengan mencari tahu di mana meminta konten .
. Itu mudah; kami sudah memiliki informasi itu: nama server nama root dan alamat IP . Jadi kami memiliki server nama root. Katakanlah kita memutuskan untuk menggunakan 198.41.0.4 ( a.root-servers.net
, juga 2001: 503: ba3e :: 2: 30) untuk melanjutkan resolusi nama. Dalam praktiknya, salah satu hal pertama yang dilakukan oleh resolver kemungkinan akan menggunakan data server root yang disediakan untuk meminta salah satu server zona root untuk daftar yang akurat dari server nama untuk zona root, sehingga memastikan bahwa jika ada nama dan alamat IP valid dan dapat dijangkau, itu akan memiliki set data yang lengkap dan lengkap untuk zona akar ketika resolusi dimulai.
Menembak kueri DNS hingga maps.google.com. IN A
ke 198.41.0.4. Ini akan memberi tahu Anda sebagai respons "tidak, tidak akan melakukannya, tetapi inilah seseorang yang mungkin tahu"; itu rujukan. Ini berisi NS
catatan untuk zona terdekat yang diketahui server, bersama dengan catatan lem apa pun yang tersedia di server. Jika tidak ada data lem yang tersedia, pertama-tama Anda harus menyelesaikan host yang disebutkan dalam catatan NS yang Anda pilih, jadi buat resolusi nama terpisah untuk mendapatkan alamat IP; jika data lem tersedia, Anda akan memiliki alamat IP server nama yang setidaknya "lebih dekat" dengan jawabannya. Dalam hal ini, itu akan menjadi himpunan server untuk com.
zona, dan lem data disediakan juga.
Ulangi proses ini, ajukan salah satu com.
server nama pertanyaan yang sama. Mereka juga tidak tahu, tetapi akan mengarahkan Anda ke server nama resmi Google. Pada titik ini dalam kasus umum itu akan mengenai atau meleset apakah data lem disediakan atau tidak; tidak ada yang mencegah com
domain untuk memiliki server nama saja nl
, misalnya, dalam hal ini data lem tidak mungkin tersedia dari server gTLD. Data lem yang disediakan juga mungkin tidak lengkap, atau jika Anda benar-benar sial, itu mungkin salah! Anda harus selalu siap untuk menelurkan resolusi nama terpisah yang saya sebutkan di atas.
Pada dasarnya, Anda terus berjalan sampai Anda mendapatkan jawaban dengan aa
set flag (jawaban otoritatif). Jawaban itu akan memberi tahu Anda apa yang Anda minta, atau bahwa RR yang Anda minta tidak ada (baik NXDOMAIN
, atau NOERROR
dengan catatan data tanggapan nol). Terus mencari respons seperti SERVFAIL
(dan mundur satu langkah dan coba server lain jika Anda mendapatkannya; jika semua server yang disebutkan kembali SERVFAIL
, gagal proses resolusi nama dan kembalikan SERVFAIL
diri Anda ke klien).
Alternatif untuk meminta RRname lengkap dari setiap server (yang mungkin dianggap praktik buruk) adalah dengan menggunakan daftar perpecahan label yang telah kami tentukan sebelumnya, tanyakan nama server yang diberikan oleh server lebih jauh ke arah root untuk IN NS
dan IN A
/ IN AAAA
RR untuk label itu, dan gunakan untuk melanjutkan proses resolusi nama. Itu hanya sedikit berbeda dalam praktiknya, dan proses yang sama masih berlaku.
Anda dapat mensimulasikan seluruh proses ini dengan menggunakan +trace
opsi ke dig
utilitas, yang datang sebagai bagian dari BIND, atau set debug
dalam nslookup
.
Perlu juga diingat bahwa beberapa tipe RR (terutama NS
, MX
dan beberapa tipe lainnya; juga, A6
sudah cukup baik digunakan untuk sementara waktu tetapi telah ditinggalkan) dapat dan melakukan referensi RR lainnya. Dalam hal ini, Anda mungkin perlu menelurkan proses resolusi nama lain untuk memberikan jawaban yang lengkap dan bermanfaat bagi klien Anda.
dig +trace
, tapi saya tidak yakin apa yang dimaksud dengan level. Ini mungkin pertanyaan untuk Kesalahan Server.