linux網路編程之:DNS報文格式

來源:互聯網
上載者:User

該報文由12位元組的首部和4個長度可變的欄位組成。標識欄位由客戶程式設定並有伺服器返回結果。16bit的標誌欄位 如下:

QR:0表示查詢報文,1表示響應報文
Opcode:通常值為0(標準查詢),其他值為1(反向查詢)和2(伺服器狀態請求)。
AA:表示授權回答(authoritative answer).
TC:表示可截斷的(truncated)
RD:表示期望遞迴
RA:表示可用遞迴
隨後3bit必須為0
Rcode:返回碼,通常為0(沒有差錯)和3(名字差錯)
後面4個16bit欄位說明最後4個變長欄位中包含的條目數。

問題部分:
報文格式:

查詢名為要尋找的名字,它由一個或者多個標示符序列組成。每個標示符已首位元組數的計數值來說明該標示符長度,每個名字以0結束。計數位元組數必須是0~63之間。該欄位無需填充位元組。如:gemini.tuc.noao.edu

每個問題有一個查詢類型,通常查詢類型為A(由名字獲得IP地址)或者PTR(獲得IP地址對應的網域名稱)
資源記錄部分:
報文格式:
DNS最後3個欄位,回答欄位,授權欄位和附加資訊欄位均採用資源記錄RR(ResourceRecord)的相同格式。

網域名稱是記錄中資源資料對應的名字。它的格式和查詢名欄位格式相同。
類型說明RR的類型碼。類通常為1,指I n t e r n e t資料。
存留時間欄位是客戶程式保留該資源記錄的秒數。
資源資料長度說明資源資料的數量。該資料的格式依賴於類型欄位的值。對於類型1(A記錄)資源資料是4位元組的I P地址。

資料包DNS 查詢:(DNS query)
0000  00 19 56 6e19 bf 00 17   a4 1ab2 e0 08 00 45 00 ..Vn.... ......E.
0010  00 3b ed c600 00 80 11   e3 c3 ac 15 0f 04 ac15 .;...... ........
0020  01 f9 04 a9 00 35 00 27   2f bd 3e 3a01 00 00 01 .....5.' /.>:....
0030   00 00 0000 00 00 03 77   77 77 06 67 6f6f 67 6c .......w ww.googl
0040   65 02 636e 00 00 01 00   01                     e.cn.... .   
說明:

前面三段分別為乙太網路包頭,ip包頭和UDP包頭。
從0020行後面開始為DNS資料包.
3e 3a   為識別欄位
01 00為標誌欄位,該欄位設定了TC表示該報文是可截斷的。
00 01  查詢報文數量為1。
00 00 00 00 00 00表示回答,授權和額外資訊都為0。
03 77   77 77 0667 6f 6f 67 6c65 02 63 6e 00 表示查詢的名字為
www.google.com
00 01為類型,1表示A查詢
00 01為類,1表示Internet資料。

資料包 DNS response (DNSresponse)
0000  00 17 a4 1a b2 e0 00 19   56 6e 19 bf 08 00 45 00........ Vn....E.
0010  00 78 48 af00 00 7d 11   8b 9e ac 15 01 f9 ac 15 .xH...}. ........
0020  0f 04 00 35 04 a9 00 64   75 db 3e 3a 81 80 00 01 ...5...d u.>:....
0030   00 03 0000 00 00 03 77   77 77 06 67 6f6f 67 6c .......w ww.googl
0040   65 02 636e 00 00 01 00   01 c00c 00 05 00 01 00e.cn.... ........
0050   00 05 4200 11 02 63 6e   01 6c06 67 6f 6f 67 6c..B...cn .l.googl
0060   65 03 63 6f 6d 00 c0 2b   00 01 00 01 00 00 00 5f e.com..+ ......._
0070   00 04 cbd0 21 65 c0 2b   0001 00 01 00 00 00 5f....!e.+ ......._
0080   00 04 cbd0 21 64                              ....!d         
說明:

前面三段分別為乙太網路包頭,ip包頭和UDP包頭。
3e 3a   為識別欄位
81 80  為標誌欄位,其中設定了QR = 1,RD = 1,RA = 1
00 01  問題數1,0003  回答數3,其餘兩個為0。
03 77   77 77 0667 6f 6f 67 6c65 02 63 6e 00
表示查詢的名字為
www.google.com
00 01為類型,1表示A查詢
00 01為類,1表示Internet資料。
接下來為回答報文,
c0 0c 為網域名稱指標
00 05  表示CNAME(正式名稱)
00 01  類,表示為Internet資料
00 00 05 42  存留時間
00 11  資料長度
02 63 6e   01 6c 06 67 6f 6f67 6c 65 03 63 6f 6d 00 為資料cn.l.google.cn
然後接下來兩段為另外兩個回答。
最後的資料為IP地址

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.