dns是引用層協議,傳輸層用udp,採用「請求-響應」模式。
1.1. 網域名稱結構
網域名稱系統並不像**號碼通訊錄那麼簡單,通訊錄主要是單個個體在使用,同乙個名字出現在不同個體的通訊錄裡並不會出現問題,但網域名稱是群體中所有人都在用的,必須要保持唯一性。為了達到唯一性的目的,網際網路在命名的時候採用了層次結構的命名方法。每乙個網域名稱(本文只討論英文網域名稱)都是乙個標號序列(labels),用字母(a-z,a-z,大小寫等價)、數字(0-9)和連線符(-)組成,標號序列總長度不能超過255個字元,它由點號分割成乙個個的標號(label),每個標號應該在63個字元之內,每個標號都可以看成乙個層次的網域名稱。級別最低的網域名稱寫在左邊,級別最高的網域名稱寫在右邊。網域名稱服務主要是基於udp實現的,伺服器的埠號為53。
比如:本**的網域名稱jocent.me
,由點號分割成了兩個網域名稱jocent
和me
,其中me
是頂級網域名稱(tld,top-level domain),jocent
是二級網域名稱(sld,second level domain)。關於網域名稱的層次結構,請看下面的示意圖。
注意:最開始的網域名稱最後都是帶了點號的,比如jocent.me
擱以前的話應該是jocent.me.
,最後面的點號表示根網域名稱伺服器,後來發現所有的**都要加上最後的點,就簡化了寫法,乾脆所有的都不加,但是你在**後面加上點號也是可以正常解析的。
1.2. 網域名稱伺服器
有網域名稱結構還不行,還需要有乙個東西去解析網域名稱,手機通訊錄是由通訊錄軟體解析的,網域名稱需要由遍及全世界的網域名稱伺服器去解析,網域名稱伺服器實際上就是裝有網域名稱系統的主機。由高向低進行層次劃分,可分為以下幾大類:
1.3. 網域名稱解析過程
網域名稱解析總體可分為兩大步驟,第乙個步驟是本機向本地網域名稱伺服器發出乙個dns請求報文,報文裡攜帶需要查詢的網域名稱;第二個步驟是本地網域名稱伺服器向本機回應乙個dns響應報文,裡面包含網域名稱對應的ip位址。從下面對jocent.me
進行網域名稱解析的報文中可明顯看出這兩大步驟。注意:第二大步驟中採用的是迭代查詢,其實是包含了很多小步驟的,詳情見下面的流程分析。
其具體的流程可描述如下:
主機10.74.36.90先向本地網域名稱伺服器10.74.1.11進行遞迴查詢本地網域名稱伺服器採用迭代查詢,向乙個根網域名稱伺服器進行查詢
本地網域名稱伺服器向頂級網域名稱伺服器dns.me
進行查詢
本地網域名稱伺服器向許可權伺服器dns.jocent.me
進行查詢
許可權伺服器dns.jocent.me
告訴本地網域名稱伺服器所查詢的主機的ip位址
本地網域名稱伺服器最後把查詢結果告訴 10.74.36.90
其中有兩個概念遞迴查詢和迭代查詢,其實在整個描述的過程中已經體現的很明顯,這裡再說明一下:
請求包截圖:
響應包截圖:
可以看到,響應包比請求包多了一部分「answers」,下面詳解每部分的含義:
1. transaction id為標識字段,2位元組,用於辨別dns應答報文是哪個請求報文的響應,這裡id是0x2376
qr(1bit)
查詢/響應標誌,0為查詢,1為響應
opcode(4bit)
0表示標準查詢,1表示反向查詢,2表示伺服器狀態請求
aa(1bit)
表示授權回答
tc(1bit)
表示可截斷的
rd(1bit)
表示期望遞迴
ra(1bit)
表示可用遞迴
rcode(4bit)
表示返回碼,0表示沒有差錯,3表示名字差錯,2表示伺服器錯誤(server failure)
3. quetions(問題數),2位元組,通常為1
4. answer rrs(資源記錄數)
5. authority rrs(授權資源記錄數)
6. additional rrs(額外資源記錄數)通常為0
7. 欄位queries為查詢或者響應的正文部分,分為name type class
name: 一般該欄位表示的就是需要查詢的網域名稱(如果是反向查詢,則為ip)
type:
型別助記符說明1
a由網域名稱獲得ipv4位址2ns
查詢網域名稱伺服器
5cname
查詢規範名稱
6soa
開始授權
11wks
熟知服務
12ptr
把ip位址轉換成網域名稱
13hinfo
主機資訊
15mx
郵件交換
28aaaa
由網域名稱獲得ipv6位址
252axfr
傳送整個區的請求
255any
對所有記錄的請求
class(類): 2位元組, in 表示internet資料,通常為1
8. 可以看到和請求包相比,響應包多出了乙個answers欄位,該欄位載有回答的資訊。
DNS協議解析過程
dns是網域名稱系統 domain name service 的縮寫,我們通常用來識別主機的方式有兩種,一種是通過主機名,另外一種是通過ip位址。主機名便於我們的記憶,而路由器則更喜歡定長的 有著層次結構的ip位址。所以需要乙個能將網域名稱轉變到ip位址的目錄服務,這就是網域名稱伺服器存在的意義。當...
網域名稱解析協議 DNS
網域名稱系統 英語 domain name system,縮寫 dns 是網際網路的一項服務。它作為將網域名稱和ip位址相互對映的乙個分布式資料庫,能夠使人更方便地訪問網際網路。dns使用tcp和udp埠53。當前,對於每一級網域名稱長度的限制是63個字元,網域名稱總長度則不能超過253個字元。早期...
103 應用層協議 DNS網域名稱解析協議
定義 由於使用ip位址難以對應到每個相應的 使用網域名稱相對而言容易記住,但將每個網域名稱與ip的對應關係放在主機內會消耗大量資源,因此,採用dns伺服器儲存,並用dns網域名稱系統轉換得到ip 網域名稱 網際網路採用層次樹狀結構的網域名稱結構 網域名稱的結構由若干個分量組成,各分量之間用 點 隔開...