DNS解析順序是怎樣的?

youbingke發表於2022-10-20

很多網站管理人員大概都瞭解域名解析的原理和過程,但是對於一些細節問題可能不太清楚,比如當客戶端對域名發起請求時,具體的解析順序是什麼樣的?下面中科三方針對這個問題做下簡單介紹。

1.DNS的作用

在網際網路中,其實沒有類似於這樣的域名方式,計算機識別的是純數字的IP地址,如222.222.222.222,比如我們知道一個網站的IP地址,直接輸入訪問絕對是能開啟的。

但現在網站成千上萬,如果我們只能透過IP地址訪問,這得需要我們花很大力氣去記住這些繁瑣和相似的數字,所以域名就作為一種更簡便的定址方式出現了。

那為什麼會有DNS呢?因為域名是給人使用的,計算機只能識別IP地址,所以需要DNS作為橋樑將域名翻譯成IP地址。這樣就能保證我們透過域名也能到達對應的伺服器地址了。

我們平時工作時會發現,有時候會出現能夠登陸qq、微信,但是卻打不開網頁的情況,其中大部分原因都是DNS伺服器故障造成的。因為網站需要透過DNS伺服器查詢解析結果,使用者根據這個結果才能透過域名去訪問,但是qq、微信等聊天軟體,採用的是UDP傳輸協議,即不可靠傳輸協議,無需DNS伺服器地址,也能登陸,所以才會出現上面的情況。

DNS解析過程

當客戶端對域名發起訪問時,會將解析請求傳送給遞迴解析伺服器,遞迴伺服器會代替客戶端進行全球遞迴查詢。

首先遞迴伺服器會請求根域名伺服器,根域名伺服器根據域名字尾,告知對應的頂級域名伺服器;遞迴伺服器再向頂級伺服器發起請求,頂級域名伺服器告知對應的權威伺服器;遞迴伺服器向權威伺服器發起請求,權威伺服器告知解析結果;遞迴伺服器將結果告知客戶端,客戶端完成訪問。

DNS快取

以上是DNS解析的標準流程,但是由於各種DNS快取的存在,導致DNS解析環節更為複雜。

所謂DNS快取是指DNS返回正確的IP地址之後,系統會將這個結果臨時儲存起來,併為快取設定一個失效時間(TTL值),在TTL失效前,當再次訪問這個網站,系統就會直接從DNS 快取中將結果返回,而不必再次委託遞迴伺服器進行全球解析查詢,加快了DNS解析的流程。

當然TTL值失效後,系統還會自動再次詢問DNS伺服器以獲取最新的解析結果。

DNS快取分類

(1)瀏覽器DNS快取:瀏覽器會根據一定頻率快取DNS記錄;

(2)本地DNS快取:如果瀏覽器快取中找不到解析記錄,就會去詢問作業系統中的快取;

(3)本地HOSTS檔案:HOSTS是記錄域名與IP地址一一對映關係的本地檔案,Windows系統中位於C:\Windows\System32\drivers\etc;

(4)路由器DNS快取:我們常用的路由器也帶有自動快取功能,路由器DNS被篡改會造成域名劫持,將訪問網址定位到另外一個伺服器;

(5)遞迴伺服器快取:遞迴伺服器在將解析結果告知客戶端的同時,將記錄快取下來,當下次請求同一個域名時,直接會將記錄返回,而無需再進行全球查詢。

DNS解析順序

DNS解析順序是“先查快取,再遞迴解析”,查詢順序為:瀏覽器快取—系統快取—路由器快取—遞迴伺服器快取—遞迴查詢。

我們以這個域名為例進行查詢,具體流程如下:

(1)搜尋瀏覽器自帶的DNS快取

當收到訪問請求後,瀏覽器首先會查詢瀏覽器自身的DNS快取,這個快取時間比較短(chrome://net-internals/#dns 這裡可以查詢快取的dns記錄),且只能容納 1000條快取,如果快取中有對應條目,返回結果,解析到此結束。

(2)查詢作業系統快取和hosts本地檔案

如果瀏覽器快取中沒有找到對應條目(ipconfig /displaydns可以檢視),作業系統也會有一個域名解析的過程,瀏覽器會先搜尋作業系統的DNS快取中是否有這個域名解析記錄,如果有返回結果,解析結束。

此外,電腦本地檔案HOSTS中可以設定域名到IP地址的指向關係。如果HOSTS檔案中儲存有該域名的記錄,瀏覽器會首先使用這個IP地址,並將其結果快取下來,快取時間同樣受域名失效時間和快取空間大小決定。

(3)查詢路由器快取

如果瀏覽器和作業系統中沒有域名解析記錄,就會查詢路由器中的DNS快取,如果路由器DNS快取中有解析條目,直接返回結果,解析結束。

(4)遞迴解析伺服器快取

如果本機和路由器DNS快取中沒有該域名的解析記錄,瀏覽器就會向遞迴伺服器發起請求,如果遞迴伺服器快取有該域名解析條目,返回結果,解析結束。

(5)查詢根域名伺服器

如果遞迴伺服器快取中沒有結果,就會委託遞迴伺服器發起全球查詢,首先遞迴伺服器會向根域名伺服器發起解析請求。根域名伺服器告知.com頂級域名伺服器地址。

(6)查詢頂級域名伺服器

遞迴伺服器向.com頂級域名伺服器發起DNS請求,.com頂級伺服器告知example.com所屬權威域名伺服器地址。

(7)查詢權威域名伺服器

遞迴伺服器向example.com的權威域名伺服器地址發起請求,權威伺服器告知所對應的IP地址。

(8)返回解析結果

得到的IP地址後,遞迴伺服器將結果告知客戶端,客戶端對該IP地址發起訪問。整個DNS解析流程到此結束。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69996004/viewspace-2919442/,如需轉載,請註明出處,否則將追究法律責任。

相關文章