DNS(一)DNS基礎


一、 什么是DNS?
DNS 是域名系統 (Domain Name System) 的縮寫,是因特網的一項核心服務,它作為可以將域名和IP地址相互映射的一個分布式數據庫,能夠使人更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。

二、 域名的層級
DNS 的分布式數據庫是以域名為索引的,每個域名實際上就是一棵很大的逆向樹中路徑,這棵逆向樹稱為域名空間(domain name space)。如圖所示樹的最大深度不得超過127 層,樹中每個節點都有一個可以長達63 個字符的文本標號。
樹的最頂層是根域名,一般使用 . 來表示。

 

 

三、 DNS的分類
1、 主DNS服務器:就是一台存儲着原始資料的DNS服務器。
2、 從DNS服務器:使用自動更新方式從主DNS服務器同步數據的DNS服務器。也成輔助DNS服務器。
3、 緩存服務器:不負責本地解析,采用遞歸方式轉發客戶機查詢請求,並返回結果給客戶機的DNS服務器。同時緩存查詢回來的結果,也叫遞歸服務器。
4、 轉發器:這台DNS發現非本機負責的查詢請求時,不再向根域發起請求,而是直接轉發給指定的一台或者多台服務器。自身並不緩存查詢結果。

四、 DNS域名的解析過程

 

 

首先,客戶端先在本地緩存查找有沒有域名緩存,如果沒有,客戶端發出DNS請求翻譯IP地址或主機名。DNS服務器在收到客戶機的請求后:
(1)檢查DNS服務器的緩存,若查到請求的地址或名字,即向客戶機發出應答信息;
(2)若沒有查到,則在數據庫中查找,若查到請求的地址或名字,即向客戶機發出應答信息;
(3)若沒有查到,則將請求發給根域DNS服務器,並依序從根域查找頂級域,由頂級查找二級域,二級域查找三級,直至找到要解析的地址或名字,即向客戶機所在網絡的DNS服務器發出應答信息,DNS服務器收到應答后現在緩存中存儲,然后,將解析結果發給客戶機。
(4)若沒有找到,則返回錯誤信息。

遞歸查詢
是指DNS服務器在收到用戶發起的請求時,必須向用戶返回一個准確的查詢結果。如果DNS服務器本地沒有存儲與之對應的信息,則該服務器需要詢問其他服務器,並將返回的查詢結構提交給用戶。

迭代查詢
是指DNS服務器在收到用戶發起的請求時,並不直接回復查詢結果,而是告訴另一台DNS服務器的地址,用戶再向這台DNS服務器提交請求,這樣依次反復,直到返回查詢結果。

五、 dig命令跟蹤域名解析
# dig +trace www.baidu.com

1、 查詢根服務器
根域名服務器,全球有13組,負責返回頂級域的權威域名服務器地址。

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> +trace www.baidu.com
;; global options: +cmd
.                       754     IN      NS      h.root-servers.net.
.                       754     IN      NS      g.root-servers.net.
.                       754     IN      NS      c.root-servers.net.
.                       754     IN      NS      m.root-servers.net.
.                       754     IN      NS      k.root-servers.net.
.                       754     IN      NS      l.root-servers.net.
.                       754     IN      NS      i.root-servers.net.
.                       754     IN      NS      a.root-servers.net.
.                       754     IN      NS      j.root-servers.net.
.                       754     IN      NS      f.root-servers.net.
.                       754     IN      NS      d.root-servers.net.
.                       754     IN      NS      b.root-servers.net.
.                       754     IN      NS      e.root-servers.net.
;; Received 239 bytes from 10.31.0.18#53(10.31.0.18) in 0 ms

2、查詢頂級域名服務器
通過查詢頂級域名服務器,獲取權威DNS服務器

com.                    172800  IN      NS      g.gtld-servers.net.
com.                    172800  IN      NS      i.gtld-servers.net.
com.                    172800  IN      NS      a.gtld-servers.net.
com.                    172800  IN      NS      m.gtld-servers.net.
com.                    172800  IN      NS      f.gtld-servers.net.
com.                    172800  IN      NS      j.gtld-servers.net.
com.                    172800  IN      NS      l.gtld-servers.net.
com.                    172800  IN      NS      k.gtld-servers.net.
com.                    172800  IN      NS      e.gtld-servers.net.
com.                    172800  IN      NS      b.gtld-servers.net.
com.                    172800  IN      NS      h.gtld-servers.net.
com.                    172800  IN      NS      c.gtld-servers.net.
com.                    172800  IN      NS      d.gtld-servers.net.
com.                    86400   IN      DS      30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.                    86400   IN      RRSIG   DS 8 1 86400 20201009170000 20200926160000 46594 . Ncf1dZ8eF6fcsAbRycpXGyJqWESFHsf776rkecUlcXXXAjq71qyJtN2g 5XuqZdn4tHb4JYnH1SOf36P2Gq6NwLa1Q0EtM36I5xPRI9OxBKyF/wzu /pkSqngmKWuWbUYJ9o4BHhuxgHutrgouzZ628qCzOC+78uWg/dK5EOGm 2t1iH8b74sFPd3LtydptuYcAJ3MrhFGvsyespLTAdaOEF63j6LwDCUSs MMDIKnNx+46uuxUmq2K9gQlV2Eq/q1vTkQ7+TgdJhea5K4idHgPD1Vyq wm7SCtHIk0Mq3Hu+0PZW8JXilnc6TS2RaZ9bqLGplcuxuiW3uegTjVIb UzSIrg==
;; Received 1173 bytes from 202.12.27.33#53(m.root-servers.net) in 63 ms

3、 查詢baidu.com的權威服務器

baidu.com.              172800  IN      NS      ns2.baidu.com.
baidu.com.              172800  IN      NS      ns3.baidu.com.
baidu.com.              172800  IN      NS      ns4.baidu.com.
baidu.com.              172800  IN      NS      ns1.baidu.com.
baidu.com.              172800  IN      NS      ns7.baidu.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20200930044209 20200923033209 24966 com. xChJAuWE/feHPvOG0a2fHr1qGnFCaOWXM3/MAltsC/PS/IXbtuzmgIJZ brsIJCOQZpYusZkbSOJXatbHbUWvqwPrdq8jCKBTWwoSzQZSNWAryJ9u ydKMVHxQmJoUxaiaT8UStYCLRu4bYQj6h19mELbwNwg1QNTLfO65dfvF aMyhkIJ7DkTAWDppKtouPwJ+5JkTrxry+KwJTgNfChF6Ow==
HPVUSBDNI26UDNIV6R0SV14GC3KGR4JP.com. 86400 IN NSEC3 1 1 0 - HPVVMRO7OPIUUS1A7GJE2R6L39VL43TL NS DS RRSIG
HPVUSBDNI26UDNIV6R0SV14GC3KGR4JP.com. 86400 IN RRSIG NSEC3 8 2 86400 20201002230005 20200925215005 24966 com. bssYJp0q5Gv07/bUbJQxpCErTiS01VRrxxiiw5gc4BuyT+L2RnpWrHq5 JmLvWDiIXXzMB8iCwMMwNRFnlQHJ3ilAu/ZjoBwYcbeOCAREgm3r3eJI KAOlZvB1mZqStcHTbcRM5KwQ1rwuaJxsSjVrjfK08zp8+1/y88RFbeU1 Ib7BFOFBCRs491LRnQ3Y3YSrVCgKQQ2o0edh4D9OHfIT/g==
;; Received 761 bytes from 192.26.92.30#53(c.gtld-servers.net) in 223 ms

4、最終返回www.baidu.com的解析記錄

www.baidu.com.          1200    IN      CNAME   www.a.shifen.com.
a.shifen.com.           1200    IN      NS      ns3.a.shifen.com.
a.shifen.com.           1200    IN      NS      ns5.a.shifen.com.
a.shifen.com.           1200    IN      NS      ns2.a.shifen.com.
a.shifen.com.           1200    IN      NS      ns1.a.shifen.com.
a.shifen.com.           1200    IN      NS      ns4.a.shifen.com.
;; Received 239 bytes from 180.76.76.92#53(ns7.baidu.com) in 3 ms

