詳解 DNS 解析


背景

  • 前面講了域名、IP,那么還缺少一個主角,就是 DNS
  • 這些都是網絡中最最最基礎的,也是最最最重要的概念,很有必要深入學習下
  • 所有素材均來自:https://www.bilibili.com/video/BV1Gh411y7LS?t=10,這個 up 聲音好聽,動畫很贊,言簡意賅,值得一看

 

如何打開一個網站?

  • 比如你打開上面我發的鏈接,就是打開一個網站
  • 雖然訪問的是一個域名,但瀏覽器最終實際訪問的是這個域名背后對應的 IP 地址,然后再訪問這個 IP 地址背后的服務器來打開網站

 

提問

那瀏覽器是怎么知道不同域名背后都是對應哪個 IP 地址呢?答案就是我們今天要講的主角 DNS

 

Domain Name System 域名系統

DNS 到底干嘛用的?

  • DNS 可以理解為是一種機制,它可以管理世界上所有域名和 IP ,它依靠的就是 DNS 服務器
  • 在互聯網中,有很多 DNS 服務器,如何高效查詢和管理域名、IP 是需要好好研究一下的 

 

DNS 的工作原理

分層協作

之前域名篇講過域名層級

  • www:二級域名
  • bilibili:一級域名
  • com:頂級域名

其實還有一個根域名,因為有且僅有它一個,所以寫了等於沒寫一樣

所以訪問  www.bilibili.com、www.bilibili.com.root、www.bilibili.com.  效果是一樣的,可以自己試一試

 

DNS 解析的詳細過程

  1. 瀏覽器輸入 www.bilibili.com,敲回車
  2. 瀏覽器會先查找本地的 DNS 緩存,如果有對應的記錄, 就可以直接拿到域名對應的 IP 地址,然后就可以直接訪問對應的服務器
  3. 假設緩存中找不到,就會先在本地的 hosts 文件中查找相應的域名和 IP 地址是否存在
  4. 假設 hosts 文件中也找不到,那么瀏覽器就會把查詢請求發送到本地電腦網絡設置中的 DNS 服務器上,一般是自動設置好的,自動設置的 DNS 地址一般是管理 wifi 路由器的 IP 地址;當然也可以手動設置,比如常見的 Google DNS 服務器 8.8.8.8
  5. 向這台 DNS 服務器發起查詢 www.bilibili.com 對應的 IP 地址的請求,每台聯網的設備都會有一台指定的 DNS 服務器
  6. 而這台 DNS 服務器會負責完整的查詢過程(其實這台 DNS 服務器就是 Local DNS Server,下面內容會詳細講到)
  7. 先從 DNS 服務器們的根 DNS 服務器(Root DNS server)開始查詢,這個 RDNS 只記錄 com、org、net 等頂級域名的 DNS 服務器的 IP 地址信息,所以它收到查詢請求之后,只會看你這個域名的頂級域名是什么
  8. 當前頂級域名是 com,RDNS 就會返回管理 com 頂級域名的 DNS 服務器的 ip 地址信息
  9. 然后 LDNS 收到 RDNS 返回的信息之后,就會找到負責管理 com 頂級域名的 DNS 服務器(Top Level Server),它收到查詢請求之后,就會識別到你需要查的一級域名是 bilibili.com
  10. TDNS 就會返回管理 bilibili.com 的 DNS 服務器的 IP 地址信息
  11. LDNS 收到 TDNS 返回的信息之后,又會找到管理 bilibili.com 的 DNS 服務器(稱為 Name Server),它就會返回 www.bilibili.com 的 IP 地址給 LDNS
  12. LDNS 收到最終的 IP 地址之后會返回給瀏覽器
  13. 瀏覽器收到 IP 地址之后就會訪問對應的服務器
  14. 服務器會返回對應的響應內容給到瀏覽器,瀏覽器再進行渲染顯示

 

域名層級

 

Local DNS Server

通過一個實際生活的栗子來講解

轉發 DNS 查詢請求

  • 瀏覽器訪問 www.bilibili.ocm,發起 DNS 查詢請求
  • 假設本地 DNS 緩存沒找到,hosts 文件中也沒有,那么瀏覽器就會發送 DNS 請求,請求會先經過家里的路由器
  • 路由器收到 DNS 查詢請求后,會轉發給光喵(寬帶盒子)
  • 光喵再轉發給運營商 DNS 服務器
  • 重點:電信、移動、聯通都有很多 DNS 服務器,不同的 DNS 服務器會負責各自區域內的聯網設備的 DNS  請求的查詢

 

Local DNS Server(LDNS)

  • LDNS 收到聯網設備的 DNS 查詢請求后
  • LDNS 會現在自己服務器本地查詢有沒有對應的記錄
  • 如果之前已經有設備通過這台 LDNS 服務器查詢過 www.bilibili.com 這個域名對應的 IP 地址,那么是會有緩存的,這樣可以直接返回相應的 IP 地址
  • 如果它在服務器緩存中沒有找到 www.bilibili.com 的 IP 信息
  • 那么 LDNS 就會開始依次查詢 Root DNS、Top DNS、Name Server(上面說到的流程)
  • 最后拿到 www.bilibili.com 的 IP地址,返回給瀏覽器

 

為什么寬帶運營商的 DNS 服務器會知道 RDNS 的 IP地址呢?

  • 因為 RDNS 全球只有 13 台,基本是固定不變的
  • 所以在所有 DNS 服務器中,他們的信息都是內置的

 

重點

  • 除了 RDNS 已知有 13 台之外,TDNS 和 Name Server 的數量都是不固定的
  • 當 LDNS 發起查詢請求的時候,哪台 DNS 服務器先返回信息,就用哪台

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM