Dns数据包内容分析
IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互
聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,
最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解
析)。DNS協議運行在UDP協議之上,使用端口號53。在RFC文檔
中RFC 2181對DNS有規范說明,RFC 2136對DNS的動態更新進行
說明,RFC 2308對DNS查詢的反向緩存進行說明。
一、 域名的命名規則
1、 只能包含的字符
26個英文字母
“0,1,2,3,4,5,6,7,8,9”十個數字
“-”(英文中的連詞號)
2、 字符組合規則
在域名中,不區分英文字母的大小寫
對于一個域名的長度是有一定限制的
域名例子:www.baidu.com
gd.122.gov.cn
www.chinaedu.edu.cn
www.zephyrproject.org
二、 域名請求數據包分析
如下圖為抓取的一個dns請求包:
Dns請求包的內容如下:
2f 1f 01 00 00 01 00 00 00 00 00 00 03 64 77 6e
03 72 6f 6f 02 62 6f 00 00 01 00 01
各個字段內容如下:
Transaction ID: 0x2f1f(2byte)
Flags: 0x0100 (2byte)
Questions: 1 (2byte)
Answer RRs: 0 (2byte)
Authority RRs: 0(2byte)
Additional RRs: 0(2byte)
Queries
Name: dwn.roo.bo (對應03 64 77 6e 03 72 6f 6f 02 62 6f 00)
Type: A (Host Address) (1) (2byte)
Class: IN (0x0001) (2byte)
Dns信息中大部分項的長度都是確定的,唯一就是Queries中Name
的長度是不定的,
Name的編碼如下:Name: dwn.roo.bo (對應03 64 77 6e 03 72
6f 6f 02 62 6f 00)
其中”.”作為分割符,如上面:dwn(對應03 64 77 6e)表示這
一段長度為3,后面就是3個字符碼,后面的各段都是一樣方式,只
是在最后放置00表示結束。
三、 Dns應答數據包分析
如下圖為應答數據包
Dns應答包的內容如下:
2f 1f 81 80 00 01 00 02 00 00 00 00 03 64 77 6e
03 72 6f 6f 02 62 6f 00 00 01 00 01 03 64 77 6e
03 72 6f 6f 02 42 4f 00 00 05 00 01 00 00 01 ef
00 1c 03 64 77 6e 03 72 6f 6f 02 62 6f 01 77 09
61 6c 69 6b 75 6e 6c 75 6e 03 6e 65 74 00 c0 32
00 01 00 01 00 00 01 ef 00 04 70 5a 20 cc
各個字段內容如下:
Domain Name System (response)
Transaction ID: 0x2f1f(2byte)
Flags: 0x8180 (2byte)
Questions: 1(2byte)
Answer RRs: 2(2byte)
Authority RRs: 0(2byte)
Additional RRs: 0(2byte)
Queries
Name: dwn.roo.bo (對應03 64 77 6e 03 72 6f 6f 02 62 6f 00)
Type: A (Host Address) (1)(2byte)
Class: IN (0x0001)(2byte)
Answers
Name: dwn.roo.BO (對應03 64 77 6e 03 72 6f 6f 02 42 4f 00)
Type: CNAME (5) (2byte)
Class: IN (0x0001)(2byte)
Time to live: 495(4byte)
Data length: 28(2byte)
CNAME: dwn.roo.bo.w.alikunlun.net (對應03 64 77 6e 03 72 6f 6f 02 62 6f 01 77 09 61 6c 69 6b 75 6e 6c 75 6e 03 6e 65 74 00)
Name: dwn.roo.bo.w.alikunlun.net (2byte)
Type: A (Host Address) (1) (2byte)
Class: IN (0x0001)(2byte)
Time to live: 495(4byte)
Data length: 4(2byte)
Address: 112.90.32.204(4byte)
上面數據包中各個字段對應關系都是比較明確的。
其中Answers中Name: dwn.roo.BO最后一個段變成大寫了,與
Queries中小寫不同,所以該name需要使用(03 64 77 6e 03 72
6f 6f 02 42 4f 00)表示,若相同,就可以采用指針方式指示,只
需要2byte就夠了。
而Answers中Name: dwn.roo.bo.w.alikunlun.net與CNAME:
dwn.roo.bo.w.alikunlun.net名稱完全相同,可以用指針方式(c0
32)表示Name: dwn.roo.bo.w.alikunlun.net。(c0 32)這兩個
byte中,最高兩bit為11,表示指正方式(非指正方式,最高兩bit
為00),剩下的14bit表示Name所在的位置為從DNS信息開頭的偏
移位置,這里就表示Name在DNS開始偏移0x32的長度位置,如下
面紅色標示的內容即從DNS 0x32位置開始。
2f 1f 81 80 00 01 00 02 00 00 00 00 03 64 77 6e
03 72 6f 6f 02 62 6f 00 00 01 00 01 03 64 77 6e
03 72 6f 6f 02 42 4f 00 00 05 00 01 00 00 01 ef
00 1c
下面就是從0x32位置開始的內容Name。
03 64 77 6e 03 72 6f 6f 02 62 6f 01 77 09
61 6c 69 6b 75 6e 6c 75 6e 03 6e 65 74 00
總結
以上是生活随笔為你收集整理的Dns数据包内容分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中mysql的优化,Java培训
- 下一篇: 如何给LattePanda重装系统