DNS 工作原理

                  理解DNS服務器的工作方式

1.. DNS客戶端完整的DNS解析過程

   1..1 檢查自己的本地DNS名字緩存

   1..2 聯繫自己的DNS服務器

2.. 查詢響應類型 權威答覆 正向答覆 參考答覆 否定答覆

3.. 理解緩存的工作方式

DNS客戶端需要爲某個應用程序查詢名字時,它將聯繫自己的DNS服務器來解析此名字。DNS客戶發送的解析請求包含以下三種信息:

需要查詢的域名。如果原應用程序提交的不是一個完整的FQDN,則DNS客戶端加上域名後綴以構成一個完整的FQDN

指定的查詢類型。指定查詢的資源記錄的類型,如A記錄或者MX記錄等等;

指定的DNS域名類型。對於DNS客戶端服務,這個類型總是指定爲 Internet [IN]類別。

1.. DNS客戶端完整的DNS解析過程如下:

1..1 檢查自己的本地DNS名字緩存

DNS客戶端需要解析某個FQDN時,先檢查自己的本地DNS名字緩存。本地的DNS名字緩存由兩部分構成:

Hosts文件中的主機名到IP地址映射定義;

前一次DNS查詢得到的結果,並且此結果還處於有效期;

如果DNS客戶端從本地緩存中獲得相應結果,則DNS解析完成。

1..2 聯繫自己的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客戶端返回一個參考答覆,其中包含有利於客戶端解析請求的信息(例如根提示信息等),而不再進行其他操作;原DNS客戶端根據DNS服務器返回的參考信息再決定處理方式。但是在實際網絡環境中,禁用DNS服務器的遞歸查詢往往會讓DNS服務器對無法進行本地解析的客戶端請求返回一個服務器失敗的參考答覆,此時,客戶端則會認爲解析失敗。

    遞歸方式和迭代方式的不同之處就是DNS服務器沒有在本地完成客戶端的請求解析時,由誰扮演DNS客戶端的角色向其他DNS服務器發起解析請求。通常情況下應使用遞歸方式,這樣有利於網絡管理和安全性控制,只是遞歸方式比迭代方式更消耗DNS服務器的性能,不過在通常的情況下,這點性能的消耗無關緊要。

     根提示信息是Internet命名空間中的根DNS服務器的IP地址。爲了正常的執行遞歸解析,DNS服務器必須知道從哪兒開始搜索DNS域名,而根提示信息則用於實現這一需求。全世界範圍內的根DNS服務器總共有13個,它們的名字和IP地址信息保存在%systemroot%system32dnscache.dns文件中,每次DNS服務器啓動時從cache.dns文件中讀取。一般情況下,不需要對此文件進行修改;如果你的DNS服務器是在內部網絡中部署並且不需要使用Internet的根DNS服務器,則可以根據需要進行修改,將其指向到某個內部根域DNS服務器。

    例如,當某個DNS客戶端請求解析域名www.winsvr.org並且DNS服務器(Nameserver)工作在遞歸模式下時和上級DNS工作在迭代模式,完整的解析過程如下:

  1. DNS客戶端檢查自己的本地名字緩存,沒有找到對應的記錄;

  2. DNS客戶端聯繫自己的DNS服務器NameServer1,查詢域名 [url]www.winsvr.org[/url]

    3.NameServer1檢查自己的權威區域和本地緩存,沒有找到對應值。於是,聯繫根提示中的某個根域服務器,查詢域名www.winsvr.org
   4.根域服務器也不知道[url]www.winsvr.org[/url]的對應值,於是,向NameServer1返回一個參考答覆,告訴NameServer1 .org頂級域的權威DNS服務器;

     5.NameServer1聯繫.org頂級域的權威DNS服務器,查詢域名www.winsvr.org
     6.org頂級域服務器也不知道www.winsvr.org的對應值,於是,向NameServer1返回一個參考答覆,告訴NameServer1 Winsvr.org域的權威DNS服務器;

     7.NameServer1聯繫Winsvr.org域的權威DNS服務器,查詢域名www.winsvr.org

     8.Winsvr.org域的權威DNS服務器知道對應值,並且返回給NameServer1

     9.NameServer1向原DNS客戶端返回[url]www.winsvr.org[/url]的結果,此時,解析完成。
 
2.. 查詢響應類型

DNS服務器對於客戶請求的答覆具有多種類型,常見的有以下四種:

權威答覆:權威答覆是返回給客戶的正向答覆,並且設置了DNS消息中的權威位。此答覆代表從具有權威的DNS服務器處發出;

正向答覆:正向答覆包含了匹配客戶端解析請求的資源記錄;

參考答覆:參考答覆只在DNS服務器工作在迭代模式下使用,包含了其他有助於客戶端解析請求的信息。例如,當DNS服務器不能爲客戶端發起的解析請求找到某個匹配值時,則向DNS客戶端發送參考回覆,告訴它有助於解析請求的信息;

否定答覆:否定答覆指出權威服務器在解析客戶端的請求時可能遇到了以下兩種情況之一:

  • 權威DNS服務器報告客戶端查詢的名字不存在;

  • 權威DNS服務器報告存在對應的名字但是不存在指定類型的資源記錄。

無論正向答覆還是否定答覆,DNS客戶端都將結果保存在自己的本地緩存中。

 

 

3.. 理解緩存的工作方式

DNS客戶端和DNS服務器都會緩存獲得的解析結果,這樣可以提高DNS服務性能和減少DNS相關的網絡流量。

DNS客戶端緩存
DNS客戶端服務啓動時,會讀取Hosts文件中的所有主機名和IP地址的映射,並且保存在緩存中。Hosts存放在%systemroot%system32driversetc目錄,當你修改Hosts文件後,DNS客戶端會立即讀取Hosts文件並且對本地緩存進行更新。

另外,DNS客戶端會緩存過去的查詢結果,當DNS客戶端服務停止時,將清空本地緩存。

DNS服務器緩存

DNS服務器像DNS客戶端一樣緩存名字解析結果,並且可以使用緩存中的信息來答覆其他客戶端的請求。你可以在DNS服務器管理控制檯或者使用DNSCMD命令行工具手動清空緩存,另外當DNS服務器停止時,同樣會清空DNS服務器緩存。

資源記錄的生存時間(TTL)指定了資源記錄可以緩存的時間的長短,而無論是DNS客戶端緩存還是DNS服務器緩存;默認情況下,TTL3600秒(1小時)。需要注意的是,由於緩存的作用,DNS服務器上對於資源記錄的修改可能不能立即生效。並且對於Internet域名來說,資源記錄的修改可能會需要超過24小時的時間才能在所有DNS服務器上完成更新。

只有Windows 2000及以後版本操作系統的客戶端計算機才能執行動態更新,低版本的Windows系統(NT49x/ME)不支持動態更新。不過,你可以通過DHCP服務器爲這些低版本客戶端計算機代理進行動態更新。當DHCP服務器在代理低版本客戶端計算機註冊A記錄時,會將自己設置爲此A記錄的所有者。而在安全動態更新方式中,只有資源記錄的所有這才能修改此記錄,這樣在其他DHCP服務器爲此低版本客戶端計算機代理註冊時會出現拒絕訪問的問題。因此,你需要將此DHCP服務器加入到DnsUpdateProxy安全組中,這樣當DHCP服務器更新A記錄時,不會記錄下此A記錄的所有者信息,從而允許其他DHCP服務器來修改此A記錄。
 
刪除了部分內容 51cto上提示文章超過了8萬字 建議清除冗餘.

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章