域名的解析過程數據庫
注意:緩存
1、主機向本地域名服務器的查詢通常都是採用遞歸查詢。所謂遞歸查詢就是:若是主機所詢問的本地域名服務器不知道被查詢的域名的IP地址,那麼本地域名服務器就以DNS客戶的身份,向其它根域名服務器繼續發出查詢請求報文(即替主機繼續查詢),而不是讓主機本身進行下一步查詢。所以,遞歸查詢返回的查詢結果或者是所要查詢的IP地址,或者是報錯,表示沒法查詢到所需的IP地址。服務器
2、本地域名服務器向根域名服務器的查詢的迭代查詢。迭代查詢的特色:當根域名服務器收到本地域名服務器發出的迭代查詢請求報文時,要麼給出所要查詢的IP地址,要麼告訴本地服務器:「你下一步應當向哪個域名服務器進行查詢」。而後讓本地服務器進行後續的查詢。根域名服務器一般是把本身知道的頂級域名服務器的IP地址告訴本地域名服務器,讓本地域名服務器再向頂級域名服務器查詢。頂級域名服務器在收到本地域名服務器的查詢請求後,要麼給出所要查詢的IP地址,要麼告訴本地服務器下一步應當向哪個權限域名服務器進行查詢。最後,知道了所要解析的IP地址或報錯,而後把這個結果返回給發起查詢的主機。網絡
下圖給出了這兩種查詢的差異ide
下面舉一個例子演示整個查詢過程:spa
假定域名爲m.xyz.com的主機想知道另外一個主機y.abc.com的IP地址。例如,主機m.xyz.com打算髮送郵件給y.abc.com。這時就必須知道主機y.abc.com的IP地址。下面是上圖a的幾個查詢步驟:orm
一、主機m.abc.com先向本地服務器dns.xyz.com進行遞歸查詢。遞歸
二、本地服務器採用迭代查詢。它先向一個根域名服務器查詢。dns
三、根域名服務器告訴本地服務器,下一次應查詢的頂級域名服務器dns.com的IP地址。域名
四、本地域名服務器向頂級域名服務器dns.com進行查詢。
五、頂級域名服務器dns.com告訴本地域名服務器,下一步應查詢的權限服務器dns.abc.com的IP地址。
六、本地域名服務器向權限域名服務器dns.abc.com進行查詢。
七、權限域名服務器dns.abc.com告訴本地域名服務器,所查詢的主機的IP地址。
八、本地域名服務器最後把查詢結果告訴m.xyz.com。
整個查詢過程共用到了8個UDP報文。
爲了提升DNS查詢效率,並減輕服務器的負荷和減小因特網上的DNS查詢報文數量,在域名服務器中普遍使用了高速緩存,用來存放最近查詢過的域名以及從何處得到域名映射信息的記錄。
例如,在上面的查詢過程當中,若是在m.xyz.com的主機上不久前已經有用戶查詢過y.abc.com的IP地址,那麼本地域名服務器就沒必要向根域名服務器從新查詢y.abc.com的IP地址,而是直接把告訴緩存中存放的上次查詢結果(即y.abc.com的IP地址)告訴用戶。
因爲名字到地址的綁定並不常常改變,爲保持告訴緩存中的內容正確,域名服務器應爲每項內容設置計時器並處理超過合理時間的項(例如每一個項目兩天)。當域名服務器已從緩存中刪去某項信息後又被請求查詢該項信息,就必須從新到受權管理該項的域名服務器綁定信息。當權限服務器回答一個查詢請求時,在響應中都指明綁定有效存在的時間值。增長此時間值可減小網絡開銷,而減小此時間值可提升域名解析的正確性。
不只在本地域名服務器中須要高速緩存,在主機中也須要。許多主機在啓動時從本地服務器下載名字和地址的所有數據庫,維護存放本身最近使用的域名的高速緩存,而且只在從緩存中找不到名字時才使用域名服務器。維護本地域名服務器數據庫的主機應當按期地檢查域名服務器以獲取新的映射信息,並且主機必須從緩存中刪除無效的項。因爲域名改動並不頻繁,大多數網點不需花精力就能維護數據庫的一致性。