1. 不壓縮的DNS 域名示例
示例一
3 |
www |
6 |
|
3 |
com |
\0 |
示例二
2 |
ns |
9 |
xinnetdns |
3 |
com |
\0 |
以上數字(綠色背景框)表示計數,佔用一個字節(它的值表示隨後的標識符字節數),接着是標識符,大小爲1~63個字節,最後以字符 ‘\0’ 結尾。
對於MX請求返回的域名,前面2個字節用來標記郵件服務器的preference(優先級),並且對於壓縮的格式也一
樣。
示例三
50 (preference,2字節) |
5 |
tommx |
3 |
163 |
3 |
net |
\0 |
2. 壓縮的DNS域名示例
DNS返回的報文可能包括多個重複的域名,因此使用壓縮方式。
壓縮方法很簡單,當一個域名中的標識符是壓縮的,它的“計數”字節中的最高兩位將被設置爲11。
這表示它是一個16 bit指針而不再是8 bit的計數字節。指針中的剩下14 bit表示該標識符在D N S報
文中所在的位置偏移(相對於DNS報文頭)。注意一個指針可能指向一個完整的域名,也可能只指向
域名的結尾部分,並且一個域名也可以前半部分不壓縮,僅對後半部分才應用指針壓縮。此外嵌套壓縮
也是存在的,即指針指向的域名也可能是壓縮的(包含一個指針)。
另外有兩點需要注意:
(1) 一個域名僅能包含一個指針,要麼只有兩個字節就只包含一個指針,要麼只在結尾部分跟隨一個指針。
(2) 包含指針的域名無須以字符 ‘\0’ 結尾。