DNS應答包中的C00C

近日在分析DNS應答包的過程中發現一個有趣的現象——本應該顯示域名的字段中頻繁出現"0xC00C",或者其他以“C0”開頭的兩字節。查協議得知原來這是DNS協議消息壓縮技術,使用偏移指針代替重複的字符串。該指針用兩個8bit表示,具體規定如下:

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    | 1  1|                OFFSET                   |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

最開始的兩個bit必須都爲1,目的是爲了避免混淆。後面的14bit表示字符串在整個DNS消息包中的偏移量。由於DNS應答包中的Answers段出現的域名往往在Queries中已經出現,因此後面只需使用其偏移量表示即可。顯然,Queries中的域名出現的頻率最高,而其中第一個出現的域名偏移量固定爲12字節(00001100),加上最開始的兩個1,那二進制就是

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    | 1 1 | 0  0  0  0  0  0  0  0  0  0  1  1  0  0|
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

即0xC00C。以此類推,因最開始出現的字符串都比較靠前,因此指針大多以“C0”開頭。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章