DNS消息包含三種類型:服務器
請求和響應在原始標準中定義,更新在RFC 2136中定義。code
DNS通用消息格式以下:server
DNS消息頭包含如下字段:blog
字段名稱 | 描述 |
---|---|
Transaction ID | 16比特,標識一次DNS交互。由請求端生成,響應端返回,用於將響應報文對應到請求報文 |
Flags: | 16比特,包含各類標記,標記定義以下: |
Request/response | 1比特,爲0時表示請求,爲1時表示響應 |
Operation code | 4比特,表示操做碼,0x0表示查詢 |
Authoritative answer | 1比特,表示響應者是域名的權威名字服務器 |
Truncation | 截斷標誌位,1比特,爲1時表示響應超過512字節,已被截斷 |
Recursion desired | 1比特,表示遞歸查詢 |
Recursion available | 1比特,爲1時表示響應值能夠處理遞歸查詢 |
Reserved | 3比特,保留字段,爲0 |
Return code | 4比特,返回碼。0表示成功響應,0x3表示域名錯誤,域名在權威名字服務器上不存在 |
Question Resource Record count | 16比特,表示問題個數 |
Answer Resource Record count | 16比特,表示回答個數 |
Authority Resource Record count | 16比特,表示權威資源記錄個數 |
Additional Resource Record count | 16比特,表示額外資源記錄個數 |
該字段表示查詢的域名,包含如下三個字段:遞歸
回答、受權、額外信息字段均採用資源記錄(Resource Record)格式,定義以下:資源
字段名稱 | 描述 |
---|---|
Resource Record Name | DNS域名,其格式與問題字段中的查詢名相同,可是爲了節省數據,若是以前出現了相同的名字,則此處的值爲以前相同名字相對報文中DNS起始數據的位置。如問題的查詢名爲www.baidu.com,回答字段中的資源記錄名字與之相同,所以其值爲0xc0 0x0c(0xc0表示引用,0x0c表示查詢名相對DNS起始數據的位置是12) |
Resource Record Type | 16比特,資源記錄類型,與問題字段中查詢類型相同 |
Resource Record Class | 16比特,資源記錄類(IN: 0x0001) |
Time-to-Live | 32比特,TTL |
Resource Data Length | 16比特,資源數據長度 |
Resource Data | 資源數據 |