歡迎您光臨本站 註冊首頁

關於DNS的遞歸查詢和迭代查詢

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

關於DNS的遞歸查詢和迭代查詢

DNS查詢時何時使用遞歸查詢,何時使用迭代查詢?

對這個問題我的理解是
1.根域名伺服器使用迭代查詢,
2.凡是和客戶端直接連接的查詢都是遞歸查詢。

其他情況下,要看dns伺服器的配置決定。

不知道這樣理解對嗎?大家談談自己的看法吧。

另外還有個問題:如何決定發送的查詢使用遞歸查詢還是迭代查詢。比如伺服器 A 向 B 發送了查詢報文P,

如何可以決定B用遞歸或者迭代的方法處理這個查詢請求呢?
《解決方案》

1.根域名伺服器使用迭代查詢,
2.凡是和客戶端直接連接的查詢都是遞歸查詢。

1 對根域名伺服器的查詢為迭代查詢,這樣說更好一點吧
2 可以簡單的這麼理解吧,記得《DNS&BIND》中說,迭代查詢比較複雜,終端用戶的dns客戶端比較簡單,不能理解,所以迭代查詢都交給伺服器做了
《解決方案》

我到現在沒在技術文檔中找到迭代查詢的概念。最大的可能是遞歸查詢另一個叫法
《解決方案》

我到現在沒在技術文檔中找到迭代查詢的概念。最大的可能是遞歸查詢另一個叫法
llzqq 發表於 2010-08-12 20:48 http://bbs.chinaunix.net/images/common/back.gif


    恩,我看到的是在RFC1034 4.3.1中有這樣的描述:

•The simplest mode for the server is non-recursive, since it can answer queries using only local information:
  the response contains an error, the answer, or a referral to some other server "closer" to the answer.
  All name servers must implement non-recursive queries.
•The simplest mode for the client is recursive, since in this mode the name server acts in the role of a resolver
  and returns either an error or the answer, but never referrals. This service is optional in a name server, and
  the name server may also choose to restrict the clients which can use recursive mode.

我把這裡說的non-recursive就稱為迭代查詢,把recursive稱為遞歸查詢。
《解決方案》

non-recursive  應該翻譯為非遞歸。
《解決方案》

對伺服器來說迭代最輕鬆,我解析不了就告訴你到哪能解析,剩下的跟我沒關係。
遞歸就好比是電信運營商曾經搞過的首問負責制,只要找到你,你就別想跑,不管是肯定的還是否定的都得給個明確的答覆。
《解決方案》

我一直都是這樣認為的,那就是只存在遞歸查詢recursive與非遞歸查詢non-recursive,而迭代只是遞歸的另一種叫法?迭代查詢和遞歸查詢是一樣的吧?
看了這個帖子,搜索了一下之前的帖子,也是和樓主的說法一樣,已經徹底的被搞暈了……
我始終還是認為迭代與遞歸是一樣的概念,只是叫法不同而已……
希望高手能夠具體分析一下!
《解決方案》

這個問題有最終的結論了沒?遞歸與迭代是否屬於同一概念?
我個人一直都是認為只有遞歸查詢與非遞歸查詢,而迭代的看法與這條概念一致:
我到現在沒在技術文檔中找到迭代查詢的概念。最大的可能是遞歸查詢另一個叫法
llzqq 發表於 2010-08-12 20:48 http://bbs.chinaunix.net/images/common/back.gif
希望有DNS版的達人能夠對此種說法討論出一個最終的結果,貌似目前還是不了了之啊,不能讓問題的沉了,得有結論出來……
嘿嘿,於是我就頂了一貼,期待有官方的或者又說服力的答案……
《解決方案》

本帖最後由 flyinweb_cu 於 2010-10-13 14:17 編輯

DNS 查詢以各種不同的方式進行解析。有時,客戶端也可使用從先前的查詢獲得的緩存信息就地應答查詢。DNS 伺服器可使用其自身的資源記錄信息緩存來應答查詢。DNS 伺服器也可代表請求客戶端查詢或聯繫其他 DNS 伺服器,以便完全解析該名稱,並隨後將應答返回至客戶端。這個過程稱為遞歸。

另外,客戶端自己也可嘗試聯繫其他的 DNS 伺服器來解析名稱。當客戶端這麼做的時候,它會根據來自伺服器的參考答案,使用其他的獨立查詢。該過程稱作迭代。

只要發出遞歸查詢,伺服器必需回答目標IP與域名的映射關係。
而迭代查詢是,伺服器收到一次迭代查詢回復一次結果,這個結果不一定是目標IP與域名的映射關係,也可以是其它DNS伺服器的地址。
如圖所示:從客戶端到本地DNS伺服器是屬於遞歸查詢,而DNS伺服器之間就是的交互查詢就是迭代查詢。



總之,DNS 查詢過程按兩部分進行:

名稱查詢從客戶端計算機開始,並傳送至解析程序即 DNS 客戶服務程序進行解析。
不能就地解析查詢時,可根據需要查詢 DNS 伺服器來解析名稱。
下面的部分將更加詳細地解釋這兩個過程:

第一部分:本地解析程序
下圖顯示了完整的 DNS 查詢過程的概況。

  
如查詢過程的初始步驟所示,DNS 域名由本機的程序使用。該請求隨後傳送至 DNS 客戶服務,以便使用本地緩存信息進行解析。如果可以解析查詢的名稱,則應答該查詢,該處理完成。

本地解析程序的緩存可包括從兩個可能的來源獲取的名稱信息:

