1. 程式人生 > >DNS工作原理及其過程

DNS工作原理及其過程

DNS伺服器所提供的服務是完成將主機名或域名轉換為IP地址的工作。為什麼需要將主機名或域名轉換為IP地址的工作呢?這是因為,當網路上的一臺客戶機訪問某一伺服器上的資源時,使用者在瀏覽器位址列中輸入的是便於識記的主機名或域名。而網路上的計算機之間實現連線卻是通過每臺計算機在網路中擁有的唯一的IP地址來完成的,這樣就需要在使用者需要容易記憶的地址和計算機能夠識別的地址之間有一個解析,DNS伺服器便充當了地址解析的重要角色。

1. DNS服務

DNS是域名系統(Domain Name System)的縮寫,是一種組織域層次結構的計算機和網路服務命名系統。當用戶在應用程式中輸入DNS名稱時,DNS服務可以將此名稱解析為與此名稱相關的IP地址資訊。

     使用者在使用網路服務時喜歡在瀏覽器的位址列中輸入使用主機名和域名組成的名稱,如computer.myblog.com,因為這樣的名稱更容易被使用者記住。但是,計算機在網路上是使用IP地址來通訊的。為了能夠實現網路計算機之間通訊,DNS伺服器所提供的服務就是將使用者所使用的計算機或服務名稱對映為IP地址。

2. DNS服務的工作過程

當DNS客戶機需要查詢程式中使用的名稱時,它會查詢DNS伺服器來解析該名稱。客戶機發送的每條查詢訊息都包括3條資訊,以指定伺服器應回答的問題。

      1> 指定的DNS域名,表示為完整合格的域名(FQDN);

      2> 指定的查詢型別,它可以根據型別指定資源記錄,或作為查詢操作的專門型別;

      3> DNS域名的指定類別。

     對於DNS伺服器,它始終應指定為Internet類別。例如,指定的名稱可以是計算機的完全合格的域名,如host.hello.myblog.com,並且指定的查詢型別用於通過該名稱搜尋地址資源記錄。系統將把DNS查詢當做客戶機向伺服器提出的兩部分問題,如“對於名為host.hello.myblog.com的計算機,你有沒有地址資源記錄?”當客戶機從伺服器接收應答時,它讀取並解釋應答的地址資源記錄,以瞭解它通過名稱提問的計算機的IP地址。

     DNS查詢以各種不同的方式進行解析。客戶機有時也可通過使用從以前查詢獲得的快取資訊就地應答查詢。DNS伺服器可使用其自身的資源記錄資訊快取來應答查詢,也可代表請求客戶機來查詢或聯絡其它DNS伺服器,以完全解析該名稱,並隨後將應答返回至客戶機,這個過程稱為遞迴。

     另外,客戶機自已也可以嘗試聯絡其它的DNS伺服器來解析名稱。如果客戶機這麼做,它會使用基於伺服器應答的獨立和附加的查詢,該過程稱作迭代。

     總之,DNS的查詢過程按兩部分進行:首先,名稱查詢從客戶機開始並傳送至解析程式(DNS客戶服務)進行解析;其次,不能就地解析查詢時,可根據需要查詢的DNS伺服器來解析名稱,如下圖:


如查詢過程的初始步驟所示,DNS域名由本機的程式使用。該請求隨後傳送至DNS客戶服務,以通過使用就地快取的資訊進行解析。如果可以解析查詢的名稱,則查詢將被應答,並且此過程完成。其中,本地解析程式的快取可以從以下2個可能的來源獲取名稱資訊:

     1> 如果主機檔案就地配置,則來自該檔案的任何主機名稱到地址的對映都將在DNS客戶服務啟動時預先載入到快取中;

     2> 從以前DNS查詢應答的響應中獲取的資源記錄將被新增至快取並保留一段時間。

     如果此查詢不匹配快取中的專案,則解析過程繼續進行,客戶機查詢DNS伺服器來解析名稱。

     接下來查詢DNS伺服器,當本地的DNS不能就地解析查詢時,可根據需要查詢DNS伺服器來解析名稱,如圖所示。客戶機查詢首選DNS伺服器。在此過程中使用的實際伺服器是從全域性列表中選擇的。當DNS伺服器接收到查詢時,首先檢查它能否根據在伺服器就地配置區域中獲取的資源記錄資訊作出權威性的應答。如果查詢的名稱與本地區域資訊中的相應資源記錄匹配,則伺服器作出權威性的應答,並且使用該資訊來解析查詢的名稱。

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

     如果查詢名稱在首選伺服器中未發現來自快取或區域資訊的匹配應答,則查詢過程繼續進行,使用遞迴來完全解析名稱,包括來自其它DNS伺服器的支援,以幫助解析名稱。在預設情況下,DNS客戶服務要求伺服器在返回應答前使用遞迴過程來代表客戶機完全解析名稱。在大多數情況下,DNS伺服器的預設匹配支援遞迴過程。


     為了使DNS伺服器正確執行,首先需要在DNS域名空間記憶體放其它DNS伺服器的一些有用的聯絡資訊。該資訊以根線索的形式提供,它是記錄初步資源的一個列表,可用來定位一些DNS伺服器,這些伺服器對DNS域名空間樹的根具有絕對控制權。根伺服器對DNS域名空間樹中的根域和頂級域具有絕對控制權。DNS伺服器可通過使用根線索搜尋根伺服器來完成遞迴過程。

     例如,當客戶機查詢單個DNS伺服器時,考慮使用遞迴過程來定位名稱host.example.microsoft.com。此過程在DNS伺服器和客戶機首次啟動,並且沒有可幫助解析名稱查詢的當地快取資訊時進行。

     首先,首選伺服器分析全名並確定對於頂級域com具有絕對控制權的伺服器的位置。隨後,對com DNS伺服器使用迭代查詢,以獲取microsoft.com伺服器的參考資訊。然後參考性應答從microsoft.com伺服器傳送到example.microsoft.com的DNS伺服器。最後,與伺服器example.microsoft.com聯絡上。因為該伺服器包括作為其配置區域一部分的查詢名稱,所以,它向啟動遞迴的源伺服器作出權威性的應答。當源伺服器接收到表明已獲得對請求查詢的權威性應答的響應時,它將此應答轉發給發出請求的客戶機,這樣,遞迴查詢過程就完成了。