【Linux】 ——DNS域名解析的過程是怎樣的?

一、DNS協議簡介

DNS(Domin Name System)是一種分佈式網絡目錄服務,主要用於域名與IP地址的相互轉換,以及控制因特網的電子郵件的發送。IP地址可以唯一的標記一臺主機,但是全世界的主機IP數不勝數,光靠記憶我們是無法全部記住所有的IP地址,所以用域名系統就可以將難以記憶的數字IP地址與容易記憶的域名建立映射關係。

那這種映射關係其實是保存在一個叫做hosts文件中。最初,通過互聯網信息中心來管理這個文件,如果有一個新的計算機想要介入網絡,或者某個計算機的IP變更都需要到信息中心申請變更host文件。但是這樣太麻煩了,於是就出現了DNS系統。接下來我們瞭解下DNS域名的層次結構

二、域名的層次結構

以下的這個圖片是博主覺得容易理解的域名層次結構(圖侵刪),相信大家應該多少都有了解。
在這裏插入圖片描述
頂級域名是域名的最後一個部分,即就是域名最後一點之後的字母,比如在http://example.com這個域名中,頂級域是.com(或者.COM),大小寫視爲相同。二級域名是域名的倒數第二個部分,在http://example.com中,二級域名是example。以此類推,級別最低的域名也在左邊,級別最高的域名寫在右邊。

三、DNS域名服務器

開頭我們提到原來使用host文件來保存IP地址和域名的映射關係,但是不方便,一個解決辦法是DNS系統,那這裏DNS域名服務器其實就是爲了完成域名解析的任務。由於因特網的域名數量巨大,我們不可能將所有的域名信息都保存在一個域名服務器中,也不能將上述每個節點都採用一個域名服務器。在實際的公網DNS中,域名服務器採用劃分區的方式來管理。

我舉個簡單的例子,如果說我們把域名空間結構中根比作國家,頂級域名比作省級行政單位,二級域名看作是市級單位,三級、四級看作是鎮和鄉,那麼我們很快就能想到管轄國家是的是總理,管轄省級的單位是省長,下面還有市長鎮長等。也就是說域名服務器也是對應的層級結構

所以由高向低進行層次劃分,可分爲這麼幾類:
在這裏插入圖片描述

四、域名解析的全過程

客戶端打開瀏覽器輸入www.baidu.com

  • 此時客戶端電腦便發出一個DNS請求到本地DNS服務器,進行遞歸查詢,本地DNS服務器一般都是你的網絡接入服務商提供,比如中國電信,中國移動。
  • 查詢www.baidu.com的DNS請求到達本地DNS服務器之後,本地服務器會首先查詢它的緩存記錄,如果緩存中由此條記錄,就可以直接返回結果,如果沒有,本地DNS服務器還要向DNS根服務器進行迭代查詢
  • 根DNS服務器沒有記錄具體的域名和IP的對應關係,而是告訴本地DNS服務器,你可以到頂級域名服務器上去查詢,並給出頂級服務器的地址
  • 本地DNS服務器繼續向頂級服務器發出請求,在這個例子中,請求的對象是.com域服務器,.com域服務器收到請求之後,告訴本地服務器所查詢的權限域名服務器的地址
  • 最後,本地域名服務器向權限服務器進行查詢,權限服務器告訴本隊域名服務器所查詢的主機的IP地址。本地DNS服務器不僅要把IP地址返回給客戶電腦,還要把這個對應關係保存在緩存中,以便下次別的用戶查詢時,可以直接返回結果。

4.1 迭代查詢和遞歸查詢
(1)迭代查詢:本地域名服務器向根域名服務器查詢,根域名服務器告訴他下一次應該到哪裏進行查詢,然後它再去查,每次都是自己作爲客戶端不斷去查詢結果
(2)遞歸查詢:本機向本地服務器發出一次查詢請求,就靜待查詢結果,如果本地服務器無法完成解析,那本地服務器就會作爲客戶端向其他服務器查詢,知道找到最終的IP地址。

總的來說迭代查詢自己作爲客戶端親力親爲,不斷向其他服務器查詢,需要查詢很多次。而遞歸查詢自己查詢一次,其他的交給別人查詢,等待別人告訴你查詢結果。

(博主看了很多文章,覺得受益匪淺,本文也是參考了大佬關於DNS的解釋整理出來的,人家思路很清晰,當然我這適合初學者先入個門,其他更有意思的還需要多加學習。有問題的希望指出)

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