DNS报文头说明

头部(大端字节序)

  • 标识ID
    • 数据包编号 通常与应答包一致
  • 标志
    • QR:1为响应 0为查询
    • OPCODE:查询或者响应类型 0为标准查询 1为反向查询 2为服务器状态查询
    • AA:1表示名字服务器是权威服务器(应答包使用)
    • TC:截断标志 1标识数据超过512字节并且被截断
    • RD:1表示客户端希望得到递归回答(查询使用 应答包此值相同)
    • RA:1表示可以得到递归响应(应答包使用)
    • Z:ZERO 0 保留字段
    • RCODE:返回码通常为0和3
      • 0:无错误
      • 1:格式错误
      • 2:问题在域名服务器上
      • 3:域名不存在 域参照问题
      • 4:查询类型不支持
      • 5:DNS拒绝查询 管理上被禁止
  • 问题数
    • 对应数量(我试过把此值设置为2 然后后面附带两个问题区域 尝试一个包同时查询两个域名 谷歌DNS值返回了第一个域名的 而其他DNS直接数据错误)
  • 回答RR数
    • 对应数量
  • 权威RR数
    • 对应数量
  • 附加RR数
    • 对应数量

问题区域(数据包个数应该与上面问题数对应)

问题区域长度并非固定 如上图分为三部分

  • 域名部分
    • 域名部分数据格式为[(长度+数据)...+0] 0表示终止 如上图为查询(test.st233.com)的数据包
  • 查询类型
    • 0x01(A)     :指定计算机 IP 地址。
    • 0x02(NS)    :指定用于命名区域的 DNS 名称服务器。
    • 0x03(MD)    :指定邮件接收站(此类型已经过时了 使用MX代替)
    • 0x04(MF)    :指定邮件中转站(此类型已经过时了 使用MX代替)
    • 0x05(CNAME) :指定用于别名的规范名称
    • 0x06(SOA)   :指定用于 DNS 区域的起始授权机构
    • 0x07(MB)    :指定邮箱域名
    • 0x08(MG)    :指定邮件组成员
    • 0x09(MR)    :指定邮件重命名域名
    • 0x0A(NULL)  :指定空的资源记录
    • 0x0B(WKS)   :描述已知服务
    • 0x0C(PTR)   :如果查询是IP地址 则指定计算机名 否则指定指向其它信息的指针
    • 0x0D(HINFO) :指定计算机CPU以及操作系统类型
    • 0x0E(MINFO) :指定邮箱或邮件列表信息
    • 0x0F(MX)    :指定邮件交换器
    • 0x10(TXT)   :指定文本信息
    • 0x1C(AAAA)  :IPV6资源记录
    • 0x64(UINFO) :指定用户信息
    • 0x65(UID)   :指定用户标识符
    • 0x66(GID)   :指定组名的组标识符
    • 0xFC(AXFR)  :传送整个区域的请求
    • 0xFF(ANY)   :指定所有数据类型
    • 通常为1
    • 0x01(IN)        :指定Internet类别
    • 0x02(CSNET)     :指定CSNET类别(已经过时)
    • 0x03(CHAOS)     :指定CHAOS类别
    • 0x04(HESIOD)    :指定MIT Athena Hesiod类别
    • 0xFF(ANY)       :指定任何以前列出的通配符

回答、权威、附加区域(数据包个数应与上面RR数对应)

  • 域名(两字或者不定长)
    • 记录中资源数据对应的名字 它的格式和查询名字段格式相同 当报文中域名重复出现时 就需要使用2字节的偏移指针来替换 例如 在资源记录中 域名通常是查询问题部分的域名的重复 就需要用指针指向查询问题部分的域名 即2字节的指针 最前面的两个高位是11用于表示是指针 其他14位标识从报文开始处的偏移字节数 一般响应报文中 资源部分的域名都是指针C00C(1100000000001100 12正好是首部区域的长度) 刚好指向请求部分的域名
  • 查询类型
    • 参照上面
    • 参照上面
  • 生存时间
    • 该字段表示资源记录的生命周期() 一般本地解析程序取出记录后决定缓存的时间 极为稳定的信息一般会被分配一个很大的值
  • 数据长度
    • 紧接后面数据部分的长度

下面是对ping www.baidu.com 的一组抓包数据(ping 的时候会进行DNS域名解析)

一个是查询包 一个是应答包 查询包数据如下

应答包数据如下


添加时间:2017-01-09 18:21:13 编辑时间:2017-01-09 18:34:56 阅读:4322 
协议报文头 协议
还没有人留言 要不你来抢一个沙发?
  • 编写评论

      我觉得区分大小写是一个码农的基本素质
[访问统计] 今天:82 总数:262803 提示:未成年人 请在大人陪同下浏览本站内容 还有:世界上最帅的码农 -> 石头 RSS:http://st233.com/rss Powered by -> Crystal_lz