DNS消息格式

消息類型

DNS消息包含三種類型:服務器

  • 請求
  • 響應
  • 更新

請求和響應在原始標準中定義,更新在RFC 2136中定義。code

DNS通用消息格式

DNS通用消息格式以下:server

DNS消息頭

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比特,表示額外資源記錄個數

問題字段

該字段表示查詢的域名,包含如下三個字段:遞歸

  • Question Name:查詢名,由一組labels組成,爲length-value格式,1字節表示長度,尾隨數據(即label)。例如對於域名www.baidu.com,表示爲0x03www0x05baidu0x03com,其中十六進制數表示長度。
  • Question Type:16比特,表示查詢類型,有如下類型:
    • 0x01 Host (A) record
    • 0x02 Name server (NS) record
    • 0x05 Alias (CNAME) record
    • 0x0C Reverse-lookup (PTR) record
    • 0x0F Mail exchange (MX) record
    • 0x21 Service (SRV) record
    • 0xFB Incremental zone transfer (IXFR) record
    • 0xFC Standard zone transfer (AXFR) record
    • 0xFF All records
  • Question Class:表示查詢類

DNS資源記錄

回答、受權、額外信息字段均採用資源記錄(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 資源數據
相關文章
相關標籤/搜索