六、 膠水記錄
我們先看下www.baidu.com的解析過程
1、 如果想要獲取www.baidu.com的 IP 地址,就需要訪問.com頂級域名服務器g.gtld-servers.net.
2、 如果想要獲取g.gtld-servers.net.的 IP 地址,就需要訪問net.頂級域名服務器g.gtld-servers.net.
3、 如果想要獲取g.gtld-servers.net.的 IP 地址,就需要訪問.net頂級域名服務器g.gtld-servers.net.

這樣就陷入一個循環以來。
為了解決這一個問題,我們引入了膠水記錄(Glue Record)這一概念,也就是在出現循環依賴時,直接在上一級作用域返回 DNS 服務器的 IP 地址:

# dig +trace +additional www.baidu.com
com.                    172800  IN      NS      i.gtld-servers.net.
com.                    172800  IN      NS      e.gtld-servers.net.
com.                    172800  IN      NS      j.gtld-servers.net.
com.                    172800  IN      NS      d.gtld-servers.net.
com.                    172800  IN      NS      b.gtld-servers.net.
com.                    172800  IN      NS      g.gtld-servers.net.
com.                    172800  IN      NS      c.gtld-servers.net.
com.                    172800  IN      NS      m.gtld-servers.net.
com.                    172800  IN      NS      f.gtld-servers.net.
com.                    172800  IN      NS      h.gtld-servers.net.
com.                    172800  IN      NS      l.gtld-servers.net.
com.                    172800  IN      NS      a.gtld-servers.net.
com.                    172800  IN      NS      k.gtld-servers.net.
com.                    86400   IN      DS      30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.                    86400   IN      RRSIG   DS 8 1 86400 20201009170000 20200926160000 46594 . Ncf1dZ8eF6fcsAbRycpXGyJqWESFHsf776rkecUlcXXXAjq71qyJtN2g 5XuqZdn4tHb4JYnH1SOf36P2Gq6NwLa1Q0EtM36I5xPRI9OxBKyF/wzu /pkSqngmKWuWbUYJ9o4BHhuxgHutrgouzZ628qCzOC+78uWg/dK5EOGm 2t1iH8b74sFPd3LtydptuYcAJ3MrhFGvsyespLTAdaOEF63j6LwDCUSs MMDIKnNx+46uuxUmq2K9gQlV2Eq/q1vTkQ7+TgdJhea5K4idHgPD1Vyq wm7SCtHIk0Mq3Hu+0PZW8JXilnc6TS2RaZ9bqLGplcuxuiW3uegTjVIb UzSIrg==
a.gtld-servers.net.     172800  IN      A       192.5.6.30
b.gtld-servers.net.     172800  IN      A       192.33.14.30
c.gtld-servers.net.     172800  IN      A       192.26.92.30
d.gtld-servers.net.     172800  IN      A       192.31.80.30
e.gtld-servers.net.     172800  IN      A       192.12.94.30
f.gtld-servers.net.     172800  IN      A       192.35.51.30
g.gtld-servers.net.     172800  IN      A       192.42.93.30
h.gtld-servers.net.     172800  IN      A       192.54.112.30
i.gtld-servers.net.     172800  IN      A       192.43.172.30
j.gtld-servers.net.     172800  IN      A       192.48.79.30
k.gtld-servers.net.     172800  IN      A       192.52.178.30

七、 DNS中的記錄類型
1、 A記錄,IPV4主機地址
2、 AAAA記錄:IPV6主機地址
3、 PTR記錄:解析IP的指針,反向記錄
4、 CNAME記錄:別名記錄
5、 NS記錄:域的授權名稱服務器
6、 MX記錄:域的郵件交換器,要跟着一個優先級值,越小越高
7、 SOA:可以理解為一段為自己dns做備注說明的文本,一般與ns一致

八、 DNS命名規范
1、 26個英文字母
2、 “0,1,2,3,4,5,6,7,8,9”十個數字
3、 “-”(英文中的連詞號)
4、 最多63字節長度

九、 DNS使用的協議
1、 UDP協議
域名解析時,使用UDP協議
2、 TCP協議
1) 主從DNS服務器之間同步數據
2) 當返回報文超過4096字節的大小時,協議的TC標志出現刪除標志,這時則使用TCP發送。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM