DNS解析原理

我來烤烤你發表於2020-12-27

DNS解析


Client 
--> 本地hosts檔案 
--> Client DNS Service Local Cache 
--> DNS Server recursion (遞迴) 
--> DNS Server Cache 
--> DNS iteration (迭代) 
--> 根域
--> 頂級域名DNS
--> 二級域名DNS...

在這裡插入圖片描述

常規流程簡述

  1. 客戶端首先查詢本機 /etc/hosts檔案,若無匹配進入下一步
  2. 客戶端向本地DNS伺服器(nameserver)發起查詢請求,若無匹配的快取則進入下一步(遞迴)
  3. 本地DNS伺服器中儲存了根域DNS伺服器的資訊,訊息轉發給根域DNS伺服器(開始迭代)
  4. 根域查詢不到,但根據域名結構可以判斷這個域名屬於 com 域(例),因此根域DNS伺服器會返回它所管理的 com域中的DNS伺服器的 IP地址
  5. 本地DNS伺服器又會向 com 域的DNS伺服器傳送查詢訊息,獲得下級域資訊
  6. 同理再向下一級DNS伺服器轉發,若無匹配,獲得下級域資訊再次發起查詢
  7. 以此類推,就可以順藤摸瓜找到目標 DNS伺服器

迭代與遞迴

遞迴查詢

  • 一般客戶機和本地DNS伺服器之間屬於遞迴查詢
  • 當客戶機向DNS伺服器發出請求後,若DNS伺服器本身不能解析,則會向另外的DNS伺服器發出查詢請求,得到最終的肯定或否定的結果之後轉交給客戶機
  • 此查詢的源和目標保持不變,為了查詢結果客戶端只需要發起一次查詢

迭代查詢

  • 一般情況下本地的DNS伺服器向其它DNS伺服器的查詢屬於迭代查詢
  • 若對方不能返回權威的結果,則它會(參考前一個DNS伺服器返回的結果)向下一個DNS伺服器再次發起進行查詢,直到返回查詢的結果為止
  • 此查詢的源不變,但查詢的目標不斷變化,為查詢結果一般需要發起多次查詢

智慧DNS之CDN服務

是基於DNS解析方式實現 Global Server Load Balance(全域性負載均衡)的一種方式

在這裡插入圖片描述

工作原理

  1. 使用者向瀏覽器輸入www.a.com這個域名,首先傳送到本地DNS服務,若無快取,則傳送到根域伺服器
  2. 通過根域迭代查詢,找到權威DNS伺服器,發現解析記錄是CNAME,指向了www.a.tbcdn.com
  3. www.a.tbcdn.com是CDN網路中的智慧DNS負載均衡系統
  4. 智慧DNS根據本地nameserver的地址就近分配,將對使用者響應速度最快的IP節點返回給使用者
  5. 使用者向返回的 IP節點發出請求,此節點即為CDN服務服務商提供的伺服器
  6. CDN伺服器會通過內部節點專用DNS解析得到此域名的真正IP(源web站點IP)
  7. 將解析結果返回本地nameserver,實現訪問

注:第6步中,若所有CDN節點都沒有解析記錄,也能自動去源網站進行解析再返回,此情況極少

相關文章