在搭建hadoop集群時枣申,測試虛擬機的Linux網絡情況時ping了下百度稀火,結果結束時出現以下結果:
好奇之下塘匣,在網上找了下大神的解釋:(原文章鏈接:http://zhan.renren.com/starshen?gid=3602888498023142484&checked=true)
if現在我用一臺電腦硕盹,通過ISP接入互聯網内斯,那么ISP就會分配給我一個DNS服務器(非權威服務器)。
now净薛,我的computer向這臺ISPDNS發(fā)起請求查詢www.baidu.com汪榔。
首先,ISPDNS會檢查自己的緩存中有沒有這個地址罕拂,有的話直接返回給我的PC揍异,沒有的話全陨,ISPDNS會把請求發(fā)送給根服務器(13臺)爆班。
根服務器發(fā)現是.com結尾的即是.com這個頂級域名下的衷掷,就告訴請求者負責解析.com的DNS服務器。(目前百度有4臺baidu.com的頂級域名服務器)柿菩。
ISPDNS再次向baidu.com這個域的權威服務器發(fā)起請求戚嗅,baidu.com收到后,查一下www這臺主機枢舶,然后把它的IP返回給IPSDNS懦胞,然后IPSDNS把地址返回給我的PC,并且存入告訴cache中凉泄,以便再次訪問躏尉。
//當然這是完美的解析不走,不過百度的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個根服務器的13個IP和主機名【b-j】.root-servers.net右锨。
第二步是向其中的一臺根域服務器198.41.0.4發(fā)送www.baidu.com的請求括堤,他返回來com.頂級域的服務器的IP(未顯示)和名稱。
第三步是向com.域的一臺服務器192.31.80.30請求www.baidu.com绍移,他返回來baidu.com域發(fā)服務器IP(未顯示)和名稱.
第四步悄窃,向百度的頂級域名服務器dns.baidu.com.請求www.baidu.com,他發(fā)現這個www有別名叫www.a.shifen.com蹂窖。
按照一般邏輯广匙,當dns請求到別名時,查詢都會終止恼策,而所重新發(fā)起查詢別名的請求鸦致,所以此處應該返回的是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ā)現shifen.com的頂級域名服務器和baidu.com的域名服務器是同一臺涣楷!
當 我拿到www.baidu.com的別名www.a.shifen.com的時候分唾,本來要重新到com域查找shifen.com的NS,又因為狮斗,兩個域 在同一臺NS上绽乔,所以直接向本機發(fā)起了shifen.com域發(fā)現請求的www.a.shifen.com是屬于a.shifen.com這個域的,于是 就把a.shifen.com的這個NS和IP返回碳褒,讓我到a.shifen.com這個域的域名服務器上查詢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地址了。