2012-03-25 43 views
4

我一直在尋找Wireshark中的DNS響應數據包,並且無法理解答案和權威部分的十六進制編碼。DNS響應答案和權威部分

考慮DNS查詢:mail.abcd.com

答案部分包含名稱字段,併爲這個十六進制編碼的不同而不同:

0xc00c 
0xc012 

他們都導致整個名稱爲在外地居住。

權威部分還包含名稱字段,但十六進制編碼,這通常是:

0xc010 

這導致abcd.com被填充在外地。

任何人都可以告訴填充這些字段的慣例是什麼,因爲它很混亂。

感謝

+0

希望有用:http://www.zoneedit.com/doc/rfc/ – sarnold 2012-03-25 23:51:24

回答

8

DNS標籤使用格式<length><data ...>

一個標籤最多可以有63個字節長,因此<length>字段有兩位剩餘。這些用於編碼標籤類型。

如果開頭兩個比特是0b11然後其餘六個比特,而不是用下面的字節形式的壓縮指針這是DNS有效載荷內的偏移量到另一個標籤的現有實例合併。

由於DNS協議標頭長度爲12個字節,所以最短合法偏移量爲12個字節,給出您在上面看到的值0xc00c。我們可以構造一個指向頭部的壓縮指針,但它並不嚴格符合協議。] []

我強烈建議針對試圖從wire數據包反向設計規範 - 您將不可避免地錯過東西。只需要閱讀RFC 1035 - 所有核心內容都在那裏。

+0

但是如果一個實現不符合標準呢?那可能嗎? – Utku 2015-11-14 15:18:36

+0

這是可能的,但接收器應該將它視爲格式錯誤的響應 – Alnitak 2015-11-15 02:21:27

3

說明書中的閱讀上name compression。 0xc,0x12和0x10是指向包中名稱「mail.abcd.com」和「abcd.com」的較早副本的指針。