DNS消息格式

1. 简介

+---------------------+
| Header              |
+---------------------+
| Question            | the question for the name server
+---------------------+
| Answer              | RRs answering the question
+---------------------+
| Authority           | RRs pointing toward an authority
+---------------------+
| Additional          | RRs holding additional information
+---------------------+

如上可知,DNS消息主要由五部分组成:

  • Header:消息头是固定的12字节
  • Question:请求部分,变长
  • Answer:响应部分,变长,
  • Authority:指向权威的资源记录,变长
  • Additional:附加信息的资源记录,变长

2. Header

  0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                        ID                     |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR|   Opcode  |AA|TC|RD|RA|    Z   |   RCODE   |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                   QDCOUNT                     |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                   ANCOUNT                     |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                   NSCOUNT                     |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                   ARCOUNT                     |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  • ID:事务标识符
  • QR:0表示请求消息;1表示响应消息
  • Opcode:表示请求的类型
    • 0:标准查询
    • 1:反向查询
    • 2:查询服务器状态
    • 5:更新DNS域请求
  • AA:仅在response中有效。表示响应的域名服务器是否为权威域名服务器。
    • 1:表示权威域名服务器
    • 0:表示非权威域名服务器
  • TC:表示该消息是否被截断。若超过标准长度512字节,则被设置为1,表示消息被截断;否则未被截断
  • RD:是否递归查询
    • 1:表示域名服务器会递归查询域名(如果域名服务器支持递归查询则有效)
  • RA:在响应消息中被设置。1表示域名服务器支持递归查询
  • Z:保留待后续使用
  • RCODE:仅在response中有效,表示response消息类型
    • 0:成功响应
    • 1:请求格式错误,DNS服务器无法解析
    • 2:服务器错误
    • 3:名字错误,仅在权威域名服务器response中有效
    • 4:未实现,服务器不支持
    • 5:拒绝
  • QDCOUNT:表示请求消息的个数
  • ANCOUNT:表示响应消息的个数
  • NSCOUNT:表示权威域名服务器的资源个数
  • ARCOUNT:表示附加信息的个数

3. Question

  0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                                               |
/                    QNAME                      /
/                                               /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    QTYPE                      |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    QCLASS                     |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  • QNAME:请求的域名,变长,通过标签标识DNS名字(具体详情见下一章)
  • QTYPE:表示查询类型,常见请求类型如下:
    • 0x01:A记录
    • 0x02:NS记录
    • 0x05:CNAME记录(别名记录)
    • 0x06:SOA记录
    • 0x0C:PRT记录
    • 0x21:SRV记录
    • 0x26:AAAA记录
  • QCLASS:表示查询类
    • 1:Internet
    • 2:CSNET
    • 3:CHAOS
    • 4:Hesiod

4. Answer

  0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                                               |
/                                               /
/                    NAME                       /
|                                               |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    TYPE                       |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    CLASS                      |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    TTL                        |
|                                               |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    RDLENGTH                   |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
/                    RDATA                      /
/                                               /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  • NAME:DNS名字,变长
  • TYPE:表示响应的类型
    • 0x01:A记录
    • 0x02:NS记录
    • 0x05:CNAME记录(别名记录)
    • 0x06:SOA记录
    • 0x0C:PRT记录
    • 0x21:SRV记录
    • 0x26:AAAA记录
  • CLASS:表示响应类
    • 1:Internet
    • 2:CSNET
    • 3:CHAOS
    • 4:Hesiod
  • TTL:表示该记录被服务器缓存的时间,即生命周期
  • RDLENGTH:表示消息RDATA的长度
  • RDATA:response的内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值