




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、DNS協(xié)議報文(RFC1035) DNS報文解析 DNS協(xié)議詳解一、域名和資源記錄的定義1、Name space definitions2、資源記錄定義(RR definitions) 2.1 格式 后面分析報文的時候詳細解釋。 2.2 類型值(TYPE values) 類型主要用在資源記錄中,注意下面的值是QTY
2、PE的一個子集。 類型 值和含義 A 1 a host address &
3、#160; NS 2 an authoritative name server MD 3 a mail destination (Obsolete - use MX)&
4、#160; MF 4 a mail forwarder (Obsolete - use MX) CNAME 5 the canonical na
5、me for an alias SOA 6 marks the start of a zone of authority MB
6、60; 7 a mailbox domain name (EXPERIMENTAL) MG 8 a mail group member (EXPERIMENTAL) MR
7、; 9 a mail rename domain name (EXPERIMENTAL) NULL 10 a null RR (EXPERIMENTAL) WKS
8、60; 11 a well known service description PTR 12 a domain name pointer HINFO
9、0; 13 host information MINFO 14 mailbox or mail list information MX
10、; 15 mail exchange TXT 16 text strings 2.3 查詢類型(QTYPE values)
11、 查詢類型出現(xiàn)在問題字段中,查詢類型是類型的一個超集,所有的類型都是可用的查詢類型,其他查詢類型如下: AXFR 252 A request for a transfer of an entire zone MAILB
12、; 253 A request for mailbox-related records (MB, MG or MR) MAILA 254 A request for mail agent RRs (Obsolete - see MX)
13、60; * 255 A request for all records 2.4 類(CLASS values) IN 1
14、the Internet CS 2 the CSNET class (Obsolete - used only for examples in some obsolete RFCs) CH
15、160; 3 the CHAOS class HS 4 Hesiod Dyer 87 2.5 查詢類(QCLASS values)
16、160; 查詢類是類的一個超集 * 255 any class 3、Standard RRs 3.1 CNAME RDATA format 3.2 HINFO RDATA format 3.3
17、 MB RDATA format (EXPERIMENTAL) 3.4 MD RDATA format (Obsolete) 3.5 MF RDATA format (Obsolete) 3.6 MG RDATA format (EXPERIMENTAL) 3.7 MINFO RDATA format (EXPERIMENTAL) 3.8 MR RDATA format (EXPERIMENTAL)
18、60; 3.9 MX RDATA format 3.10 NULL RDATA format (EXPERIMENTAL) 3.11 NS RDATA format 3.12 PTR RDATA format 3.13 SOA RDATA format 3.14 TXT RDATA format 4、ARPA Internet specific RRs
19、60; 4.1 A RDATA format 4.2 WKS RDATA format5、IN-ADDR.ARPA domain6、Defining new types, classes, and special namespaces二、報文1、報文格式(Format) dns請求和應答都是用相同的報文格式,分成5個段(有的報文段在不同的情況下可能為空),如下: +-+ |
20、0; Header | 報文頭 +-+ | Question | 查詢的問題 +-+ | Answer
21、60; | 應答 +-+ | Authority | 授權應答 +-+ | Additional | 附加信息 +-+ Header段是必須存在的,它定義了
22、報文是請求還是應答,也定義了其他段是否需要存在,以及是標準查詢還是其他。 Question段描述了查詢的問題,包括查詢類型(QTYPE),查詢類(QCLASS),以及查詢的域名(QNAME)。剩下的3個段包含相同的格式:一系列可能為空的資源記錄(RRs)。Answer段包含回答問題的RRs;授權段包含授權域名服務器的RRs;附加段包含和請求相關的,但是不是必須回答的RRs。 1.1 Header的格式 報文頭包含如下字段:
23、0; 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +
24、-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ID
25、; | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |QR| Opcode |AA|TC|RD|RA| Z | RCODE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
26、60; QDCOUNT | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
27、; ANCOUNT | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | &
28、#160; NSCOUNT | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
29、60; ARCOUNT | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ &
30、#160; 各字段分別解釋如下: ID 請求客戶端設置的16位標示,服務器給出應答的時候會帶相同的標示字段回來,這樣請求客戶端就可以區(qū)分不同的請求應答了。 QR 1個比特位用來區(qū)分是請求(0)還是應答(1)。
31、 OPCODE 4個比特位用來設置查詢的種類,應答的時候會帶相同值,可用的值如下: 0 標準查詢 (QUERY)
32、 1 反向查詢 (IQUERY) 2
33、 服務器狀態(tài)查詢 (STATUS) 3-15 保留值,暫時未使用 AA 授權應答(Au
34、thoritative Answer) - 這個比特位在應答的時候才有意義,指出給出應答的服務器是查詢域名的授權解析服務器。 注意因為別名的存在,應答可能存在多個主域名,這個AA位對應請求名,或者應答中的第一個主域名。 TC 截斷(TrunCation) - 用來指
35、出報文比允許的長度還要長,導致被截斷。 RD 期望遞歸(Recursion Desired) - 這個比特位被請求設置,應答的時候使用的相同的值返回。如果設置了RD,就建議域名服務器進行遞歸解析,遞歸查詢的支持是可選的。 RA 支持遞歸(Recursion Available) - 這個比特
36、位在應答中設置或取消,用來代表服務器是否支持遞歸查詢。 Z 保留值,暫時未使用。在所有的請求和應答報文中必須置為0。 RCODE 應答碼(Response code) - 這4個比特位在應答報文中設置,代表的含義如下: &
37、#160; 0 沒有錯誤。 1
38、60; 報文格式錯誤(Format error) - 服務器不能理解請求的報文。 2 服務器失敗(Server failure) - 因為服務器的原因導致沒辦法處理這個請求。
39、60; 3 名字錯誤(Name Error) - 只有對授權域名解析服務器有意義,指出解析的域名不存在。 4
40、 沒有實現(xiàn)(Not Implemented) - 域名服務器不支持查詢類型。 5 拒絕(Refused) - 服務器由于
41、設置的策略拒絕給出應答。比如,服務器不希望對某些請求者給出應答,或者服務器不希望進行某些操作(比如區(qū)域傳送zone transfer)。 6-15 保留值,暫時未使用。 QDCOUNT
42、;無符號16位整數(shù)表示報文請求段中的問題記錄數(shù)。 ANCOUNT 無符號16位整數(shù)表示報文回答段中的回答記錄數(shù)。 NSCOUNT 無符號16位整數(shù)表示報文授權段中的授權記錄數(shù)。 ARCOUNT 無符號16位整數(shù)表示報文附加段中的附加記錄數(shù)。
43、1.2 Question的格式 在大多數(shù)查詢中,Question段包含著問題(question),比如,指定問什么。這個段包含QDCOUNT(usually 1)個問題,每個問題為下面的格式:
44、 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
45、0; | /
46、 QNAME / /
47、160; / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
48、 QTYPE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
49、0; QCLASS | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 字段含義如下
50、160; QNAME 域名被編碼為一些labels序列,每個labels包含一個字節(jié)表示后續(xù)字符串長度,以及這個字符串,以0長度和空字符串來表示域名結束。注意這個字段可能為奇數(shù)字節(jié),不需要進行邊界填充對齊。 QTYPE 2個字節(jié)表示查詢類型,.取值可以為任何可用的類型值,以及通配碼來表示所有的資源記錄。 QCLASS
51、2個字節(jié)表示查詢的協(xié)議類,比如,IN代表Internet。 1.3 資源記錄格式(Resource record) 應答,授權,附加段都共用相同的格式:多個資源記錄,資源記錄的個數(shù)由報文頭段中對應的幾個數(shù)值確定,每個資源記錄格式如下:
52、0; 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
53、160; | /
54、0; / /
55、 NAME / |
56、60; | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | &
57、#160; TYPE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
58、 CLASS | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
59、 | TTL | |
60、160; | +-+-+-+-+-+-+-+-+-+-+-+
61、-+-+-+-+-+ | RDLENGTH | +-+-+-+-+-+-+-+-+-
62、+-+-+-+-+-+-+-| / RDATA /
63、; / /
64、+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 各字段含義如下: NAME 資源記錄包含的域名 TYPE 2個字節(jié)表示資源記錄的類型,指出RDATA數(shù)據(jù)的含義
65、60; CLASS 2個字節(jié)表示RDATA的類 TTL 4字節(jié)無符號整數(shù)表示資源記錄可以緩存的時間。0代表只能被傳輸,但是不能被緩存。 RDLENGTH 2個字節(jié)無符號整數(shù)表示RDATA的長度
66、60; RDATA 不定長字符串來表示記錄,格式根TYPE和CLASS有關。比如,TYPE是A,CLASS 是 IN,那么RDATA就是一個4個字節(jié)的ARPA網絡地址。 1.4 報文壓縮 為了減小報文,域名系統(tǒng)使用一種壓縮方法來消除報文中域名的重復。使用這種方法,后面重復出現(xiàn)的域名或者labels被替換為指向之前出現(xiàn)位置的指針。
67、; 指針占用2個字節(jié),格式如下: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 1 1| OFFSET
68、 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 前兩個比特位都為1。因為lablels限制為不多于63個字節(jié),所以label的前兩位一定為0,這樣就可以讓指針與label進行區(qū)分。(10 和 01 組合保留,以便日后使用) 。偏移值(OFFSET)表示從報文開始的字節(jié)指針。偏移量為0表示ID字段的第一個字節(jié)。
69、 壓縮方法讓報文中的域名成為: - 以0結尾的labels序列 - 一個指針 - 指針結尾的labels序列 指針只能在域名不是特殊格式的時候使用,否則域名服務器或解析器需要知道資源記錄的格式。目前還沒有
70、這種情況,但是以后可能會出現(xiàn)。 如果報文中的域名需要計算長度,并且使用了壓縮算法,那么應該使用壓縮后的長度,而不是壓縮前的長度。 程序可以自由選擇是否使用指針,雖然這回降低報文的容量,而且很容易產生截斷。不過所有的程序都應該能夠理解收到的報文中包含的指針。 比如,一個報文需要使用域名F.ISI.ARPA,F(xiàn)OO.F.ISI.ARPA,ARPA,以
71、及根。忽略報文中的其他字段,應該編碼為: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 20 | 1 | F&
72、#160; | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 22 | 3 |
73、0; I | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 24 | S &
74、#160; | I | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 26 | 4
75、160; | A | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 28 |
76、; R | P | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
77、; 30 | A | 0 |
78、0; +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 40 | 3 |
79、; F | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 42 | O |
80、 O | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 44 | 1 1|
81、 20 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
82、; 64 | 1 1| 26 | +-+-+-+-+-+-+-+-+-+-+-+-+
83、-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 92 | 0 |
84、60; | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 偏移20的是域名F.ISI.ARPA。域名FOO.F.ISI.ARPA偏移40; 這樣表示FOO的label后面跟著一個指向之前F.ISI.ARPA的指針。域名ARPA偏移64,使用一個指針指向F.ISI.ARPA的ARPA。注意可以用這個指針是因為ARP
85、A是從偏移位置20開始的labels序列中的最后一個label。 根域名在位置92定義為一個0,沒有l(wèi)abels。2、傳輸(Transport) DNS假設報文以數(shù)據(jù)報,或者從虛鏈路上以字節(jié)流進行傳輸。虛鏈路可以用來任何的DNS的傳輸,數(shù)據(jù)報可以減少代價提高傳輸性能。區(qū)域刷新必須使用虛鏈路,因為需要一個可靠的傳輸。 因特網中DNS支持端口53的TCPRFC-793和端口53的UDP RFC-768傳輸。 2.1 使用UDP
86、0; 消息通過UDP的53端口進行傳輸。 UDP傳輸?shù)南栏褚笙拗圃?12字節(jié)內(不包括IP和UDP頭)。長報文被截斷,同時置報文頭的TC標志位。 UDP不能用于區(qū)域傳輸,主要用在標準的域名查詢。報文通過UDP可能會丟失,所以重傳機制是需要的,請求和應答可能在網絡中或者服務器處理的時候被重新排序,所以解析客戶端不能依賴請求的發(fā)送順序。
87、0; UDP的最優(yōu)重傳策略會因為網絡的性能,客戶的需要而不同,但是下面是推薦的: - 客戶端在對一臺固定的服務器重試之前,嘗試一下其他的服務器。 - 如果可能的話,重傳的時間間隔需要建立在統(tǒng)計分析數(shù)據(jù)的基礎上,太快的重試可能因為量太大導致服務器響應慢。建議的重試時間為2-5秒。 2.2 使用TCP
88、160; 通過TCP發(fā)送的報文使用53端口,報文的前面有個字節(jié)表示后面報文的長度,長度不包括自己占用的2個字節(jié),這個長度使得底層收取完整的報文后在交給上層處理。 很多連接管理策略如下: - 服務器不能阻塞其他傳輸TCP數(shù)據(jù)的請求。 - 服務器需要支持多連接
89、0; - 服務器要等客戶端主動關閉連接,除非所有的數(shù)據(jù)都已經傳輸完了。 - 如果服務器想關閉沒有通訊的連接來釋放資源,那么需要等待大約2分鐘的時間。特別是要等SOA和AXFR(刷新操作中)在一個連接上傳輸完。服務器關閉連接的時候可以單方面的關閉,或者直接reset掉連接。三、實例1、請求解析. 在linux下使用tcpdump port 53抓包,同時使用dig進行解析測試,得到結果如下: ; (1 server found)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 別墅整體裝修合同范本
- 2025屆高考生物備考教學設計:課時1 降低化學反應活化能的酶
- 高考動員大會講話稿
- 股權用工合同范本
- 水泥合同范本
- Module 10 Unit 2 第一課時教學設計 2024-2025學年外研版八年級英語上冊
- Module 5 Unit1 Can you run fast?(教學設計)-2024-2025學年外研版(三起)英語四年級上冊
- 百尺河小學學校教學工作計劃
- 租雞棚合同范本
- 產品拼裝合同范本
- 《教育強國建設規(guī)劃綱要(2024-2035年)》解讀與專題培訓
- 2025年春新人教版化學九年級下冊課件 第九單元 溶液 1-課題1 溶液及其應用 第1課時 溶液的形成
- 2024-2025學年高中物理第十二章機械波4波的衍射和干涉課時作業(yè)含解析新人教版選修3-4
- 2025年新華師大版數(shù)學七年級下冊全冊導學案
- 安全管理人員七大職責
- 音樂教育國際化進程-洞察分析
- 植入式靜脈給藥裝置護理技術課件
- GB/T 24091-2024適應氣候變化脆弱性、影響和風險評估指南
- 2024年山東工程職業(yè)技術大學單招職業(yè)傾向性測試題庫(500題)含答案解析
- 生活垃圾我知道(課件)二年級下冊勞動
- 每日系列-計算小紙條-3年級下冊
評論
0/150
提交評論