注意: 因為系統對含有鏈接會(huì )降權,所以本文中baidu.com用xxxxx代替,shifen.com用bbbbb代替。
就是所謂的“.”,其實(shí)我們的網(wǎng)址xxxxx在配置當中應該是xxxxx.(最后有一點(diǎn)),一般我們在瀏覽器里輸入時(shí)會(huì )省略后面的點(diǎn),而這也已經(jīng)成為了習慣。
根域服務(wù)器我們知道有13臺,但是這是錯誤的觀(guān)點(diǎn)。
根域服務(wù)器只是具有13個(gè)IP地址,但機器數量卻不是13臺,因為這些IP地址借助了任播的技術(shù),所以我們可以在全球設立這些IP的鏡像站點(diǎn),你訪(fǎng)問(wèn)到的這個(gè)IP并不是唯一的那臺主機。
歡迎關(guān)注筆者,優(yōu)質(zhì)文章都在這里等你。
根域下來(lái)就是頂級域或者叫一級域,
有兩種劃分方式,一種互聯(lián)網(wǎng)剛興起時(shí)的按照行業(yè)性質(zhì)劃分的com.,net.等,一種是按國家劃分的如cn.,jp.,等。
具體多少你可以自己去查,我們這里不關(guān)心。
每個(gè)域都會(huì )有域名服務(wù)器,也叫權威域名服務(wù)器。
xxxxx就是一個(gè)頂級域名,而x.xxxxx卻不是頂級域名,他是在xxxxx 這個(gè)域里的一叫做x的主機。
一級域之后還有二級域,三級域,只要我買(mǎi)了一個(gè)頂級域,并且我搭建了自己BIND服務(wù)器(或者其他軟件搭建的)注冊到互聯(lián)網(wǎng)中,那么我就可以隨意在前面多加幾個(gè)域了(當然長(cháng)度是有限制的)。
能提供域名解析的服務(wù)器,上面的記錄類(lèi)型可以是A(address)記錄,NS記錄(name server),MX(mail),CNAME等。
A記錄是什么意思呢,就是記錄一個(gè)IP地址和一個(gè)主機名字,比如我這個(gè)域名服務(wù)器所在的域x.xxxxx,我們知道這是一個(gè)二級的域名,然后我在里面有一條A記錄,記錄了主機為a的IP,查到了就返回給你了。
如果我現在要想xxxxx這個(gè)域名服務(wù)器查詢(xún)a.test.xxxxx,那么這個(gè)頂級域名服務(wù)器就會(huì )發(fā)現你請求的這個(gè)網(wǎng)址在test.xxxxx這個(gè)域中,我這里記錄了這個(gè)二級域的域名服務(wù)器test.xxxxx的NS的IP。我返回給你這個(gè)地址你再去查主機為a的主機把。
這些域內的域名服務(wù)器都稱(chēng)為權威服務(wù)器,直接提供DNS查詢(xún)服務(wù)。
那么我們的DNS是怎么解析一個(gè)域名的呢?
1.現在我有一臺計算機,通過(guò)ISP接入了互聯(lián)網(wǎng),那么ISP就會(huì )給我分配一個(gè)DNS服務(wù)器,這個(gè)DNS服務(wù)器不是權威服務(wù)器,而是相當于一個(gè)代理的dns解析服務(wù)器,他會(huì )幫你迭代權威服務(wù)器返回的應答,然后把最終查到IP返回給你。
2.現在的我計算機要向這臺ISPDNS發(fā)起請求查詢(xún)www.xxxxx這個(gè)域名了,(經(jīng)網(wǎng)友提醒:這里其實(shí)準確來(lái)說(shuō)不是ISPDNS,而應該是用戶(hù)自己電腦網(wǎng)絡(luò )設置里的DNS,并不一定是ISPDNS。比如也有可能你手工設置了8.8.8.8)
3.ISPDNS拿到請求后,先檢查一下自己的緩存中有沒(méi)有這個(gè)地址,有的話(huà)就直接返回。這個(gè)時(shí)候拿到的ip地址,會(huì )被標記為非權威服務(wù)器的應答。
4.如果緩存中沒(méi)有的話(huà),ISPDNS會(huì )從配置文件里面讀取13個(gè)根域名服務(wù)器的地址(這些地址是不變的,直接在BIND的配置文件中),
5.然后像其中一臺發(fā)起請求。
6.根服務(wù)器拿到這個(gè)請求后,知道他是com.這個(gè)頂級域名下的,所以就會(huì )返回com域中的NS記錄,一般來(lái)說(shuō)是13臺主機名和IP。
7.然后ISPDNS向其中一臺再次發(fā)起請求,com域的服務(wù)器發(fā)現你這請求是xxxxx這個(gè)域的,一查發(fā)現了這個(gè)域的NS,那就返回給你,你再去查。
8.ISPDNS不厭其煩的再次向xxxxx這個(gè)域的權威服務(wù)器發(fā)起請求,xxxxx收到之后,查了下有www的這臺主機,就把這個(gè)IP返回給你了,
9.然后ISPDNS拿到了之后,將其返回給了客戶(hù)端,并且把這個(gè)保存在高速緩存中。
下面我們來(lái)用 nslookup 這個(gè)工具詳細來(lái)說(shuō)一下解析步驟:
?
你會(huì )發(fā)現百度有一個(gè)cname = www.a.bbbbb 的別名。這是怎么一個(gè)過(guò)程呢?
我們用dig工具來(lái)跟蹤一下把(linux系統自帶有)
Dig工具會(huì )在本地計算機做迭代,然后記錄查詢(xún)的過(guò)程。
?
第一步是向我這臺機器的ISPDNS獲取到根域服務(wù)區的13個(gè)IP和主機名[b-j].root-servers.net.。
?
第二步是向其中的一臺根域服務(wù)器(Servername就是末行小括號里面的)發(fā)送www.xxxxx的查詢(xún)請求,他返回了com.頂級域的服務(wù)器IP(未顯示)和名稱(chēng),
?
第三步,便向com.域的一臺服務(wù)器192.33.4.12請求,www.xxxxx,他返回了xxxxx域的服務(wù)器IP(未顯示)和名稱(chēng),百度有四臺頂級域的服務(wù)器
【此處可以用dig @192.33.4.12 www.xxxxx查看返回的百度頂級域名服務(wù)器IP地址】。
?
第四步呢,向百度的頂級域服務(wù)器(202.108.22.220)請求www.xxxxx,他發(fā)現這個(gè)www有個(gè)別名,而不是一臺主機,別名是www.a.bbbbb。
?

