【網絡協議】DNS域名解析的詳細過程

1 問題來源

今天同事因爲連接不上網絡,疫情期間,公司IT又不方便聯繫,所以請我幫看看原因。問題排查倒是挺簡單,用同事電腦在命令行出窗口輸入ping 220.181.38.149(該IP訪問的是百度首頁網址),可以收到正常響應。但是ping www.baidu.com的時候就返回timeout,明明是同一個網址,ping的結果卻大不相同。並且在地址欄輸入220.181.38.149可以正常訪問百度首頁,但是www.baidu.com卻提示無法連接。到這裏,問題已經很顯然了,IP訪問毫無問題,域名一敲就涼涼,這顯然是域名到IP這一步出了問題,也就是DNS域名解析出錯。
在這個排查的過程,腦海中回想了用戶通過域名請求到拿到請求地址的內容的整個流程,發現了對於DNS域名解析尚有模糊的地方,於是決定寫下博客以作記錄。

2 DNS基本概念

DNS是Domain Name System的縮寫,就是域名系統。DNS協議則是用來實現域名和IP地址的相互轉換IP地址是面向主機的,而域名則是面向用戶的
實際上在電腦操作系統中的hosts文件就有記錄域名和IP的一一對應關係。在早期的域名解析中,如果有一個新的計算機想接入網絡,或者某個計算IP變更都需要到信息中心申請變更hosts文件。其他計算機也需要定期更新,才能上網。
但是這樣太麻煩了,所以就出現了DNS系統。

2.1 域的劃分

以www.baidu.com爲例,實際上com後面還有“.”,只是習慣問題給省略了,這個“.”就是根域。根域服務器只是具有13個IP地址,但機器數量卻不是13臺,因爲這些IP地址藉助了任播的技術,所以我們可以在全球設立這些IP的鏡像站點,你訪問到的這個IP並不是唯一的那臺主機。這裏的com就是頂級域名,baidu是二級域名。

2.2 域名服務器的分類

域名是分層結構,域名服務器也是對應的層級結構。如下表所示。
表2-1 域名服務器的分類

名稱 作用
根域名服務器 最高層次的域名服務器,本地域名服務器解析不了的域名就會向其求助
頂級域名服務器 負責管理在該頂級域名服務器下注冊的二級域名
權限域名服務器 負責一個區的域名解析工作
本地域名服務器 當一個主機發出DNS查詢請求時,這個查詢請求首先發給本地域名服務器

3 DNS域名解析全過程

例如,當用戶在地址欄請求www.baidu.com時,實際上經歷了以下過程:
1、瀏覽器先檢查自身緩存中有沒有被解析過的這個域名對應的IP地址,如果有,解析結束。同時域名被緩存的時間也可通過TTL(Time To Live)屬性來設置。

2、如果在瀏覽器緩存中沒有命中,瀏覽器會檢查操作系統緩存中有沒有對應的已解析過的結果。而操作系統也有一個域名解析的過程。在Windows中可通過C盤裏的hosts文件來設置,如果你在這裏指定了一個域名對應的ip地址,那瀏覽器會首先使用這個ip地址。但是這種操作系統級別的域名解析規程也被很多黑客利用,通過修改你的hosts文件裏的內容把特定的域名解析到他指定的IP地址上,造成所謂的域名劫持。所以在windows7中將hosts文件設置成了readonly,防止被惡意篡改。

3、如果至此還沒有命中域名,纔會真正的請求本地域名服務器(LDNS)來解析這個域名,這臺服務器一般在你所在的城市,並且這臺服務器一般都會緩存域名解析結果,大約80%的域名解析到這裏就完成了。

4、 如果LDNS仍然沒有命中,就直接跳到**根域名服務器(Root Server)**請求解析。

5、根域名服務器返回給LDNS一個所查詢域的頂級域名服務器(gTLD Server,Generic top-level domain Server,如.com .cn .org等)地址。

6、此時LDNS再發送請求給上一步返回的gTLD。

7、接受請求的gTLD查找並返回這個域名對應的Name Server的地址,這個Name Server就是網站註冊的域名服務器。

8、 Name Server根據映射關係表找到目標IP,返回給LDNS。

9、LDNS緩存這個域名和對應的IP。

10、LDNS把解析的結果返回給用戶,用戶根據TTL值緩存到本地系統緩存中,域名解析過程至此結束。

小結

在域名解析過程中涉及到了遞歸查詢和迭代查詢;
(1)遞歸查詢:本機向本地域名服務器發出一次查詢請求,就靜待最終的結果。如果本地域名服務器無法解析,自己會以DNS客戶機的身份向其它域名服務器查詢,直到得到最終的IP地址告訴本機。
(2)迭代查詢:本地域名服務器向根域名服務器查詢,根域名服務器告訴它下一步到哪裏去查詢,然後它再去查,每次它都是以客戶機的身份去各個服務器查詢。

技術是開源的,知識是共享的。

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