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