DNS 工作原理

DNS 瀏覽器 跳槽那些事兒 IMAX028 2019-06-07

DNS 工作原理

域名解析有正向解析和反向解析之說,正向解析就是將域名轉換成對應的 IP

地址的過程,它應用於在瀏覽器地址欄中輸入網站域名時的情形;而反向解析是

將 IP 地址轉換成對應域名的過程,但在訪問網站時無須進行反向解析,即使在

瀏覽器地址欄中輸入的是網站服務器 IP 地址,因為互聯網主機的定位本身就是

通過 IP 地址進行的,只是在同一 IP 地址下映射多個域名時需要。另外反向解析

經常被一些後臺程序使用,用戶看不到。

除了正向、反向解析之外,還有一種稱為"遞歸查詢"的解析。"遞歸查詢"

的基本含義就是在某個DNS服務器上查找不到相應的域名與 IP地址對應關係時,

自動轉到另外一臺 DNS 服務器上進行查詢。通常遞歸到的另一臺 DNS 服務器對

應域的根 DNS 服務器。因為對於提供互聯網域名解析的互聯網服務商,無論從

性能上,還是從安全上來說,都不可能只有一臺 DNS 服務器,而是由一臺或者

兩臺根 DNS 服務器(兩臺根 DNS 服務器通常是鏡像關係),然後再在下面配置

了多臺子 DNS 服務器來均衡負載的(各子 DNS 服務器都是從根 DNS 服務器中

複製查詢信息的),根 DNS 服務器一般不接受用戶的直接查詢,只接受子 DNS

服務器的遞歸查詢,以確保整個域名服務器系統的可用性。

當用戶訪問某網站時,在輸入了網站網址(其實就包括了域名)後,首先就

有一臺首選子 DNS 服務器進行解析,如果在它的域名和 IP 地址映射表中查詢到

相應的網站的 IP 地址,則立即可以訪問,如果在當前子 DNS 服務器上沒有查找

到相應域名所對應的 IP 地址,它就會自動把查詢請求轉到根 DNS 服務器上進行

查詢。如果是相應域名服務商的域名,在根 DNS 服務器中是肯定可以查詢到相

應域名 IP 地址的,如果訪問的不是相應域名服務商域名下的網站,則會把相應

查詢轉到對應域名服務商的域名服務器上。

DNS 服務器性能

在遞歸查詢過程可能需要佔用大量資源,但對於 DNS 服務器來說它仍然具

有一些性能上的優勢。例如,在遞歸過程中,執行遞歸查詢的 DNS 服務器,獲

得有關 DNS 域名空間的信息。該信息由服務器緩存起來並可再次使用,以便提

高使用此信息或與之匹配的後續查詢的應答速度。雖然打開與關閉 DNS 服務時,

這些緩存信息將被清除,但是隨著時間的推移,它們會不斷增加並佔據大量的服

務器內存資源。

DNS 解析過程

DNS 服務器解析的過程如下所示:

第一步:客戶機提出域名解析請求,並將該請求發送給本地的域名服務器。

第二步:當本地的域名服務器收到請求後,就先查詢本地的緩存,如果有該紀

錄項,則本地的域名服務器就直接把查詢的結果返回。

第三步:如果本地的緩存中沒有該紀錄,則本地域名服務器就直接把請求發

給根域名服務器,然後根域名服務器再返回給本地域名服務器一個所查詢域(根的

子域)的主域名服務器的地址。

第四步:本地服務器再向上一步返回的域名服務器發送請求,然後接受請求

的服務器查詢自己的緩存,如果沒有該紀錄,則返回相關的下級的域名服務器的地

址。

第五步:重複第四步,直到找到正確的紀錄。

第六步:本地域名服務器把返回的結果保存到緩存,以備下一次使用,同時還

將結果返回給客戶機。

讓我們舉一個例子來詳細說明解析域名的過程。假設我們的客戶機如果想要

訪問站點:www.linejet.com , 此客戶本地的域名服務器是 dns.company.com ,一

個根域名服務器是 NS.INTER.NET ,所要訪問的網站的域名服務器是

dns.linejet.com,域名解析的過程如下所示:

(1)客戶機發出請求解析域名 www.linejet.com 的報文。

(2)本地的域名服務器收到請求後, 查詢本地緩存, 假設沒有該紀錄, 則本地

域名服務器 dns.company.com則向根域名服務器NS.INTER.NET發出請求解析域

名 www.linejet.com。

(3)根域名服務器 NS.INTER.NET 收到請求後查詢本地記錄得到如下結

果 :linejet.com NS dns.linejet.com (表示 linejet.com 域中的域名服務器為:

dns.linejet.com ), 同時給出 dns.linejet.com 的地址,並將結果返回給域名服務器

dns.company.com。

(4)域名服務器 dns.company.com 收到迴應後 , 再發出請求解析域名

www.linejet.com 的報文。

(5)域名服務器 dns.linejet.com 收到請求後,開始查詢本地的記錄,找到如下

一條記錄:www.linejet.com A 211.120.3.12 (表示 linejet.com 域中域名服務器

dns.linejet.com 的 IP 地址為:211.120.3.12),並將結果返回給客戶本地域名服務

器 dns.company.com。

(6)客戶本地域名服務器將返回的結果保存到本地緩存,同時將結果返回給

客戶機。

DNS:Domain Name System 域名系統

DNS 作用:

將域名解析為 IP 地址

將 IP 地址解析為域名

DNS 查詢類型:

從查詢方式上分

遞歸查詢:客戶端得到結果只能是成功或失敗 (客戶端與本地 DNS 之間的

交互)

迭代查詢:服務器以最佳結果作答 (DNS 服務器之間的交互)

從查詢內容上分

正向查詢:由域名查找 IP 地址

反向查詢:由 IP 地址查找域名

DNS 查詢進程分兩部分進行:

1.名稱查詢從客戶端計算機開始,並傳輸至解析程序即 DNS 客戶端服務程

序進行解析。

2.不能在本地解析查詢時,可根據需要查詢 DNS 服務器來解析名稱。

本地解析程序

該請求隨後傳輸至 DNS 客戶端服務,以便使用本地緩存信息進行解析。

如果可以解析查詢的名稱,則應答該查詢,該進程完成。

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

如果在本地配置主機文件,則來自該文件的任何主機名稱到地址的映射,

在 DNS 客戶端服務啟動時將預先加載到緩存中。

從以前的 DNS 查詢應答的響應中獲取的資源記錄,將被添加至緩存並保留

一段時間。

綜上所述: 客戶端查詢 DNS 的整個過程如下:

本地 host 文件---本地緩緩----DNS 服務器

DNS 服務器的應答:

權威性應答:

肯定應答:

參考性應答:

否定應答:

如果查詢的最終應答太長而不能在一個 UDP 消息數據包中發送和解析,

則 DNS 服務器可以在 TCP 端口 53 上發送故障轉移響應消息,以便在 TCP

連接會話中完全應答客戶端。

(為什麼 DNS 會使用到 TCP53 端口)

默認情況下,在執行遞歸查詢並聯系其他 DNS 服務器時,DNS 服務器使

用若干默認的時間設置。它們是:

3 秒的遞歸重試間隔。這是 DNS 服務在遞歸查詢期間重試查詢之前等候

的時間長度。

15 秒的遞歸超時間隔。這是 DNS 服務在重試的遞歸查詢失敗之前等候的

時間長度。

默認情況下,DNS 服務器使用根提示文件 Cache.dns,該文件存儲在服務

器計算機的 systemroot\System32\Dns 文件夾中。當服務啟動時,該文件的內容

預先加載到服務器存儲區,幷包含運行 DNS 服務器所在的 DNS 命名空間的根

服務器的指針信息。

DNS 高級選項:

禁用遞歸(也禁用轉發器):默認為啟用此項

BIND 輔助區域:

如果區域數據不正確,記載會失敗:

啟用循環:

保護緩存防止汙染:系統為了安全起見,這個設置也是默認被開啟的。

相關推薦

推薦中...