DNS 學習小結

DNS

DNS全稱Domain Name Systems, 用來把域名映射到實際的ip上。html

dns裏面有4種類型的服務器:瀏覽器

  1. Recursive dns server: 負責接收來自client(好比瀏覽器)的請求,而後本身發出一堆請求獲得最後的ip地址返回給client。
  2. Root nameserver: 第一站。全部的域名後面都會帶有.(平時都省略了),知道全部的TLD(好比.com, .net)的地址。
  3. TLD nameserver: 全名Top Level Domain,能夠用來查詢各類host的地址,好比example.com, google.com。
  4. Authoritative nameserver: 查詢的最後一站,返回對應的ip結果。

查找步驟

  1. 瀏覽器緩存: 瀏覽器首先會檢查緩存中有沒有這個域名對應的解析過的IP地址,若是緩存中有,就直接返回。瀏覽器的緩存也有一些限制,好比大小限制和時間限制。緩存時間通常在幾分鐘到幾小時不等,過短了緩存命中率低,太長了容易更新不及時。緩存

  2. 操做系統緩存:若是瀏覽器緩存沒有命中,瀏覽器就會去操做系統中查找dns解析結果,這個解析文件mac裏面放在/etc/host下面,平時改host來作測試就用了這個原理。服務器

  3. LDNS(local dns): 若是都沒命中,那就會找到本地的dns服務器(recursive dns server)。這個服務器通常不會太遠,通常就由移動、電信這種運營商來提供。服務器會緩存上一次的結果來提高效率。若是緩存沒有命中,那就會向Root nameserver發請求。dom

  4. Root nameserver: 返回給LDNS一個所查詢的主域名服務器(gTLD Server)地址。gTLD是國際頂級域名服務器,如.com、.cn、.org等,全球只有13臺左右測試

  5. LDNS:拿到Root nameserver返回的結果,向下一級TLD查找。google

  6. TLD nameserver:返回對應的Authoritative nameserver的地址,這個服務器一般就是用戶註冊的域名服務器,例如用戶在某個域名服務提供商申請的域名,那麼這個域名解析任務就由這個域名提供商的服務器來完成操作系統

  7. LDNS: 拿到TLD nameserver返回的結果,向下一級Authoritative nameserver查找。.net

  8. Authoritative nameserver:查詢存儲的域名和IP的映射關係表,在正常狀況下都根據域名獲得目標IP地址,連同一個TTL值一塊兒返回code

  9. LDNS:緩存這個域名和IP的對應關係,緩存時間由TTL值控制, 並把結果返回給client。

DNS服務器上記錄的類型

dns服務器上可能存在有6種不一樣類型的記錄:

  1. A(address): 返回域名指向的IP地址
  2. CNAME(Canonical Name Record): 返回另外一個域名,有點像redirect,好比 在www.example.com的dns服務器裏放一個 指向 example.com的cname。那每次查詢www.example.com最終都會返回example.com的ip。
  3. NS(Name Server): 與該域名相關的name server。該記錄只能設置爲域名,不能設置爲IP地址。
  4. MX(Mail eXchange): 返回接收電子郵件的服務器地址
  5. PTR(Pointer Record): 只用於從IP地址查詢域名
  6. TXT(Text records): 拿來存放字符串
  7. SOA(singular Start of Authority): 放在域名最頂層,拿來存放域名的一些信息,好比其主要的name server是啥。(???)

參考文獻

  1. Why a domain’s root can’t be a CNAME — and other tidbits about the DNS

  2. What is a DNS server

  3. What Is the Difference between Authoritative and Recursive DNS Nameservers?

  4. DNS及CDN解析

  5. DNS 原理入門

相關文章
相關標籤/搜索