域名服務器
- 根域名服務器(
Root name server
):根域名服務器是最高層次的域名服務器。所有的根域名服務器都知道所有的頂級域名服務器的域名和IP地址。根域名服務器是最重要的域名服務器,因為不管是哪一個本地域名服務器,若要對互聯網上任何一個域名進行解析(即轉換為P地址),只要自己無法解析,就首先要求助於根域名服務器。 - 頂級域名服務器(
Top Level Domain Server
):這些域名服務器負責管理在該頂級域名服務器注冊的所有二級域名。當收到DNS查詢請求時,就給出相應的回答(可能是最后的結果,也可能是下一步應當找的域名服務器的IP地址)。 - 權限域名服務器(
Authoritative name server
):一個服務器所負責管轄的(或有權限的)范圍叫做區(zone)。各單位根據具體情況來划分自己管轄范圍的區。但在一個區中的所有節點必須是能夠連通的。每一個區設置相應的權限域名服務器,用來保存該區中的所有主機的域名到IP地址的映射。當一個權限域名服務器還不能給出最后的査詢回答時,就會告訴發出查詢請求的DNS客戶,下一步應當找哪一個權限域名服務器。例如在圖6-2()中,區abc.com和區y.abc.com各設有一個權限域名服務器。
- 本地域名服務器(
Local name server
):當一台主機發出DNS查詢請求時,這個查詢請求報文就發送給本地域名服務器,首先在此服務器中進行ip解析。每一個互聯網服務提供者ISP,或一個大學,甚至一個大學里的系,都可以擁有一個本地域名服務器。
域名解析過程
查詢方式:
-
主機向本地域名服務器的查詢一般都是采用
遞歸查詢(recursive query)
。遞歸查詢:如果主機所詢問的本地域名服務器不知道被查詢域名的IP地址,那么本地域名服務器就以DNS客戶的身份,向其他根域名服務器繼續發出查詢請求報文(即替該主機繼續查詢),而不是讓該主機自己進行下一步的查詢。因此,遞歸查詢返回的查詢結果或者是所要查詢的IP地址,或者是報錯,表示無法查詢到所需的IP地址。
-
本地域名服務器向根域名服務器的查詢通常是采用
迭代查詢(Iterative query)
。迭代查詢:當根域名服務器收到本地域名服務器發出的迭代查詢請求報文時要么給出所要查詢的IP地址,要么告訴本地域名服務器:“你下一步應當向哪一個域名服務器進行查詢”。
然后讓本地域名服務器進行后續的查詢(而不是替本地域名服務器進行后續的查詢)。根域名服務器通常是把自己知道的頂級域名服務器的IP地址告訴本地域名服務器,讓本地域名服務器再向頂級域名服務器查詢。
頂級域名服務器在收到本地域名服務器的查詢請求后,要么給出所要查詢的IP地址,要么告訴本地域名服務器下一步應當向哪一個權限域名服務器進行查詢,本地域名服務器就這樣進行迭代查詢。
最后,知道了所要解析的域名的IP地址,然后把這個結果返回給發起查詢的主機。當然,本地域名服務器也可以采用遞歸查詢,這取決於最初的查詢請求報文的設置是要求使用哪一種查詢方式。
查詢流程:
假定域名為 m.xyz.com 的主機想知道另一台主機(域名為y.abc.com)的IP地址,圖(a)就是所有的查詢步驟
-
主機 m.xyz.com 先向其本地域名服務器 dns xyz.com 進行遞歸查詢。
-
本地域名服務器采用迭代查詢。它先向一個根域名服務器查詢。
-
根域名服務器告訴本地域名服務器,下一次應查詢的頂級域名服務器 dns.com的IP地址。
-
本地域名服務器向頂級域名服務器 dns.com進行查詢。
-
頂級域名服務器 dns.com告訴本地域名服務器,下一次應查詢的權限域名服務器dns.abc con的IP地址。
-
本地域名服務器向權限域名服務器 dns.abc.com進行查詢
-
權限域名服務器 dns.abc.com告訴本地域名服務器,所查詢的主機的IP地址。
-
本地域名服務器最后把查詢結果告訴主機 m.xyz.com
以上 8 個步驟總共要使用 8 個UDP用戶數據報的報文。本地域名服務器經過三次迭代査詢后,從權限域名服務器dns:abc.com得到了主機y.abc.com的IP地址,最后把結果返回給發起查詢的主機 m.xyz.com
圖(b)是本地域名服務器采用遞歸查詢的情況
在這種情況下,本地域名服務器只需向根域名服務器查詢一次,后面的幾次查詢都是在其他幾個域名服務器之間進行的整個的查詢也是使用8個UDP報文
提高DNS查詢效率
為了提高DNS查詢效率,並減輕根域名服務器的負荷和減少互聯網上的DNs查詢報文數量,在域名服務器中廣泛地使用了高速緩存(有時也稱為高速緩存域名服務器)
-
高速緩存用來存放最近查詢過的域名以及從何處獲得域名映射信息的記錄。
- 例如,在圖(a)的查詢過程中,若在不久前已經有用戶查詢過域名為y.abc.com的IP地址,那么本地域名服務器就不必向根域名服務器重新查詢y.abc.com的IP地址,而是直接把高速緩存中存放的上次査詢結果(即y.abc.com的P地址)告訴用戶。
- 假定本地域名服務器的緩存中並沒有y.abc.com的P地址,而是存放着頂級域名服務器dns.com的IP地址,那么本地域名服務器也可以不向根域名服務器進行查詢,而是直接向com頂級域名服務器發送查詢請求報文。
-
由於名字到地址的綁定並不經常改變,為保持高速緩存中的內容正確,域名服務器應為每項內容設置計時器並處理超過合理時間的項
-
不但在本地域名服務器中需要高速緩存,在主機中也很需要。許多主機在啟動時從本地域名服務器下載名字和地址的全部數據庫,維護存放自己最近使用的域名的高速緩存,並且只在從緩存中找不到名字時才使用域名服務器。