注意,這篇文章並不會詳細的介紹DNS的解析過程,只是講其中的迭代查詢和遞歸查詢該怎麼理解.
咱們知道DNS解析的過程當中有涉及到向域名解析服務器查詢的過程.這種查詢主要分兩種:迭代查詢和遞歸查詢.
關於這兩種解析方式書上也好,網上也好通常都會這麼解釋:編程
- 主機向本地域名服務器通常遞歸查詢
- 本地域名服務器向根域名服務器使用迭代查詢
但是,這裏面提到的遞歸查詢和迭代查詢到底該怎麼理解呢?我看過好多遍都記不住這兩個查詢的區分,每次用到都須要從新查一次.不過好在,我最近在作開發的時候忽然有了點靈感.結合咱們開發過程當中的一些經驗和思想,能夠拋出這樣的一個理解方式,簡單總結就是:服務器
迭代查詢是請求方不變(上下文環境)的查詢,遞歸查詢的請求方(上下文環境)一直在改變.
此話怎講呢,咱們結合DNS的查詢過程理解一下.遞歸
在這個階段,主機向本地域名服務器發起請求,若是本地域名服務器不知道請求方想要的東西,那麼本地域名服務器會向別的根域名服務器發起請求.若是按照這種方式不斷持續進行下去的話,那麼每次請求發起方都會改變.
這個過程就有點像咱們編程裏面的遞歸,在遞歸的屢次執行中,每次的執行環境都在發生變化.開發
在這個階段,本地域名服務器向根域名服務器發起請求,若是根域名服務器不知道請求方想要的東西,那根域名服務器會給請求方指定一個域名服務器讓其去查詢.這個過程請求方始終是本地域名服務器.
這就有點像咱們開發時候的版本迭代,咱們始終是在一個項目上進行的迭代開發,開發的項目始終是不變的.跟這裏的請求發方不變一個道理.域名
再通俗點,不嚴謹的總結一下,就是:
迭代查詢是在同一個主體的基礎上進行的,而遞歸查詢每次都在變動查詢主體.基礎
固然這是我我的琢磨出來的一種理解思路,目的是爲了更好的區分這兩種查詢方式.不是很嚴謹.但願能夠給你們提供一種說人話的理解方法,能夠幫到你們.域名解析