按照一般的邏輯,當dns請求到別名的時(shí)候,查詢(xún)會(huì )終止,而是重新發(fā)起查詢(xún)別名的請求,所以此處應該返回的是www.a.bbbbb而已。
但是為什么返回a.bbbbb的這個(gè)域的NS呢?
我們可以嘗試下面的這個(gè)命令:dig trace 看看有什么結果。。。。。。。。

?
你會(huì )發(fā)現第三步時(shí)bbbbb這個(gè)頂級域的域名服務(wù)器和xxxxx這個(gè)域的域名服務(wù)器是同一臺主機(即:dns.xxxxx)!
當我拿到www.xxxxx的別名www.a.bbbbb的時(shí)候,我本來(lái)需要重新到com域查找bbbbb域的NS,但是因為這兩個(gè)域在同一臺NS上,所以直接向本機發(fā)起了,
bbbbb域發(fā)現請求的www.a.bbbbb是屬于a.bbbbb這個(gè)域的,
于是就把a.bbbbb的這個(gè)NS和IP返回,讓我到a.bbbbb這個(gè)域的域名服務(wù)器上查詢(xún)www.a.bbbbb。
于是我便從ns X .a.bbbbb中一臺拿到了一條A記錄,最終的最終也便是www.xxxxx的IP地址了.【此處也可以用dig trace www.a.bbbbb】跟蹤一下
用一個(gè)圖來(lái)說(shuō)明一下(圖中第三步的全世界只有13臺是錯誤的)
?

以下內容為在虛擬機中搭建local dns服務(wù)器得到的實(shí)驗數據,糾正上述結論
在上面的分析中,我們用dig工具進(jìn)行了追蹤,但是dig沒(méi)有繼續追蹤當我們從xxxxx拿到cname和ns2.a.bbbbb的IP之后的事情。
實(shí)際的結果是雖然dns.xxxxx返回了a.bbbbb域的服務(wù)器地址和IP,
但是local dns并不是直接向上述返回的IP請求www.a.bbbbb,而是再一次去請求com域,得到bbbbb域的服務(wù)器(也就是xxxxx的那四臺),
然后又請求www.a.bbbbb,返回a.bbbbb的域的服務(wù)器,最后才是去請求www.a.bbbbb,
雖然上面已經(jīng)返回了IP,但是實(shí)驗的結果就是再走一遍bbbbb域的查詢(xún)。
?
上圖就是localdns在解析www.xxxxx的抓包全過(guò)程。藍色那條就是在收到cname和響應的a.bbbbb的域名服務(wù)器IP地址之后,繼續向com域請求bbbbb。
?
這個(gè)圖充分說(shuō)明了返回cname的同時(shí)也返回了ns2.a.bbbbb的IP。
①本機向local dns請求www.xxxxx
②local dns向根域請求www.xxxxx,根域返回com.域的服務(wù)器IP
③向com.域請求www.xxxxx,com.域返回xxxxx域的服務(wù)器IP
④向xxxxx請求www.xxxxx,返回cname www.a.bbbbb和a.bbbbb域的服務(wù)器IP
⑤向root域請求www.a.bbbbb
⑥向com.域請求www.a.bbbbb
⑦向bbbbb請求
⑧向a.bbbbb域請求
⑨拿到www.a.bbbbb的IP
⑩localdns返回本機www.xxxxx cname www.a.bbbbb 以及 www.a.bbbbb的IP
聯(lián)系客服