如果本地配置主機文件,則來自該文件的任何主機名稱到地址的映射,在 DNS 客戶服務啟動時將預先載入到緩存中。
從以前的 DNS 查詢應答的響應中獲取的資源記錄,將被添加至緩存並保留一段時間。
如果此查詢與緩存中的項目不匹配,則解析過程繼續進行,客戶端查詢 DNS 伺服器來解析名稱。

第二部分:查詢 DNS 伺服器
如前面的圖中所示,客戶端將查詢首選 DNS 伺服器。在此過程的初始客戶/伺服器查詢部分中使用的實際伺服器,選自全局列表。有關如何編譯和更新該全局列表的詳細信息,請參閱客戶端功能。

當 DNS 伺服器接收到查詢時,首先檢查它能否根據在伺服器的本地配置區域中獲取的資源記錄信息作出權威性的應答。如果查詢的名稱與本地區域信息中的相應資源記錄匹配,則使用該信息來解析查詢的名稱,伺服器作出權威性的應答,。

如果區域信息中沒有查詢的名稱,則伺服器檢查它能否通過來自先前查詢的本地緩存信息來解析該名稱。如果從中發現匹配的信息,則伺服器使用該信息應答查詢。接著,如果首選伺服器可使用來自其緩存的肯定匹配響應來應答發出請求的客戶端,則此次查詢完成。

如果無論從緩存還是從區域信息,查詢的名稱在首選伺服器中都未發現匹配的應答,那麼查詢過程可繼續進行,使用遞歸來完全解析名稱。這涉及來自其他 DNS 伺服器的支持,以便幫助解析名稱。在默認情況下,DNS 客戶端服務要求伺服器,在返回應答前使用遞歸過程來代表客戶端完全解析名稱。在大多數情況下,DNS 伺服器被默認配置為支持遞歸過程,如下圖所示。


  
為了使 DNS 伺服器正確執行遞歸過程,首先需要在 DNS 域名空間內有關於其他 DNS 伺服器的一些有用的聯繫信息。該信息以根提示的形式提供,它是一張初始資源記錄列表,DNS 服務可利用這些記錄定位其他 DNS 伺服器,它們對 DNS 域名空間樹的根具有絕對控制權。根伺服器對於 DNS 域名空間樹中的根域和頂級域具有絕對控制權。詳細信息,請參閱更新根提示。

使用根提示查找根伺服器,DNS 伺服器可完成遞歸的使用。理論上,該過程啟用 DNS 伺服器,以便那些對域名空間樹的任何級別使用的任何其他 DNS 域名具有絕對控制權的伺服器。

例如,當客戶端查詢單個 DNS 伺服器時,請考慮使用遞歸過程來定位名稱「host-b.example.microsoft.com」。在 DNS 伺服器和客戶端首次啟動,並且沒有本地緩存信息可幫助解析名稱查詢,就會進行上述過程。根據其配置的區域,它假定由客戶端查詢的名稱是域名,該伺服器對該域名沒有本地知識。

首先,首選伺服器分析全名,並確定它需要對頂級域「com」具有權威性控制的伺服器的位置。隨後,對「com」DNS 伺服器使用迭代查詢,以便獲取「microsoft.com」伺服器的參考信息。接著,來自「microsoft.com」伺服器的參考性應答,傳送到「example.microsoft.com」的 DNS 伺服器。

最後,與伺服器「example.microsoft.com」聯繫上。因為該伺服器包括作為其配置區域一部分的查詢名稱,所以它向啟動遞歸的源伺服器作出權威性地應答。當源伺服器接收到表明已獲得對請求查詢的權威性應答的響應時,它將此應答轉發給發出請求的客戶端,這樣遞歸查詢過程就完成了。

儘管執行上述遞歸查詢過程可能需要佔用大量資源,但對於 DNS 伺服器來說它仍然具有一些性能上的優勢。例如,在遞歸過程中,執行遞歸查詢的 DNS 伺服器,獲得有關 DNS 域名稱空間的信息。該信息由伺服器緩存起來並可再次使用,以便提高使用此信息或與之匹配的後續查詢的應答速度。雖然打開與關閉 DNS 服務時,這些緩存信息將被清除,但是隨著時間的推移,它們會不斷增加並佔據大量的伺服器內存資源。
《解決方案》

9樓的朋友你理解錯誤了吧?
請告訴我DNS查詢中的遞歸與迭代在哪裡有定義?RFC文檔?或者ISC的Document中?
你畫那麼多圖在解析遞歸與迭代,而你真正是從哪篇官方文檔或正式的標準中對這二個概念進行定義過?
因此只是希望能找出證明迭代查詢這個概念存在的官方文檔資料而已,請不要轉載網路中的文章,或者說根據個人的意見與理解來解釋這二個概念!
我根本不相信你的解釋……:lol:我需要的是類似RFC之類的這種定義
(當然RFC也是個人定義,但終歸需要有一個統一的、官方的說法)

我個人真是從沒在任何官方文檔或RFC中看到存迭代查詢這一概念,但我確實看到了遞歸查詢與非遞歸查詢這二個概念……
因此,我們討論的目的主要是確定是否存在迭代查詢這個概念,這個概念從何而來?以及這個概念如果存在,與遞歸查詢的區別在哪裡?
謝謝

PS:

[火星人 ] 關於DNS的遞歸查詢和迭代查詢已經有849次圍觀

http://coctec.com/docs/service/show-post-14255.html