dns解析過(guò)程詳解_dns解析原理 - 全文
通常 Internet 主機(jī)域名的一般結(jié)構(gòu)為:主機(jī)名。三級(jí)域名。二級(jí)域名。頂級(jí)域名。 Internet 的頂級(jí)域名由 Internet網(wǎng)絡(luò)協(xié)會(huì)域名注冊(cè)查詢負(fù)責(zé)網(wǎng)絡(luò)地址分配的委員會(huì)進(jìn)行登記和管理,它還為 Internet的每一臺(tái)主機(jī)分配唯一的 IP 地址。全世界現(xiàn)有三個(gè)大的網(wǎng)絡(luò)信息中心: 位于美國(guó)的 Inter-NIC,負(fù)責(zé)美國(guó)及其他地區(qū); 位于荷蘭的RIPE-NIC,負(fù)責(zé)歐洲地區(qū);位于日本的APNIC ,負(fù)責(zé)亞太地區(qū)。
解析器,或另一臺(tái)DNS服務(wù)器遞歸代表的情況下,域名解析器,協(xié)商使用遞歸服務(wù),使用查詢頭位。解析通常需要遍歷多個(gè)名稱服務(wù)器,找到所需要的信息。然而,一些解析器的功能更簡(jiǎn)單地只用一個(gè)名稱服務(wù)器進(jìn)行通信。這些簡(jiǎn)單的解析器依賴于一個(gè)遞歸名稱服務(wù)器(稱為“存根解析器”),為他們尋找信息的執(zhí)行工作。
DNS解析過(guò)程詳解
一. 根域
就是所謂的“。”,其實(shí)我們的網(wǎng)址www.baidu.com在配置當(dāng)中應(yīng)該是www.baidu.com.(最后有一點(diǎn)),一般我們?cè)跒g覽器里輸入時(shí)會(huì)省略后面的點(diǎn),而這也已經(jīng)成為了習(xí)慣。
根域服務(wù)器我們知道有13臺(tái),但是這是錯(cuò)誤的觀點(diǎn)。
根域服務(wù)器只是具有13個(gè)IP地址,但機(jī)器數(shù)量卻不是13臺(tái),因?yàn)檫@些IP地址借助了任播的技術(shù),所以我們可以在全球設(shè)立這些IP的鏡像站點(diǎn),你訪問(wèn)到的這個(gè)IP并不是唯一的那臺(tái)主機(jī)。
具體的鏡像分布可以參考維基百科。這些主機(jī)的內(nèi)容都是一樣的
二. 域的劃分
根域下來(lái)就是頂級(jí)域或者叫一級(jí)域,
有兩種劃分方式,一種互聯(lián)網(wǎng)剛興起時(shí)的按照行業(yè)性質(zhì)劃分的com.,net.等,一種是按國(guó)家劃分的如cn.,jp.,等。
具體多少你可以自己去查,我們這里不關(guān)心。
每個(gè)域都會(huì)有域名服務(wù)器,也叫權(quán)威域名服務(wù)器。
Baidu.com就是一個(gè)頂級(jí)域名,而www.baidu.com卻不是頂級(jí)域名,他是在baidu.com 這個(gè)域里的一叫做www的主機(jī)。
一級(jí)域之后還有二級(jí)域,三級(jí)域,只要我買了一個(gè)頂級(jí)域,并且我搭建了自己BIND服務(wù)器(或者其他軟件搭建的)注冊(cè)到互聯(lián)網(wǎng)中,那么我就可以隨意在前面多加幾個(gè)域了(當(dāng)然長(zhǎng)度是有限制的)。
比如a.www.baidu.com,在這個(gè)網(wǎng)址中,www.baidu.com變成了一個(gè)二級(jí)域而不是一臺(tái)主機(jī),主機(jī)名是a。
三. 域名服務(wù)器
能提供域名解析的服務(wù)器,上面的記錄類型可以是A(address)記錄,NS記錄(name server),MX(mail),CNAME等。
(詳解參見博客:域名解析中A記錄、CNAME、MX記錄、NS記錄的區(qū)別和聯(lián)系)
A記錄是什么意思呢,就是記錄一個(gè)IP地址和一個(gè)主機(jī)名字,比如我這個(gè)域名服務(wù)器所在的域test.baidu.com,我們知道這是一個(gè)二級(jí)的域名,然后我在里面有一條A記錄,記錄了主機(jī)為a的IP,查到了就返回給你了。
如果我現(xiàn)在要想baidu.com這個(gè)域名服務(wù)器查詢a.test.baidu.com,那么這個(gè)頂級(jí)域名服務(wù)器就會(huì)發(fā)現(xiàn)你請(qǐng)求的這個(gè)網(wǎng)址在test.baidu.com這個(gè)域中,我這里記錄了這個(gè)二級(jí)域的域名服務(wù)器test.baidu.com的NS的IP。我返回給你這個(gè)地址你再去查主機(jī)為a的主機(jī)把。
這些域內(nèi)的域名服務(wù)器都稱為權(quán)威服務(wù)器,直接提供DNS查詢服務(wù)。(這些服務(wù)器可不會(huì)做遞歸哦)
四.解析過(guò)程
那么我們的DNS是怎么解析一個(gè)域名的呢?
1.現(xiàn)在我有一臺(tái)計(jì)算機(jī),通過(guò)ISP接入了互聯(lián)網(wǎng),那么ISP就會(huì)給我分配一個(gè)DNS服務(wù)器,這個(gè)DNS服務(wù)器不是權(quán)威服務(wù)器,而是相當(dāng)于一個(gè)代理的dns解析服務(wù)器,他會(huì)幫你迭代權(quán)威服務(wù)器返回的應(yīng)答,然后把最終查到IP返回給你。
2.現(xiàn)在的我計(jì)算機(jī)要向這臺(tái)ISPDNS發(fā)起請(qǐng)求查詢www.baidu.com這個(gè)域名了,(經(jīng)網(wǎng)友提醒:這里其實(shí)準(zhǔn)確來(lái)說(shuō)不是ISPDNS,而應(yīng)該是用戶自己電腦網(wǎng)絡(luò)設(shè)置里的DNS,并不一定是ISPDNS。比如也有可能你手工設(shè)置了8.8.8.8)
3.ISPDNS拿到請(qǐng)求后,先檢查一下自己的緩存中有沒(méi)有這個(gè)地址,有的話就直接返回。這個(gè)時(shí)候拿到的ip地址,會(huì)被標(biāo)記為非權(quán)威服務(wù)器的應(yīng)答。
4.如果緩存中沒(méi)有的話,ISPDNS會(huì)從配置文件里面讀取13個(gè)根域名服務(wù)器的地址(這些地址是不變的,直接在BIND的配置文件中),
5.然后像其中一臺(tái)發(fā)起請(qǐng)求。
6.根服務(wù)器拿到這個(gè)請(qǐng)求后,知道他是com.這個(gè)頂級(jí)域名下的,所以就會(huì)返回com域中的NS記錄,一般來(lái)說(shuō)是13臺(tái)主機(jī)名和IP。
7.然后ISPDNS向其中一臺(tái)再次發(fā)起請(qǐng)求,com域的服務(wù)器發(fā)現(xiàn)你這請(qǐng)求是baidu.com這個(gè)域的,我一查發(fā)現(xiàn)了這個(gè)域的NS,那我就返回給你,你再去查。
(目前百度有4臺(tái)baidu.com的頂級(jí)域名服務(wù)器)。
8.ISPDNS不厭其煩的再次向baidu.com這個(gè)域的權(quán)威服務(wù)器發(fā)起請(qǐng)求,baidu.com收到之后,查了下有www的這臺(tái)主機(jī),就把這個(gè)IP返回給你了,
9.然后ISPDNS拿到了之后,將其返回給了客戶端,并且把這個(gè)保存在高速緩存中。
下面我們來(lái)用 nslookup 這個(gè)工具詳細(xì)來(lái)說(shuō)一下解析步驟:
從上圖我們可以看到:
第一行Server是:DNS服務(wù)器的主機(jī)名--210.32.32.1
第二行Address是: 它的IP地址--210.32.32.1#53
下面的Name是:解析的URL-- www.jsjzx.com
Address是:解析出來(lái)的IP--112.121.162.168
但是也有像百度這樣的DNS比較復(fù)雜的解析:
你會(huì)發(fā)現(xiàn)百度有一個(gè)cname = www.a.shifen.com 的別名。
這是怎么一個(gè)過(guò)程呢?
我們用dig工具來(lái)跟蹤一下把(linux系統(tǒng)自帶有)
Dig工具會(huì)在本地計(jì)算機(jī)做迭代,然后記錄查詢的過(guò)程。
第一步是向我這臺(tái)機(jī)器的ISPDNS獲取到根域服務(wù)區(qū)的13個(gè)IP和主機(jī)名[b-j].root-servers.net.。
第二步是向其中的一臺(tái)根域服務(wù)器(Servername就是末行小括號(hào)里面的)發(fā)送www.baidu.com的查詢請(qǐng)求,他返回了com.頂級(jí)域的服務(wù)器IP(未顯示)和名稱,
第三步,便向com.域的一臺(tái)服務(wù)器192.33.4.12請(qǐng)求,www.baidu.com,他返回了baidu.com域的服務(wù)器IP(未顯示)和名稱,百度有四臺(tái)頂級(jí)域的服務(wù)器
【此處可以用dig @192.33.4.12 www.baidu.com查看返回的百度頂級(jí)域名服務(wù)器IP地址】。
第四步呢,向百度的頂級(jí)域服務(wù)器(202.108.22.220)請(qǐng)求www.baidu.com,他發(fā)現(xiàn)這個(gè)www有個(gè)別名,而不是一臺(tái)主機(jī),別名是www.a.shifen.com。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
按照一般的邏輯,當(dāng)dns請(qǐng)求到別名的時(shí)候,查詢會(huì)終止,而是重新發(fā)起查詢別名的請(qǐng)求,所以此處應(yīng)該返回的是www.a.shifen.com而已。
但是為什么返回a.shifen.com的這個(gè)域的NS呢?
我們可以嘗試下面的這個(gè)命令:dig +trace shifen.com 看看有什么結(jié)果。。。。。。。。
你會(huì)發(fā)現(xiàn)第三步時(shí)shifen.com這個(gè)頂級(jí)域的域名服務(wù)器和baidu.com這個(gè)域的域名服務(wù)器是同一臺(tái)主機(jī)(即:dns.baidu.com)!
當(dāng)我拿到www.baidu.com的別名www.a.shifen.com的時(shí)候,我本來(lái)需要重新到com域查找shifen.com域的NS,但是因?yàn)檫@兩個(gè)域在同一臺(tái)NS上,所以直接向本機(jī)發(fā)起了,
shifen.com域發(fā)現(xiàn)請(qǐng)求的www.a.shifen.com是屬于a.shifen.com這個(gè)域的,
于是就把a(bǔ).shifen.com的這個(gè)NS和IP返回,讓我到a.shifen.com這個(gè)域的域名服務(wù)器上查詢www.a.shifen.com。
于是我便從ns X .a.shifen.com中一臺(tái)拿到了一條A記錄,最終的最終也便是www.baidu.com的IP地址了。【此處也可以用dig +trace www.a.shifen.com】跟蹤一下
用一個(gè)圖來(lái)說(shuō)明一下(圖中第三步的全世界只有13臺(tái)是錯(cuò)誤的)
以下內(nèi)容為在虛擬機(jī)中搭建local dns服務(wù)器得到的實(shí)驗(yàn)數(shù)據(jù),糾正上述結(jié)論
在上面的分析中,我們用dig工具進(jìn)行了追蹤,但是dig沒(méi)有繼續(xù)追蹤當(dāng)我們從baidu.com拿到cname和ns2.a.shifen.com的IP之后的事情。
我們就所以然的下結(jié)論認(rèn)為local dns會(huì)向ns2.a.shifen.com請(qǐng)求www.a.shifenc.om。
其實(shí)這個(gè)想法是錯(cuò)誤,在自己的本地搭建一個(gè)local dns,抓取整個(gè)解析過(guò)程中是所有包,看看就明白拉。
實(shí)際的結(jié)果是雖然dns.baidu.com返回了a.shifen.com域的服務(wù)器地址和IP,
但是local dns并不是直接向上述返回的IP請(qǐng)求www.a.shifen.com,而是再一次去請(qǐng)求com域,得到shifen.com域的服務(wù)器(也就是baidu.com的那四臺(tái)),
然后又請(qǐng)求www.a.shifen.com,返回a.shifen.com的域的服務(wù)器,最后才是去請(qǐng)求www.a.shifen.com,
雖然上面已經(jīng)返回了IP,但是實(shí)驗(yàn)的結(jié)果就是再走一遍shifen.com域的查詢。
上圖就是localdns在解析www.baidu.com的抓包全過(guò)程。藍(lán)色那條就是在收到cname和響應(yīng)的a.shifen.com的域名服務(wù)器IP地址之后,繼續(xù)向com域請(qǐng)求shifen.com。
這個(gè)圖充分說(shuō)明了返回cname的同時(shí)也返回了ns2.a.shifen.com的IP。
因此總結(jié)一下便是
①本機(jī)向local dns請(qǐng)求www.baidu.com
②local dns向根域請(qǐng)求www.baidu.com,根域返回com.域的服務(wù)器IP
③向com.域請(qǐng)求www.baidu.com,com.域返回baidu.com域的服務(wù)器IP
④向baidu.com請(qǐng)求www.baidu.com,返回cname www.a.shifen.com和a.shifen.com域的服務(wù)器IP
⑤向root域請(qǐng)求www.a.shifen.com
⑥向com.域請(qǐng)求www.a.shife.com
⑦向shifen.com請(qǐng)求
⑧向a.shifen.com域請(qǐng)求
⑨拿到www.a.shifen.com的IP
⑩localdns返回本機(jī)www.baidu.com cname www.a.shifen.com 以及 www.a.shifen.com的IP
dns解析原理
一、域名系統(tǒng)
1、域名系統(tǒng)概述
域名系統(tǒng)DNS(Domain Name System)是因特網(wǎng)使用的命名系統(tǒng),用來(lái)把便于人們使用的機(jī)器名字轉(zhuǎn)換成為IP地址。域名系統(tǒng)其實(shí)就是名字系統(tǒng)。為什么不叫“名字”而叫“域名”呢?這是因?yàn)樵谶@種因特網(wǎng)的命名系統(tǒng)中使用了許多的“域(domain)”,因此就出現(xiàn)了“域名”這個(gè)名詞。“域名系統(tǒng)”明確地指明這種系統(tǒng)是應(yīng)用在因特網(wǎng)中。
我們都知道,IP地址是由32位的二進(jìn)制數(shù)字組成的。用戶與因特網(wǎng)上某臺(tái)主機(jī)通信時(shí),顯然不愿意使用很難記憶的長(zhǎng)達(dá)32位的二進(jìn)制主機(jī)地址。即使是點(diǎn)分十進(jìn)制IP地址也并不太容易記憶。相反,大家愿意使用比較容易記憶的主機(jī)名字。但是,機(jī)器在處理IP數(shù)據(jù)報(bào)時(shí),并不是使用域名而是使用IP地址。這是因?yàn)镮P地址長(zhǎng)度固定,而域名的長(zhǎng)度不固定,機(jī)器處理起來(lái)比較困難。
因?yàn)橐蛱鼐W(wǎng)規(guī)模很大,所以整個(gè)因特網(wǎng)只使用一個(gè)域名服務(wù)器是不可行的。因此,早在1983年因特網(wǎng)開始采用層次樹狀結(jié)構(gòu)的命名方法,并使用分布式的域名系統(tǒng)DNS。并采用客戶服務(wù)器方式。DNS使大多數(shù)名字都在本地解析(resolve),僅有少量解析需要在因特網(wǎng)上通信,因此DNS系統(tǒng)的效率很高。由于DNS是分布式系統(tǒng),即使單個(gè)計(jì)算機(jī)除了故障,也不會(huì)妨礙整個(gè)DNS系統(tǒng)的正常運(yùn)行。
域名到IP地址的解析是由分布在因特網(wǎng)上的許多域名服務(wù)器程序共同完成的。域名服務(wù)器程序在專設(shè)的結(jié)點(diǎn)上運(yùn)行,而人們也常把運(yùn)行域名服務(wù)器程序的機(jī)器稱為域名服務(wù)器。
域名到IP地址的解析過(guò)程的要點(diǎn)如下:當(dāng)某一個(gè)應(yīng)用需要把主機(jī)名解析為IP地址時(shí),該應(yīng)用進(jìn)程就調(diào)用解析程序,并稱為DNS的一個(gè)客戶,把待解析的域名放在DNS請(qǐng)求報(bào)文中,以UDP用戶數(shù)據(jù)報(bào)方式發(fā)給本地域名服務(wù)器。本地域名服務(wù)器在查找域名后,把對(duì)應(yīng)的IP地址放在回答報(bào)文中返回。應(yīng)用程序獲得目的主機(jī)的IP地址后即可進(jìn)行通信。
若本地域名服務(wù)器不能回答該請(qǐng)求,則此域名服務(wù)器就暫時(shí)稱為DNS的另一個(gè)客戶,并向其他域名服務(wù)器發(fā)出查詢請(qǐng)求。這種過(guò)程直至找到能夠回答該請(qǐng)求的域名服務(wù)器為止。此過(guò)程在后面作進(jìn)一步討論。
2、因特網(wǎng)的域名結(jié)構(gòu)
由于因特網(wǎng)的用戶數(shù)量較多,所以因特網(wǎng)在命名時(shí)采用的是層次樹狀結(jié)構(gòu)的命名方法。任何一個(gè)連接在因特網(wǎng)上的主機(jī)或路由器,都有一個(gè)唯一的層次結(jié)構(gòu)的名字,即域名(domain name)。這里,“域”(domain)是名字空間中一個(gè)可被管理的劃分。
從語(yǔ)法上講,每一個(gè)域名都是有標(biāo)號(hào)(label)序列組成,而各標(biāo)號(hào)之間用點(diǎn)(小數(shù)點(diǎn))隔開。
如下例子所示:
這是中央電視臺(tái)用于手法電子郵件的計(jì)算機(jī)的域名,它由三個(gè)標(biāo)號(hào)組成,其中標(biāo)號(hào)com是頂級(jí)域名,標(biāo)號(hào)cctv是二級(jí)域名,標(biāo)號(hào)mail是三級(jí)域名。
DNS規(guī)定,域名中的標(biāo)號(hào)都有英文和數(shù)字組成,每一個(gè)標(biāo)號(hào)不超過(guò)63個(gè)字符(為了記憶方便,一般不會(huì)超過(guò)12個(gè)字符),也不區(qū)分大小寫字母。標(biāo)號(hào)中除連字符(-)外不能使用其他的標(biāo)點(diǎn)符號(hào)。級(jí)別最低的域名寫在最左邊,而級(jí)別最高的字符寫在最右邊。由多個(gè)標(biāo)號(hào)組成的完整域名總共不超過(guò)255個(gè)字符。DNS既不規(guī)定一個(gè)域名需要包含多少個(gè)下級(jí)域名,也不規(guī)定每一級(jí)域名代表什么意思。各級(jí)域名由其上一級(jí)的域名管理機(jī)構(gòu)管理,而最高的頂級(jí)域名則由ICANN進(jìn)行管理。用這種方法可使每一個(gè)域名在整個(gè)互聯(lián)網(wǎng)范圍內(nèi)是唯一的,并且也容易設(shè)計(jì)出一種查找域名的機(jī)制。
域名只是邏輯概念,并不代表計(jì)算機(jī)所在的物理地點(diǎn)。據(jù)2006年12月統(tǒng)計(jì),現(xiàn)在頂級(jí)域名TLD(Top Level Domain)已有265個(gè),分為三大類:
(1)國(guó)家頂級(jí)域名nTLD:采用ISO3166的規(guī)定。如:cn代表中國(guó),us代表美國(guó),uk代表英國(guó),等等。國(guó)家域名又常記為ccTLD(cc表示國(guó)家代碼contry-code)。
(2)通用頂級(jí)域名gTLD:最常見的通用頂級(jí)域名有7個(gè),即:com(公司企業(yè)),net(網(wǎng)絡(luò)服務(wù)機(jī)構(gòu)),org(非營(yíng)利組織),int(國(guó)際組織),gov(美國(guó)的政府部門),mil(美國(guó)的軍事部門)。
(3)基礎(chǔ)結(jié)構(gòu)域名(infrastructure domain):這種頂級(jí)域名只有一個(gè),即arpa,用于反向域名解析,因此稱為反向域名。
3、域名服務(wù)器
如果采用上述的樹狀結(jié)構(gòu),每一個(gè)節(jié)點(diǎn)都采用一個(gè)域名服務(wù)器,這樣會(huì)使得域名服務(wù)器的數(shù)量太多,使域名服務(wù)器系統(tǒng)的運(yùn)行效率降低。所以在DNS中,采用劃分區(qū)的方法來(lái)解決。
一個(gè)服務(wù)器所負(fù)責(zé)管轄(或有權(quán)限)的范圍叫做區(qū)(zone)。各單位根據(jù)具體情況來(lái)劃分自己管轄范圍的區(qū)。但在一個(gè)區(qū)中的所有節(jié)點(diǎn)必須是能夠連通的。每一個(gè)區(qū)設(shè)置相應(yīng)的權(quán)限域名服務(wù)器,用來(lái)保存該區(qū)中的所有主機(jī)到域名IP地址的映射。總之,DNS服務(wù)器的管轄范圍不是以“域”為單位,而是以“區(qū)”為單位。區(qū)是DNS服務(wù)器實(shí)際管轄的范圍。區(qū) 《= 域。
下圖是區(qū)的不同劃分方法的舉例。假定abc公司有下屬部門x和y,部門x下面有分三個(gè)分布們u,v,w,而y下面還有下屬部門t。圖a表示abc公司只設(shè)一個(gè)區(qū)abc.com。這是,區(qū)abc.com和域abc.com指的是同一件事。但圖b表示abc公司劃分為兩個(gè)區(qū):abc.com和y.abc.com。這兩個(gè)區(qū)都隸屬于域abc.com,都各設(shè)置了相應(yīng)的權(quán)限域名服務(wù)器。不難看出,區(qū)是域的子集。
下圖是以上圖b中abc公司劃分的兩個(gè)區(qū)為例,給出了DNS域名服務(wù)器樹狀結(jié)構(gòu)圖。這種DNS域名服務(wù)器樹狀結(jié)構(gòu)圖可以更準(zhǔn)確地反映出DNS的分布式結(jié)構(gòu)。圖中的每一個(gè)域名服務(wù)器都能夠部分域名到IP地址的解析。當(dāng)某個(gè)DNS服務(wù)器不能進(jìn)行域名到IP地址的轉(zhuǎn)換時(shí),它就會(huì)設(shè)法找因特網(wǎng)上別的域名服務(wù)器進(jìn)行解析。
從下圖可以看出,因特網(wǎng)上的DNS服務(wù)器也是按照層次安排的。每一個(gè)域名服務(wù)器只對(duì)域名體系中的一部分進(jìn)行管轄。根據(jù)域名服務(wù)器所起的作用,可以把域名服務(wù)器劃分為下面四種不同的類型。
根域名服務(wù)器:最高層次的域名服務(wù)器,也是最重要的域名服務(wù)器。所有的根域名服務(wù)器都知道所有的頂級(jí)域名服務(wù)器的域名和IP地址。不管是哪一個(gè)本地域名服務(wù)器,若要對(duì)因特網(wǎng)上任何一個(gè)域名進(jìn)行解析,只要自己無(wú)法解析,就首先求助根域名服務(wù)器。所以根域名服務(wù)器是最重要的域名服務(wù)器。假定所有的根域名服務(wù)器都癱瘓了,那么整個(gè)DNS系統(tǒng)就無(wú)法工作。需要注意的是,在很多情況下,根域名服務(wù)器并不直接把待查詢的域名直接解析出IP地址,而是告訴本地域名服務(wù)器下一步應(yīng)當(dāng)找哪一個(gè)頂級(jí)域名服務(wù)器進(jìn)行查詢。
頂級(jí)域名服務(wù)器:負(fù)責(zé)管理在該頂級(jí)域名服務(wù)器注冊(cè)的二級(jí)域名。
權(quán)限域名服務(wù)器:負(fù)責(zé)一個(gè)“區(qū)”的域名服務(wù)器。
本地域名服務(wù)器:本地服務(wù)器不屬于下圖的域名服務(wù)器的層次結(jié)構(gòu),但是它對(duì)域名系統(tǒng)非常重要。當(dāng)一個(gè)主機(jī)發(fā)出DNS查詢請(qǐng)求時(shí),這個(gè)查詢請(qǐng)求報(bào)文就發(fā)送給本地域名服務(wù)器。
4、域名的解析過(guò)程
注意:
一、主機(jī)向本地域名服務(wù)器的查詢一般都是采用遞歸查詢。所謂遞歸查詢就是:如果主機(jī)所詢問(wèn)的本地域名服務(wù)器不知道被查詢的域名的IP地址,那么本地域名服務(wù)器就以DNS客戶的身份,向其它根域名服務(wù)器繼續(xù)發(fā)出查詢請(qǐng)求報(bào)文(即替主機(jī)繼續(xù)查詢),而不是讓主機(jī)自己進(jìn)行下一步查詢。因此,遞歸查詢返回的查詢結(jié)果或者是所要查詢的IP地址,或者是報(bào)錯(cuò),表示無(wú)法查詢到所需的IP地址。
二、本地域名服務(wù)器向根域名服務(wù)器的查詢的迭代查詢。迭代查詢的特點(diǎn):當(dāng)根域名服務(wù)器收到本地域名服務(wù)器發(fā)出的迭代查詢請(qǐng)求報(bào)文時(shí),要么給出所要查詢的IP地址,要么告訴本地服務(wù)器:“你下一步應(yīng)當(dāng)向哪一個(gè)域名服務(wù)器進(jìn)行查詢”。然后讓本地服務(wù)器進(jìn)行后續(xù)的查詢。根域名服務(wù)器通常是把自己知道的頂級(jí)域名服務(wù)器的IP地址告訴本地域名服務(wù)器,讓本地域名服務(wù)器再向頂級(jí)域名服務(wù)器查詢。頂級(jí)域名服務(wù)器在收到本地域名服務(wù)器的查詢請(qǐng)求后,要么給出所要查詢的IP地址,要么告訴本地服務(wù)器下一步應(yīng)當(dāng)向哪一個(gè)權(quán)限域名服務(wù)器進(jìn)行查詢。最后,知道了所要解析的IP地址或報(bào)錯(cuò),然后把這個(gè)結(jié)果返回給發(fā)起查詢的主機(jī)。
下圖給出了這兩種查詢的差別
下面舉一個(gè)例子演示整個(gè)查詢過(guò)程:
假定域名為m.xyz.com的主機(jī)想知道另一個(gè)主機(jī)y.abc.com的IP地址。例如,主機(jī)m.xyz.com打算發(fā)送郵件給y.abc.com。這時(shí)就必須知道主機(jī)y.abc.com的IP地址。下面是上圖a的幾個(gè)查詢步驟:
1、主機(jī)m.abc.com先向本地服務(wù)器dns.xyz.com進(jìn)行遞歸查詢。
2、本地服務(wù)器采用迭代查詢。它先向一個(gè)根域名服務(wù)器查詢。
3、根域名服務(wù)器告訴本地服務(wù)器,下一次應(yīng)查詢的頂級(jí)域名服務(wù)器dns.com的IP地址。
4、本地域名服務(wù)器向頂級(jí)域名服務(wù)器dns.com進(jìn)行查詢。
5、頂級(jí)域名服務(wù)器dns.com告訴本地域名服務(wù)器,下一步應(yīng)查詢的權(quán)限服務(wù)器dns.abc.com的IP地址。
6、本地域名服務(wù)器向權(quán)限域名服務(wù)器dns.abc.com進(jìn)行查詢。
7、權(quán)限域名服務(wù)器dns.abc.com告訴本地域名服務(wù)器,所查詢的主機(jī)的IP地址。
8、本地域名服務(wù)器最后把查詢結(jié)果告訴m.xyz.com。
整個(gè)查詢過(guò)程共用到了8個(gè)UDP報(bào)文。
為了提高DNS查詢效率,并減輕服務(wù)器的負(fù)荷和減少因特網(wǎng)上的DNS查詢報(bào)文數(shù)量,在域名服務(wù)器中廣泛使用了高速緩存,用來(lái)存放最近查詢過(guò)的域名以及從何處獲得域名映射信息的記錄。
例如,在上面的查詢過(guò)程中,如果在m.xyz.com的主機(jī)上不久前已經(jīng)有用戶查詢過(guò)y.abc.com的IP地址,那么本地域名服務(wù)器就不必向根域名服務(wù)器重新查詢y.abc.com的IP地址,而是直接把告訴緩存中存放的上次查詢結(jié)果(即y.abc.com的IP地址)告訴用戶。
由于名字到地址的綁定并不經(jīng)常改變,為保持告訴緩存中的內(nèi)容正確,域名服務(wù)器應(yīng)為每項(xiàng)內(nèi)容設(shè)置計(jì)時(shí)器并處理超過(guò)合理時(shí)間的項(xiàng)(例如每個(gè)項(xiàng)目?jī)商欤.?dāng)域名服務(wù)器已從緩存中刪去某項(xiàng)信息后又被請(qǐng)求查詢?cè)擁?xiàng)信息,就必須重新到授權(quán)管理該項(xiàng)的域名服務(wù)器綁定信息。當(dāng)權(quán)限服務(wù)器回答一個(gè)查詢請(qǐng)求時(shí),在響應(yīng)中都指明綁定有效存在的時(shí)間值。增加此時(shí)間值可減少網(wǎng)絡(luò)開銷,而減少此時(shí)間值可提高域名解析的正確性。
不僅在本地域名服務(wù)器中需要高速緩存,在主機(jī)中也需要。許多主機(jī)在啟動(dòng)時(shí)從本地服務(wù)器下載名字和地址的全部數(shù)據(jù)庫(kù),維護(hù)存放自己最近使用的域名的高速緩存,并且只在從緩存中找不到名字時(shí)才使用域名服務(wù)器。維護(hù)本地域名服務(wù)器數(shù)據(jù)庫(kù)的主機(jī)應(yīng)當(dāng)定期地檢查域名服務(wù)器以獲取新的映射信息,而且主機(jī)必須從緩存中刪除無(wú)效的項(xiàng)。由于域名改動(dòng)并不頻繁,大多數(shù)網(wǎng)點(diǎn)不需花精力就能維護(hù)數(shù)據(jù)庫(kù)的一致性。
- 第 1 頁(yè):dns解析過(guò)程詳解_dns解析原理
- 第 2 頁(yè):dns解析原理
本文導(dǎo)航
非常好我支持^.^
(17) 100%
不好我反對(duì)
(0) 0%
相關(guān)閱讀:
- [電子說(shuō)] 亞馬遜云科技宣布Amazon Trainium2實(shí)例正式可用 2024-12-06
- [電子說(shuō)] 虛擬化數(shù)據(jù)恢復(fù)—VMware ESX服務(wù)器常見故障的數(shù)據(jù)恢復(fù)方案 2024-12-05
- [電子說(shuō)] 常用的服務(wù)器負(fù)載均衡多少錢一臺(tái)? 2024-12-05
- [電子說(shuō)] 兆芯亮相2024數(shù)字科技生態(tài)大會(huì) 2024-12-05
- [電子說(shuō)] 浪涌保護(hù)器在數(shù)據(jù)中心的重要性 2024-12-05
- [電子說(shuō)] 服務(wù)器數(shù)據(jù)恢復(fù)—RAID5陣列熱備盤同步數(shù)據(jù)失敗的數(shù)據(jù)恢復(fù)案例 2024-12-04
- [電子說(shuō)] UPS不間斷電源能保護(hù)哪些設(shè)備 2024-12-04
- [電子說(shuō)] 不同配置云服務(wù)器及硬盤費(fèi)用一覽 2024-12-04
( 發(fā)表人:龔婷 )