理解 DNS 的三種查詢方式

先來簡單介紹下 DNS (Domain Name System) , DNS 是一個協議,準確的說是一個基於 UDP 的應用層協議。主要用途是將一個域名解析成 IP 地址,這個過程叫作域名解析 (Name resolution)瀏覽器

本文主要簡單介紹下 DNS 的三種查詢方式:緩存

  • 遞歸查詢
  • 迭代查詢
  • 非遞歸查詢

咱們把 DNS 查詢看成一個故事的話,一個完整的故事須要有參與的角色和發生的事件 服務器

角色

Client

這裏忽略瀏覽器以及操做系統,client 這裏單純的抽象表示一個請求者網絡

DNS Server

除了發起請求的 Client,DNS 查詢通過的別的節點基本都是 DNS 服務器ide

DNS Resolver

其實 Resolver 也是 DNS 服務器,可是它比較特別,咱們把接受 Recursive Query 的 DNS 服務器稱爲 Resolver。不少 DNS 服務器處於性能考慮,不會接受 Recursive 請求,只接受 Iterative 請求,不能成爲 Resolver性能

ISP (Internet Service Provider)

網絡服務提供商,在中國的話就好比電信,網通等等操作系統

根域名服務器 (Root Name Server)

全球一共 13 臺,負責返回頂級域 (.com 等) 的權威域名服務器地址設計

頂級域名服務器 (Top Level Domain Name Server)

負責返回一級域 (好比 example.com) 的權威域名服務器地址3d

權威域名服務器 (Authoritative Name Server)

負責返回其域名下的 Address 記錄 (A record)code

事件

遞歸查詢 (Recursive query)

遞歸查詢是這麼一種查詢方式,通常發生在 Client 請求 DNS Server。Client 發出一個域名解析的請求,DNS Server 必須返回對應的 IP 地址,或者返回找不到的錯誤。

迭代查詢 (Iterative query)

迭代查詢通常發生在 DNS Server 之間,當 Client 發出域名解析的請求後,DNS Server 須要給予最佳答案,這個最佳答案多是"距離最近"的頂級域名服務器,也能是權威域名服務器。不管如何,Client 須要對返回結果再次發起請求,知道得到最終結果。

非遞歸查詢 (Non-recursive query)

非遞歸查詢發生在 Client 和 DNS Server 之間,指的是,請求的 DNS Server 已經知道答案,直接返回。這裏可能有兩種狀況,一種是 DNS Server 本機緩存了對應的 IP,或者是緩存了對應的域名的權威服務器。第二種狀況只須要再發一次請求,便可拿到結果返回。

故事

image-20190727151903026
小明在 Laptop 的瀏覽器輸入了 example.com,在沒有任何緩存的狀況下,laptop 做爲 Client 向 Router 發出 DNS 遞歸查詢請求,要求 Router 必須返回這個域名的 IP。Router 在什麼都不知道的狀況下,繼續向 ISP 發起對 example.com遞歸查詢,ISP 的 DNS server 在收到請求後,會依次對 Root Name Server,TLD Name Server,Authoritative Name Server 等發起 迭代查詢,最終返回咱們要的結果。

其中根域名服務器會返回頂級域名服務器 (.com) 的 IP 地址,TLD 會返回 example.com 的權威域名服務器的 IP 地址,最後向 example.com 的權威域名服務器發起查詢請求會獲得最終的結果,即example.com 的服務器地址

能夠看到這裏在 Client 到 ISP 之間的 DNS 查詢請求都是遞歸查詢求,而 ISP 從根域名服務器開始的查詢都是迭代查詢。這樣的查詢方式的設計是爲了保證性能,由於遞歸查詢對服務器的壓力要遠大於迭代查詢。

這裏簡單介紹下路由器這個角色,通常來講咱們會使用 DHCP 協議,ISP 會給咱們指定一個 DNS Server 做爲 Resolver。可是由於咱們使用路由器,路由器會攔截這個 DNS Server,同時分配路由器本身的 IP 做爲咱們計算機的 DNS Server。這樣最後結果就是像上面說的,全部的 DNS 請求都經過路由器。固然咱們能夠本身指定計算機的 DNS 服務器,好比 Google 的 8.8.8.8,這樣咱們的 Resolver 就變成的指定的 DNS 服務器,而不會經過路由器。固然最好仍是用路由器,由於路由器會替咱們作緩存。

Ref

相關文章
相關標籤/搜索