1. 程式人生 > >深入理解DNS(域名系統)

深入理解DNS(域名系統)

  1. 何為DNS
    DNS,全稱Domain Name System,即域名系統。
    幹啥的?實現主機名和IP地址的轉換,將容易記憶的主機名轉換成主機IP地址。

  2. DNS的歷史
    起初,在早期的ARPANET時代,使用一個簡單的文字檔案來記錄所有的計算機名和他們的IP地址,這個檔案就是我們熟知的hosts.txt。並且,每天晚上所有主機都要從一個維護檔案的站點獲取新版本的檔案。後來,這個檔案變得越來越大,且頻繁出現主機名衝突。在1983年,人們發明了域名系統

  3. DNS的名字空間
    - 命名層次的頂級有一個專門的組織負責管理,這個組織就是ICANN(Internet 名字與數字地址分配機構)。
    - Internet被劃分超過250個頂級域名,頂級域名又可以進一步劃分,即出現多級域名。
    - 頂級域名分為兩類:通用的 和 國家或地區的
    - 域名不區分大小寫

    ,edu、EDU、eDu的解析結果是一樣的。
    - 各部分域名不超過63個字元,總的域名不超過255個字元。

  4. 域名伺服器

    • 提供名字的解析
    • 域名解析是分散式的資料庫系統,由區域管理員來劃分邊界,每個區域有自己的DNS伺服器。
    • 一臺域名伺服器必須管理所有以他為字尾的域名。並且要知道如何找到根伺服器下一層的伺服器

      域名伺服器的例子

      這裡每個圓圈是一個區域,每個區域有一個域名伺服器。.yale.edu的域名伺服器,管理著所有以.yale.edu結尾的域名。即.yale.edu的域名伺服器必須知道,.cs.yale.edu的域名伺服器的地址。而且,他必須知道根伺服器地址(這個在域名解析過程詳細介紹)。*

  5. 域名資源記錄

    • 資源記錄的組成
      domain_name time_to_live class type value
    • time_to_live指明該記錄的儲存時間。
    • class,對於Internet資訊,總是IN。
    • type指出記錄欄位的型別
    SOA:提供管理者的Email地址等
    A記錄: 將域名指向一個IPv4地址(例如:8.8.8.8CNAME:將域名指向另一個域名(例如www.qcloud.comMX: 將域名指向郵件伺服器地址
    TXT: 可任意填寫,長度限制255,通常做SPF記錄(反垃圾郵件)
    NS: 域名伺服器記錄,將子域名指定其他DNS伺服器解析
    AAAA:將域名指向一個iPv6
    地址(例如:ff06:0:0:0:0:0:0:c3SRV:記錄提供特定服務的伺服器(例如_xmpp-server._tcp) 顯性URL:將域名301重定向到另一個地址 隱性URL:類似顯性URL,但是會隱藏真實目標地址
  6. 域名的解析過程

    • 通過UDP來進行請求和應答。

      域名解析過程

    第一步,找根伺服器查詢cs.sjtu.edu.cn,根伺服器返回cn伺服器的地址(為啥子?因為在根伺服器中只記錄了頂級域名的記錄,看到地址中的頂級域名為cn,根伺服器只能說“我只知道cn伺服器在哪裡,你再去找cn的伺服器吧“)。
    第二步,本地伺服器找cn伺服器查詢cs.sjtu.edu.cn,cn伺服器返回edu.cn的地址。
    第三步,第四步……最終,從管理cs.sjtu.edu.cn的sjtu.edu.cn處獲得cs.sjtu.edu.cn的地址。

    • 權威記錄和快取記錄:權威記錄,查詢top.cs.vu.nl時,若是從cs.vu.nl伺服器上取得,那麼他就是權威記錄。若是從本機快取中取得,那麼他就是快取記錄。
  7. 兩項重要的技術
    複製:每個根伺服器複製成許多份,存於世界各地,實際使用時,找物理上最近的伺服器。
    快取:每個伺服器都儲存一個域名快取,當查詢一個新的伺服器時,DNS會將它放到存緩中。