本文參考 【圖解TCP/IP】
在前文了解了IP是用于識別某個網路區域的主機,那么平時我們在訪問網站的時候一般都不會輸入IP進行訪問,例如,你訪問百度,一般都輸入:www.baidu.com ,那么你總不會輸入類似 124.23.1.12 這樣的IP進行訪問吧
設身處地想一下,若你想讓用戶記住你的網站,你總不能讓他記一大串數字吧,更何況,以后用到IPv6,需要記憶的數字更多,所以最好的做法就是給這些IP一個名稱,我們稱之為域名,而當我們訪問這些域名的時候,具體訪問哪個IP這件事就要交給DNS去做了,本文也將詳細介紹一下DNS的具體作用程序
- 公眾號:前端印象
- 不定時有送書活動,記得關注~
- 關注后回復對應文字領取:【面試題】、【前端必看電子書】、【資料結構與演算法完整代碼】、【前端技術交流群】
詳解DNS具體作用程序
- 一、域名
- 二、DNS
- 三、結束語
一、域名
文章開頭簡單介紹了什么是域名,那么我們來看看域名到底長什么樣
例如我們常見的 www.baidu.com ,baidu.com 就是百度官網的域名,其中 baidu 是百度申請這個域名時自己起的名字,.com 表示的就是該域名所屬的服務器,這里我們將這種域名稱為頂級域名,也可以叫它一級域名
還有一些域名,例如 example.cn.com 稱之為二級域名 ,example.mail.cn.com 稱之為三級域名 ……
總得來說可以理解為域名中有幾個 . ,就稱之為幾級域名
現在市面上所有的域名都會由某個服務器進行管理的,例如 .com 由 com服務器 管理 、.cn 由 cn服務器 管理
那么這些管理域名的服務器又由一個根(root)服務器來進行管理,所以它們的層級關系就像一個樹結構,如下圖所示:

圖中,com服務器 內有一個 cn 服務器,而 cn服務器 內又管理著一個 mail服務器,這樣的層級關系就可以用于獲取 三級域名 example.mail.cn.com 對應的IP地址了
因此我們可以把該樹結構層次為2的所有結點的域名稱為第一層域名;將層次為3的所有結點的域名稱為第二層域名;層次為4的所有結點的域名稱為第三層域名,以此類推
二、DNS
DNS(Domain Name System)其實是一個管理著域名和IP地址之間的有效關系的系統,相當于一個大型的資料庫
我們的主機通過域名請求某個網頁時,會先向我們設定的DNS服務器發送請求,然后DNS服務器向最近的一個根服務器發送請求,根服務器會將第一層域名服務器的IP訪問地址回傳給DNS服務器,接著DNS服務器會根據這個IP地址去訪問對應的域名服務器,若域名具有多個層級,則域名服務器會接著回傳下一層次域名服務器的IP地址給DNS以便于其深度訪問
我們來看一下訪問 example.mail.cn.com 的簡化程序圖

為了提高效率,DNS服務器還提供了一種技術叫做高速快取,是用于短時存盤已訪問過的域名服務器IP的,因此DNS服務器真正的作用順序不是先向根服務器發送請求,而是先查詢快取中是否有想要獲得的IP地址,若有則直接回傳給我們主機;若沒有則按照上述流程進行請求
假設我們剛才已經請求訪問過 example.mail.cn.com 了,那么此時再次請求該域名對應的網址時,可以從快取中直接讀取真正的IP地址,程序如圖所示:

其實DNS服務器的快取時間不會特別長,因為如果你第一次訪問完后快取了IP,然后此時原IP地址改掉了,那么我們每次訪問的都是舊的IP地址,就會一直報錯,所以快取時間較短就是為了避免這樣的問題
三、結束語
歡迎關注公眾號:前端印象 , 不定時更新前端面試題,與我一起學習前端,早日斬獲大廠Offer
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/198075.html
標籤:java
