百度DNS解析過程
下面是一個關(guān)于DNS的實驗:百度DNS解析過程,相信熱愛學(xué)習(xí)的你一定很感興趣,下面跟著小編一起來看看!
if現(xiàn)在我用一臺電腦,通過ISP接入互聯(lián)網(wǎng),那么ISP就會分配給我一個DNS服務(wù)器(非權(quán)威服務(wù)器)。now,我的computer向這臺ISPDNS發(fā)起請求查詢www.baidu.com。
首先,ISPDNS會檢查自己的緩存中有沒有這個地址,有的話直接返回給我的PC,沒有的話,ISPDNS會把請求發(fā)送給根服務(wù)器(13臺)。
根服務(wù)器發(fā)現(xiàn)是.com結(jié)尾的即是.com這個頂級域名下的,就告訴請求者負責(zé)解析.com的DNS服務(wù)器。(目前百度有4臺baidu.com的頂級域名服務(wù)器)。
ISPDNS再次向baidu.com這個域的權(quán)威服務(wù)器發(fā)起請求,baidu.com收到后,查一下www這臺主機,然后把它的IP返回給IPSDNS,然后IPSDNS把地址返回給我的`PC,并且存入告訴cache中,以便再次訪問。
//當(dāng)然這是完美的解析不走,不過百度的DNS沒這么簡單。
[root@zichen star]# nslookup www.baidu.com
Server: 211.140.13.188
Address: 211.140.13.188#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 220.181.112.76
Name: www.a.shifen.com
Address: 220.181.111.111
百度有個cname=www.a.shifen.com.的別名,這所怎么一個過程呢?用dig工具跟蹤一下。
[root@zichen star]# dig +trace www.baidu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.2.rc1.fc16 <<>> +trace www.baidu.com
;; global options: +cmd
. 167778 IN NS b.root-servers.net.
. 167778 IN NS d.root-servers.net.
. 167778 IN NS f.root-servers.net.
. 167778 IN NS m.root-servers.net.
. 167778 IN NS e.root-servers.net.
. 167778 IN NS h.root-servers.net.
. 167778 IN NS l.root-servers.net.
. 167778 IN NS g.root-servers.net.
. 167778 IN NS i.root-servers.net.
. 167778 IN NS k.root-servers.net.
. 167778 IN NS c.root-servers.net.
. 167778 IN NS a.root-servers.net.
. 167778 IN NS j.root-servers.net.
;; Received 228 bytes from 211.140.13.188#53(211.140.13.188) in 1841 ms--------(1)
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
;; Received 503 bytes from 198.41.0.4#53(198.41.0.4) in 1884 ms-------------------------(2)
baidu.com. 172800 IN NS dns.baidu.com.
baidu.com. 172800 IN NS ns2.baidu.com.
baidu.com. 172800 IN NS ns3.baidu.com.
baidu.com. 172800 IN NS ns4.baidu.com.
;; Received 167 bytes from 192.31.80.30#53(192.31.80.30) in 305 ms-------------------(3)
www.baidu.com. 1200 IN CNAME www.a.shifen.com.
a.shifen.com. 86444 IN NS ns4.a.shifen.com.
a.shifen.com. 86444 IN NS ns7.a.shifen.com.
a.shifen.com. 86444 IN NS ns9.a.shifen.com.
a.shifen.com . 86444 IN NS ns5.a.shifen.com.
;; Received 194 bytes from 202.108.22.220#53(202.108.22.220) in 68 ms-------------(4)
DIG工具會在本地計算機做迭代,然后記錄查詢的過程。
第一步是我這臺PC的ISPDNS獲取到13個根服務(wù)器的13個IP和主機名【b-j】.root-servers.net。
第二步是向其中的一臺根域服務(wù)器198.41.0.4發(fā)送www.baidu.com的請求,他返回來com.頂級域的服務(wù)器的IP(未顯示)和名稱。
第三步是向com.域的一臺服務(wù)器192.31.80.30請求www.baidu.com,他返回來baidu.com域發(fā)服務(wù)器IP(未顯示)和名稱.
第四步,向百度的頂級域名服務(wù)器dns.baidu.com.請求www.baidu.com,他發(fā)現(xiàn)這個www有別名叫www.a.shifen.com。
按照一般邏輯,當(dāng)dns請求到別名時,查詢都會終止,而所重新發(fā)起查詢別名的請求,所以此處應(yīng)該返回的是www.a.shifen.com.但是為什么返回的是a.shifen.com這個NS呢?
此處我們可以用:
[root@zichen star]# dig +trace shifen.com
shifen.com. 172800 IN NS dns.baidu.com.
shifen.com. 172800 IN NS ns2.baidu.com.
shifen.com. 172800 IN NS ns3.baidu.com.
shifen.com. 172800 IN NS ns4.baidu.com.
;; Received 170 bytes from 192.26.92.30#53(192.26.92.30) in 325 ms
發(fā)現(xiàn)shifen.com的頂級域名服務(wù)器和baidu.com的域名服務(wù)器是同一臺!
當(dāng) 我拿到www.baidu.com的別名www.a.shifen.com的時候,本來要重新到com域查找shifen.com的NS,又因為,兩個域 在同一臺NS上,所以直接向本機發(fā)起了shifen.com域發(fā)現(xiàn)請求的www.a.shifen.com是屬于a.shifen.com這個域的,于是 就把a.shifen.com的這個NS和IP返回,讓我到a.shifen.com這個域的域名服務(wù)器上查詢www.a.shifen.com。
于是
shifen.com. 7200 IN A 202.108.250.218
shifen.com. 86400 IN NS ns3.baidu.com.
shifen.com. 86400 IN NS ns1.baidu.com.
shifen.com. 86400 IN NS ns2.baidu.com.
shifen.com. 86400 IN NS ns4.baidu.com.
;; Received 186 bytes from 220.181.37.10#53(220.181.37.10) in 61 ms
拿到一條A記錄,最終也就是www.baidu.com的IP地址了。
【百度DNS解析過程】相關(guān)文章: