關於DNS解析試題分析和查詢方式講解
題目來源:2010-408_計算機學科專業基礎綜合
如果本地域名服務無快取,當採用遞迴方法解析另一網路某主機域名時,使用者主機 、本地域名伺服器傳送的域名請求訊息數分別為()
A.1條,1條
B.1條,多條
C.多條,1條
D.多條,多條
我在下面給出的回答是:
確實選A,選擇B的可能沒有注意到題目說的是使用遞迴查詢。在實際中,客戶機向本地域名伺服器查詢是遞迴查詢,本地域名伺服器向其他域名伺服器是迭代查詢,但是這裡題目要求就是遞迴查詢。遞迴查詢是:客戶機發送一條查詢請求到本地域名伺服器,發現快取中沒有主機名和IP地址對的資訊,那麼本地域名伺服器就往上繼續查詢,傳送一個查詢報文,如果在某一級域名伺服器找到了主機名和IP地址對資訊,就直接返回。如果找不到,那麼這個域名伺服器又會作為客戶機去請求上一級域名伺服器,直至根域名伺服器,根名稱伺服器收到DNS請求後,把所查詢得到的所請求的DNS域名中傳送給頂級域名伺服器,讓頂級域名伺服器去往下級域名伺服器請求查詢,如果找到了就原路返回。某域名伺服器-->...->頂級域名伺服器-->根域名伺服器-->下一級域名伺服器-->...-->本地域名伺服器-->客戶機。 所以在遞迴查詢中,主機發送的請求為1次,本地域名伺服器傳送的請求也為1次。
接下來來分析一下:
遞迴查詢和迭代查詢的區別 (1)遞迴查詢 遞迴查詢是一種DNS 伺服器的查詢模式,在該模式下DNS 伺服器接收到客戶機請求,必須使用一個準確的查詢結果回覆客戶機。如果DNS 伺服器本地沒有儲存查詢DNS 資訊,那麼該伺服器會詢問其他伺服器,並將返回的查詢結果提交給客戶機,如果沒有找到查詢結果,重複遞迴上述操作直至根域名伺服器,根名稱伺服器收到DNS請求後,把所查詢得到的所請求的DNS域名中傳送給頂級域名伺服器,讓頂級域名伺服器去往下級域名伺服器請求查詢,如果找到了就原路返回。某域名伺服器-->...->頂級域名伺服器-->根域名伺服器-->下一級域名伺服器-->...-->本地域名伺服器-->客戶機。 (2)迭代查詢 DNS 伺服器另外一種查詢方式為迭代查詢,DNS 伺服器會向客戶機提供其他能夠解析查詢請求的DNS 伺服器地址,當客戶機發送查詢請求時,DNS 伺服器並不直接回複查詢結果,而是告訴客戶機另一臺DNS 伺服器地址,客戶機再向這臺DNS 伺服器提交請求,依次迴圈直到返回查詢的結果為止。
這兩種查詢中,遞迴是優於迭代的,因為迭代只有客戶機和域名伺服器之間的操作,而遞迴是除了客戶機和域名伺服器之間的操作,還涉及域名伺服器之間的操作。
根伺服器–最高層次的域名伺服器,最重要的域名伺服器。所有的根域名伺服器都知道所有的頂級域名伺服器的域名和IP地址。
在以前,當本地域名伺服器無法解析域名時,不是逐級查詢,這樣是很盲目的。而是馬上就自頂向下,求助於根域名伺服器,如果是遞迴的查詢,則根域名伺服器會發報文到頂級域名伺服器,如果是二級域名,頂級域名伺服器還要去發報文查詢二級域名的對映。直到許可權域名伺服器,因為對映關係儲存在許可權域名伺服器中。找到往上返回,直到根,根在返回給本地域名伺服器。這樣的設計已經被拋棄了
從技術上講,任何DNS查詢既可以是迭代的也可以是遞迴的。
現在在實踐中,查詢通常遵循下圖的模式,從請求主機到本地DNS伺服器的查詢是遞迴的,其餘的查詢是迭代的。
DNS快取原理:當DNS伺服器接受一個DNS應答時,DNS伺服器能將該應答中的資訊快取在本地儲存器中。並非只有本地域名伺服器才會有快取,任何一個DNS伺服器都會有快取。如果在某次查詢中這個DNS伺服器已經快取了某主機名和IP地址對的對映資訊,那麼另一個對相同主機名的查詢到達該DNS伺服器時,該伺服器就能夠直接提供所需要的IP地址,而不必再輾轉查詢了。
可以想象,大量常用的主機名和IP地址對的資訊存在本地DNS伺服器中,有助於提升DNS系統效率。需要注意的是,為保持快取記憶體中的內容正確,在DNS伺服器中的主機名與IP地址間的對映並不是永久的,在一段時間(常設定為2天)後,DNS伺服器將丟棄快取中一直沒有使用過的資訊。
=========================Talk is cheap, show me the code=======================