百度公共DNS之域名查詢過程
以用戶在瀏覽器輸入www.iisp.com為例,我們詳細(xì)說明一下實(shí)際域名查詢過程:
1. 用戶輸入www.iisp.com,瀏覽器調(diào)用操作系統(tǒng)resolver發(fā)起域名查詢,此處不考慮瀏覽器的域名緩存;resolver封裝一個dns請求報文,并將其發(fā)給運(yùn)營商分配的local dns地址(或者用戶自己配置的公共dns);
2. local dns查詢緩存,如果命中則返回響應(yīng)結(jié)果;否則向根服務(wù)器發(fā)起查詢;
3. 根服務(wù)器返回com地址。每一層級的DNS服務(wù)器都有緩存,實(shí)際都是先查緩存,沒有緩存才返回下級域,此處不再重復(fù);
4. local dns查詢com。com返回iisp.com地址;
5. local dns查詢baidu.com,baidu.com返回www.baidu.com對應(yīng)記錄結(jié)果。
理論上講域名查詢有兩種方式:
迭代查詢 A問B一個問題,B不知道答案說你可以問C,然后A再去問C,C推薦D,然后A繼續(xù)問D,如此迭代…
遞歸查詢 A問B一個問題,B問C,C問D… 然后D告訴C,C告訴B,B告訴A
上述過程中從resolver到遞歸DNS再到根的查詢過程為遞歸查詢,遞歸DNS到根、到com、到baidu.com的過程為迭代查詢。
注意,遞歸查詢需要從系統(tǒng)層面來看,很難單純的說一臺DNS實(shí)現(xiàn)了遞歸查詢。