DNS解析是互聯網中的重要環節,承擔著將域名翻譯為可由計算機直接讀取的IP地址的基礎功能。根據查詢對象不同,DNS解析可分為遞歸解析和迭代解析兩種方式,接下來,國科云將簡單介紹下兩種查詢方式的流程以及兩種方式的區別。
什么是遞歸查詢?
“遞歸解析”是最常見也是默認的一種解析方式。在這種解析方式中,如果客戶端配置的本地域名服務器(Local DNS服務器)不能解析的話,則后面的查詢過程全部由本地域名服務器代替DNS客戶端進行查詢,直到本地域名服務器從權威域名服務器得到了正確的解析結果,然后由本地域名服務器告訴DNS客戶端查詢的結果。
在整個遞歸查詢過程中,除一開始客戶端向本地域名服務器發起查詢請求外,其余各個環節均是以本地域名服務器為中心進行迭代查詢,DNS客戶端一直處于等待狀態,直到本地域名服務器發回最終查詢結果。相當于,在整個查詢環節中本地域名服務器承擔了中介代理的角色。
遞歸解析的查詢過程大致如下:
1.客戶端向本機配置的本地域名服務器發起DNS域名查詢請求;
2.本地域名服務器收到請求后,會先查詢本地緩存,如果有記錄值會直接返回給客戶端;如果沒有記錄,則本地域名服務器會向根域名服務器發起請求;
3.根域名服務器收到請求后,會根據所要查詢域名中的后綴將所對應的頂級域名服務器(如.com、.cn等)返回給本地域名服務器;
4.本地域名服務器根據返回結果向所對應的頂級域名服務器發起查詢請求;
5.對應的頂級域名服務器在收到DNS查詢請求后,也是先查詢自己的緩存,如果有所請求域名的解析記錄,則會直接將記錄返回給本地域名服務器,然后本地域名服務器再將記錄返回給客戶端,完成整個DNS解析過程。
6.如果頂級域名服務器沒有記錄值,就會將二級域名對應的服務器地址返回給本地域名服務器,本地域名服務器再次對二級域名服務器發起請求,如此類推,直到最終對應區域的權威域名服務器返回結果給本地域名服務器。然后本地域名服務器將記錄值返回給DNS客戶端,同時緩存本地查詢記錄,以便在TTL值內用戶再次查詢時直接將記錄返回給客戶端。
什么是迭代查詢?
從上面的介紹中我們看到了,遞歸查詢除在一開始客戶端發起查詢請求外,其他環節都是由本地域名服務器代替客戶端進行的。而迭代查詢則是指所有查詢工作全部由客戶端自己進行,除此之外,整個查詢路徑和步驟與遞歸查詢沒有太大區別。
DNS迭代查詢流程圖
首先客戶端向本地域名服務器發起請求,如果本地域名服務器沒有緩存記錄,客戶端便會依次對根域名服務器、頂級域名服務器和二級域名服務器等發起迭代查詢,直到獲得最終的查詢結果。
在以下條件之一滿足時,就會采用迭代解析方式:
1.在查詢本地域名服務器時,如果客戶端的請求報文中沒有申請使用遞歸查詢,即在DNS請求報文中的RD字段沒有設置為1。
2.客戶端在DNS請求報文中申請使用遞歸查詢,但所配置的本地域名服務器禁止使用遞歸查詢,即在應答DNS報文頭部的RA字段設置為0。