Wireshark-DNS数据报分析

Posted 彼岸之音

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Wireshark-DNS数据报分析相关的知识,希望对你有一定的参考价值。

DNS:域名系统

  DNS是一种用于internet上提供IP地址和域名相互映射的分布式服务系统。可以通过IP地址获取相应的域名,也可以通过域名获取IP,这样可以不用记住难记的IP。
  我们实际网络中的DNS服务是由网络运营商提供的。大多数地区都有相应的域名服务器。114.114.114.114是一个公共的DNS服务器,任何地方都可以通过这个服务器获取DNS服务。
  域名是通过.来区分不同级的,其中最后一级为顶级域名如:com,edu,org等等。域名的分配是通过授权机构来完成的。
  cmd中可以通过nslookup查询本地dns服务器IP,linux中一般应用host可以进行域名和IP的解析。

DNS:DNS报文格式

  DNS是一个应用层协议,基于TCP/IP传输,一般的DNS报文传输层是UDP报文。下面是DNS报文的格式:
  
技术分享

DNS报文由12字节长的首部和4个长度可变的字段组成。

标识字段:由客户程序设置并由服务器返回结果。客户程序通过它来确定响应与查询是否匹配。(可以视为报文ID)
标志字段:定义各种标志位。
问题数、资源记录数、授权资源记录数和额外资源记录数记录各数目。

DNS查询报文中的问题部分

技术分享

查询名是要查找的名字,它是一个或多个标识符的序列。每个标识符以首字节的计数值
来说明随后标识符的字节长度,每个名字以最后字节为 0结束,长度为0的标识符是根标识符。实际的存储结构由下图所示:

技术分享

每个问题有一个查询类型,每一个响应也有一个类型。这个类型表明需要进行的服务类型,一般为A(IP地址查询)。

查询类通常是1,指互联网地址。

DNS响应报文中的资源记录部分

DNS报文中最后的三个字段,回答字段、授权字段和附加信息字段,均采用一种称为资源记录RR( Resource Record)的相同格式。

技术分享

  域名是记录中资源数据对应的名字。它的格式和前面介绍的查询名字段格式相同。
  
  类型说明RR的类型码。它的值和前面介绍的查询类型值是一样的。类通常为1,指Internet数据。
  
  生存时间字段是客户程序保留该资源记录的秒数。资源记录通常的生存时间值为 2天。

  资源数据长度说明资源数据的数量。该数据的格式依赖于类型字段的值。对于类型 1( A记录)资源数据是4字节的IP地址。

更多详细结构参考:http://blog.chinaunix.net/uid-24875436-id-3088461.html
或:tcp/ip详解卷1-DNS域名系统。

下面通过wireshark抓取DNS数据包来实际了解DNS的数据结构,这里分析获取百度IP的DNS查询和响应数据包。

技术分享

图中的Transaction ID就是标识号,说明返回的相应帧号为1526,查询数据报和对应的响应数据报的标识号是一样的。再来看看实际的数据

技术分享

下面是响应报文:

技术分享

可以看到这里Transaction ID和上面的是一样的。这里作为响应,除了问题数据段外,还有回答数据段。都一一对应于上面介绍的DNS资源记录格式。














以上是关于Wireshark-DNS数据报分析的主要内容,如果未能解决你的问题,请参考以下文章

IP数据报分析

2017-2018-2 20179317 卿爽 《网络攻防技术》第十周作业

lvs实现分析

每周阅读清单-百度开源深度学习框架Geoffrey Hinton提出Capsule计划

HTTP概念&协议报文结构&请求响应数据报分析

分析udp数据报_深入的理解UDP编程