DNS深入學習-1
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. 首先感謝他們的辛苦付出。
需要預先知道的概念:
- 什麼是ip地址
- 什麼是(存根)DNS解析器
- 什麼是權威域伺服器(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相牴觸,而是提供一個更容易理解域名系統的入口點。
本系列的主要文件:
- DNS核心
- 存根伺服器與請求
- 權威域伺服器
- 解析器
- tdns:一個從頭開始的DNS庫
- 可選的部分:EDNS,TSIG,動態升級,DNAME,DNS cookie
- 隱私相關:QName最小化,基於TLS的DNS,基於HTTPS的DNS,ENDS填充
- 域名系統安全擴充套件(DNSSEC)
- 非IETF標準:RRL和RPZ
- DNS的特殊部分:沒有過時但是在生產中很少用到
我們從對DNS基礎知識的一般性介紹開始:什麼是資源記錄,什麼是RRSET,什麼是區域,什麼是區域切割,如何佈置資料包。任何希望查詢名稱伺服器或發出有效響應的人都需要閱讀此部分。
然後,我們專門研究當應用程式向解析器傳送問題時能期望得到什麼,或者存根解析器能期望得到什麼。
下一部分是關於權威伺服器應該做什麼。在此基礎上,我們將不那麼詳細地描述解析器如何工作。最後,還有一節介紹可選元素,如EDNS、TSIG、動態更新和DNSSEC。
rfc,尤其是早期的rfc,傾向於描述同時執行授權和解析器功能的伺服器。事實證明,這使得程式碼和故障排除都更加困難。因此,在這些文件中,授權功能和快取功能分別進行了描述。
相關文章
- MySQL深入學習-day1MySql
- DNS學習筆記DNS筆記
- MySQL深入研究--學習總結(1)MySql
- 深入學習golang(1)—陣列與切片Golang陣列
- 深入學習js之——原型和原型鏈#1JS原型
- 深入學習 Redis(1):Redis 記憶體模型Redis記憶體模型
- 深入學習Lock鎖(1)——佇列同步器佇列
- 深入學習分割槽表及分割槽索引(1)索引
- Linux學習 DNS服務LinuxDNS
- 學習筆記 - DNS協議筆記DNS協議
- 深入學習synchronizedsynchronized
- YYCache深入學習
- 深入學習 vueVue
- tomcat深入學習(二)(1) ---- tomcat初始化Tomcat
- 深入學習SpringMVCSpringMVC
- 深入學習Redis(二)Redis
- 深入學習JavaScript物件JavaScript物件
- 深入理解計算機系統-學習筆記 (1)計算機筆記
- 深入學習SpringMVC以及學習總結SpringMVC
- Linux與DNS的學習筆記LinuxDNS筆記
- 《深入解析ATL》學習手札 -- 第一天 (ATL #1) (轉)
- 深入學習和理解 ReduxRedux
- 深入學習 Redis(4):哨兵Redis
- 深入學習Redis(4):哨兵Redis
- 深入淺出redux學習Redux
- 深入理解深度學習深度學習
- 深度學習深入淺出深度學習
- 深入學習golang(2)—channelGolang
- 深入學習golang(5)—介面Golang
- 學習1
- RHEL 5.4 RHCE253 DNS學習筆記DNS筆記
- 【java深入學習第1章】深入探究 MyBatis-Spring 中 SqlSession 的原理與應用JavaMyBatisSpringSQLSession
- 深入學習js之——this#6JS
- 深入學習 es6 class
- 深入學習 Linux 核心模組Linux
- Spring Kafka深入學習分析SpringKafka
- 深入學習Redis(5):叢集Redis
- 深入學習typescript type型別TypeScript型別