下面是一個關於DNS的實驗:百度DNS解析過程,相信熱愛學習的你一定很感興趣,下面跟著小編一起來看看!
if現在我用一臺電腦,通過ISP接入網際網路,那麼ISP就會分配給我一個DNS伺服器(非權威伺服器)。now,我的computer向這臺ISPDNS發起請求查詢。
首先,ISPDNS會檢查自己的快取中有沒有這個地址,有的話直接返回給我的PC,沒有的話,ISPDNS會把請求傳送給根伺服器(13臺)。
根伺服器發現是結尾的即是這個頂級域名下的,就告訴請求者負責解析的DNS伺服器。(目前百度有4臺的頂級域名伺服器)。
ISPDNS再次向這個域的權威伺服器發起請求,收到後,查一下www這臺主機,然後把它的IP返回給IPSDNS,然後IPSDNS把地址返回給我的`PC,並且存入告訴cache中,以便再次訪問。
//當然這是完美的解析不走,不過百度的DNS沒這麼簡單。
[root@zichen star]# nslookup
Server:
Address: #53
Non-authoritative answer:
canonical name = .
Name:
Address:
Name:
Address:
百度有個cname=.的別名,這所怎麼一個過程呢?用dig工具跟蹤一下。
[root@zichen star]# dig +trace
; <<>> DiG 16 <<>> +trace
;; global options: +cmd
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
. 167778 IN NS .
;; Received 228 bytes from #53() in 1841 ms--------(1)
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
com. 172800 IN NS .
;; Received 503 bytes from #53() in 1884 ms-------------------------(2)
. 172800 IN NS .
. 172800 IN NS .
. 172800 IN NS .
. 172800 IN NS .
;; Received 167 bytes from #53() in 305 ms-------------------(3)
. 1200 IN CNAME .
. 86444 IN NS .
. 86444 IN NS .
. 86444 IN NS .
. 86444 IN NS .
;; Received 194 bytes from #53() in 68 ms-------------(4)
DIG工具會在本地計算機做迭代,然後記錄查詢的過程。
第一步是我這臺PC的ISPDNS獲取到13個根伺服器的13個IP和主機名【b-j】。
第二步是向其中的一臺根域伺服器傳送的請求,他返回來com.頂級域的伺服器的IP(未顯示)和名稱。
第三步是向com.域的一臺伺服器請求,他返回來域發伺服器IP(未顯示)和名稱.
第四步,向百度的頂級域名伺服器.請求,他發現這個www有別名叫。
按照一般邏輯,當dns請求到別名時,查詢都會終止,而所重新發起查詢別名的請求,所以此處應該返回的是.但是為什麼返回的是這個NS呢?
此處我們可以用:
[root@zichen star]# dig +trace
. 172800 IN NS .
. 172800 IN NS .
. 172800 IN NS .
. 172800 IN NS .
;; Received 170 bytes from #53() in 325 ms
發現的頂級域名伺服器和的域名伺服器是同一臺!
當 我拿到的別名的時候,本來要重新到com域查詢的NS,又因為,兩個域 在同一臺NS上,所以直接向本機發起了域發現請求的是屬於這個域的,於是 就把的這個NS和IP返回,讓我到這個域的域名伺服器上查詢。
於是
. 7200 IN A
. 86400 IN NS .
. 86400 IN NS .
. 86400 IN NS .
. 86400 IN NS .
;; Received 186 bytes from #53() in 61 ms
拿到一條A記錄,最終也就是的IP地址了。