在我正在進行的理解DNS的實驗中,我試圖瞭解名稱服務器如何執行遞歸查詢。我得到了一個基本的想法 - 從頂級DNS服務器開始,然後向您發送要聯繫的權威域名服務器列表,然後聯繫這些服務器等,直到獲得權威響應。手動執行遞歸DNS查詢
聽起來很簡單。
但是,當我在實踐中嘗試它時,我在第一步後卡住了。我只是使用命令行工具手動執行此操作 - (我確保將關閉遞歸。)
好吧,所以第1步:從根名稱服務器開始。我隨機從root name servers on Wikipedia列表中挑選198.41.0.4
(Verisign)。
我向它發送解析「google.com」的請求。
它發送我回了以下內容:
+---------------------------------------------------------------------------+
| 47547 | QR: 1 | OP: 00 | AA: 0 | TC: 0 | RD: 1 | RA: 0 | Z: 0 | RCODE: 00 |
+---------------------------------------------------------------------------+
| QDCOUNT: 1, ANCOUNT: 0, NSCOUNT: 13, ARCOUNT: 15 |
+---------------------------------------------------------------------------+
ANSWERS : 0
AUTHORITIES:
NS: m.gtld-servers.net
NS: l.gtld-servers.net
NS: k.gtld-servers.net
NS: j.gtld-servers.net
NS: i.gtld-servers.net
NS: h.gtld-servers.net
NS: g.gtld-servers.net
NS: f.gtld-servers.net
NS: e.gtld-servers.net
NS: d.gtld-servers.net
NS: c.gtld-servers.net
NS: b.gtld-servers.net
NS: a.gtld-servers.net
ADDITIONAL:
A: 192.55.83.30
A: 192.41.162.30
A: 192.52.178.30
A: 192.48.79.30
A: 192.43.172.30
A: 192.54.112.30
A: 192.42.93.30
A: 192.35.51.30
A: 192.12.94.30
A: 192.31.80.30
A: 192.26.92.30
A: 192.33.14.30
AAAA: 2001:0503:231d:0000:0000:0000:0002:0030
A: 192.5.6.30
AAAA: 2001:0503:a83e:0000:0000:0000:0002:0030
好了,所以我不知道所有這些額外的記錄點是 - 他們都似乎是本地局域網地址,所以我不知道他們對我有什麼用處。但無論如何,看看權威部分返回的結果,我看到另一個名稱服務器列表。好的,所以我想下一步是我需要選擇一個返回的名稱服務器,並獲取它的IP。因此,我發出要求解決a.gtld-servers.net
,並...
...它只是返回完全相同的名稱服務器列表。
所以......我不知道如何在這裏繼續。我如何最終到達「google.com」的權威名稱服務器?
編輯:
好了,所以纔出現這些192
地址不是LAN地址,我錯誤地認爲,但他們是其他域名服務器。我假設我可以聯繫這些名稱服務器以接近權威。但是,我怎麼知道使用這些名稱服務器呢?我認爲ARCOUNT部分只是爲了獲得更多信息......爲什麼所有這些名稱服務器都放置在附加部分,而不是作爲答案或權限?是否只是一些約定,其他名稱服務器的引薦進入附加部分?
這個問題似乎是脫離主題,因爲它是一個一般的DNS問題,而不是一個編程問題。 – nos 2014-10-20 20:42:30