DNS深入學習-1

JakeMa1024發表於2020-12-17

DNS-1 welcome

本系列文章旨在提供對於DNS的正確介紹(截止2018)。原始的RFCs依然是所有標準文字的權威來源,本文件是為了使得此協議更加簡單易懂,同時也保持與RFCs的一致性。

此文件開源並由各位開發者合作完成。github倉庫地址:hello-dns。也歡迎各位加入。

主要貢獻者包括:Michał Kępień, Jan-Piet Mens, Andrew Babichev, Jacob Hoffman-Andrews, Peter van Dijk, Nathan Froyd, Gene McCulley, Charles-Henri Bruyand, jose nazario, Warren Kumari, Patrick Cloke, and Andrew Tunnell-Jones. 首先感謝他們的辛苦付出。

需要預先知道的概念:

  1. 什麼是ip地址
  2. 什麼是(存根)DNS解析器
  3. 什麼是權威域伺服器(Authoritative server)
    [image:DB8033B5-D8DC-44BC-8AE5-EB805C6E0BB0-92027-0000693A81CEDB74/8399ECA3-9B7C-4E0A-BE82-280F0823BE5C.png]

經常有疑問的地方:權威域伺服器儲存DNS資料,解析器在權威域伺服器上查詢資訊,客戶端使用存根解析器在解析器上查詢資訊。本文件針對的是開發人員,但可能對於管理人員也有幫助。

DNS首次在1979年八月在IEN 116中被寫下,作為描述網際網路的一系列檔案的一部分。IEN 116時代的DNS與今日的DNS並不相容。在1983年,RFC 882和883釋出了DNS與今日的有些類似,但還是不能互操作。

DNS在1987年釋出RFC 1034和1035時形成了現代這種形式。儘管1034/1035的大部分內容仍然有效,但這些標準並不容易閱讀,因為它們5是在一個非常不同的時代編寫的。有一百多頁的更新只能在以後的檔案中找到。

文件的主要目標不是與DNS rfc相牴觸,而是提供一個更容易理解域名系統的入口點。

本系列的主要文件:

  1. DNS核心
  2. 存根伺服器與請求
  3. 權威域伺服器
  4. 解析器
  5. tdns:一個從頭開始的DNS庫
  6. 可選的部分:EDNS,TSIG,動態升級,DNAME,DNS cookie
  7. 隱私相關:QName最小化,基於TLS的DNS,基於HTTPS的DNS,ENDS填充
  8. 域名系統安全擴充套件(DNSSEC)
  9. 非IETF標準:RRL和RPZ
  10. DNS的特殊部分:沒有過時但是在生產中很少用到

我們從對DNS基礎知識的一般性介紹開始:什麼是資源記錄,什麼是RRSET,什麼是區域,什麼是區域切割,如何佈置資料包。任何希望查詢名稱伺服器或發出有效響應的人都需要閱讀此部分。

然後,我們專門研究當應用程式向解析器傳送問題時能期望得到什麼,或者存根解析器能期望得到什麼。

下一部分是關於權威伺服器應該做什麼。在此基礎上,我們將不那麼詳細地描述解析器如何工作。最後,還有一節介紹可選元素,如EDNS、TSIG、動態更新和DNSSEC。

rfc,尤其是早期的rfc,傾向於描述同時執行授權和解析器功能的伺服器。事實證明,這使得程式碼和故障排除都更加困難。因此,在這些文件中,授權功能和快取功能分別進行了描述。

相關文章