目录

  • 预备知识
    • 什么是DNS
    • DNS的系统结构
    • DNS系统解析过程
    • DNS问题类型
  • 实验目的
  • 实验环境
  • 实验步骤一
  • 实验步骤二

预备知识

什么是DNS

DNS是域名系统(Domain Name System)的缩写,域名系统实际上就是为了解决IP地址的记忆难而诞生的,在互联网上域名与IP地址之间是一对一或者多对一的,如果要记住所有的IP地址,显然不太容易。虽然域名便于人们记忆,但主机之间只能相互认识IP地址,所有它们之间的转换就需要DNS来完成。
DNS用于TCP/IP网络,它所提供的服务就是用来将主机名和域名解决为IP地址。DNS就是这样的一位“翻译官”,它的基本工作原理如下图:

DNS的系统结构

在整个互联网中,如果将数以亿计主机的域名和IP地址对应关系交给一台DNS服务器管理,并处理整个互联网中客户机的域名解析请求,恐怕很难找到能够承受如此巨大负载的服务器,即便能够找到,查询域名的效率也会非常低。因此,互联网中的域名系统采用了分布式的数据库方式,将不同范围内的域名IP地址对应关系交给不同的DNS服务器管理。这个分布式数据库采用树状结构,全世界的域名系统具有唯一的“根”,如下图所示:

包含主机名及其所在的域名的完整地址又称为FQDN(Full Qualified Domain,完全限定域名)地址,或称为全域名。例如新浪网站服务器的地址“www.sina.com.cn”,其中“www”表示服务器的主机名(大多数的网站服务器都使用该名称),“sina.com.cn”表示该主机所属的DNS域。该地址中涉及多个不同的DNS及其服务器。简单介绍如下:
“.”根域名服务器,是所有主机域名解析的源头,地址中最后的“.”通常被省略。
“.cn”域名服务器,负责所有以“cn”结尾的域名的解析,“.cn”域是处于根域名之下的顶级域。
“.com.cn”域服务器,负责所有以“com.cn”结尾的域名的解析,“.com.cn”域是“.cn”域的子域。
“.sina.com.cn”域服务器,由新浪公司负责维护,提供“.sina.com.cn”域中所有主机的域名解析,如www.sina.com.cn,mail.sina.com.cn等,“.sina.com.cn”域是“.com.cn”域的子域。
从上面的DNS层次结构中可以看出,对于互联网中每个主机域名的解析,并不需要涉及太多的DNS服务器就能完成。通常客户端主机中只需要指定1~3个DNS服务器地址,就可以通过递归或迭代的查询方式获知想要访问的域名对应的IP地址。

DNS系统解析过程

DNS服务采用服务器/客户端(C/S)方式工作。当客户端程序要通过一个主机名称访问网络中的一台主机时,它首先要得到这个主机名称所对应的IP地址。因为IP数据报中允许放置的是目的主机的IP地址,而不是主机名称。可以从本机的hosts文件中得到主机名称所对应的IP地址,但如果hosts文件不能解析该主机名称,则只能通过向客户机所设定的DNS服务器进行查询了。下面以www.sina.com.cn域名为例讲解DNS系统解析的过程,如下图:

在上图中,显示了DNS服务的解析过程,同时也体现出了它的构成。DNS服务由客户机、域名服务器和web服务器构成了一个简单的网络环境。DNS名称解析的过程如下:
(1)DNS客户机向本地域名服务器发送了一个查询,请求查找域名www.sina.com.cn的IP。本地域名服务器查找自己保持的记录中,看能否找到这个被请求的IP地址。如果本地域名服务器中有这个地址,则将此地址返回给DNS客户机。
(2)如果本地域名服务器中没有这个地址,则发起查找地址的过程。本地域名服务器发送请求给根域名服务器,询问www.sina.com.cn的相关地址。根域名服务器无法提供这个地址,但是会将域cn的名称服务器的地址返回给本地域名服务器。
(3)本地域名服务器再向cn域名服务器发送查询地址请求。cn域服务器无法提供这个地址,就将.com.cn域服务器地址发送给本地域名服务器。
(4)本地域名服务器再向.com.cn域服务器发送查询地址请求。com.cn域服务器无法提供这个地,就将sina.com.cn域名服务器地址发给本地域名服务器。
(5)本地域名服务器再向sina.com.cn发送查询地址请求。sina.com.cn找到了www.sina.com.cn的地址。就将这个地址发送给本地域名服务器。
(6)本地域名服务器将这个地址发给DNS客户机。
(7)DNS客户机发起与主机www.sina.com.cn的链接。
以上就是DNS域名解析的过程,在该解析过程中通常会用到两种查询方式,分别是递归查询和迭代查询。下面分别介绍这两种查询方式:
1.递归查询:
主机向本地域名服务器的查询采取此方法。如果主机所询问的本地域名服务器不指定所查询域名的IP地址,那么本地域名服务器就以DNS客户机的身份,向其他根域名服务器继续发出查询请求报文。
2.迭代查询:
本地域名服务器向根域名服务器的查询采取迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器“下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。

DNS问题类型

DNS查询和响应中所使用的类型域,指明了这个查询或者响应的资源记录类型。常用的消息资源记录类型如下表所示:

实验目的

1.熟悉并掌握Wireshark的基本操作。
2.加深对常用网络协议的理解,提高就业机会。
3.培养学生理论联系实践的研究兴趣。

实验环境


测试者:windows系统,IP地址:10.1.1.142
设计者比较懒,实验环境比较粗糙,并且使用了非常规的方法来实现DNS的数据包抓取(合天的实验环境不允许连接网络,所以不能通过网页打开网址来抓取,阿弥陀佛)不过协议的数据是一样的,并且设计者也通过联网的机器获取了一份登录www.baidu.com的Wireshark抓包,请学习者自行分析对比。

实验步骤一

根据实验环境,本实验的步骤如下:
1.测试环境中获取DNS数据包。
2.分析DNS数据包。
任务描述:获取两种类型的DNS数据包。
(1)通过浏览器访问域名(www.baidu.com)来获取DNS数据:
虽然合天实验室环境下,无法抓取此部分数据包(其实也可以自己搭建服务器,配置DNS服务器,但设计者比较懒,就将就下吧),但设计者希望学习的人能根据例子在自己的笔记本上抓取,然后分析。
我们以登录www.baidu.com来获取DNS数据,启动Wireshark,在Filter中输入dns。打开浏览器,访问www.baidu.com,截图如下:

此抓包文件,设计者会沟通合天,放在实验机中,方便学生学习和对比下面的方法的不同。注意分析时请求和响应的帧号,比如帧号1284和帧号1338是一个完整的数据包。
(2)通过ping未知域名(www.hetianlabdns.com)来获取DNS数据:
与上面常用的方法相比,下面的方法比较另类,并且响应的数据中,缺少域名对应的IP(因为我们ping的域名,就没有对应的ip,哈哈哈哈哈)。
启动Wireshark,过滤条件选择dns。打开命令行窗口,ping上面的域名,截图如下:

因为这个域名,是设计师虚构出来的,没有对应的IP,所以ping命令返回了提示。但这不影响我们获取到了DNS的数据包,按照之前讲解的DNS解析流程,这个请求域名在com域名后没有被找到,就返回给本地域名服务器,在由本地域名服务器告知DNS客户机。
其产生的相应数据包如下:

下面实验,我们来分析分析数据包。也希望学习者能自己分析下baidu的数据包,其与ping产生的,有一点点不同。

实验步骤二

任务描述:分析DNS数据包。
DNS只有两种报文,分别是查询报文和响应报文。他们的报文格式相同,如下:
(1)DNS报文格式。

下面我们解释一下字段含义,方便下面的分析。
DNS ID号(DNS ID Number):用来对于DNS查询和DNS响应。
查询/响应(Query/Response,QR):用来指明这个报文是DNS查询还是响应,占1个比特位。如果是1,表示响应。如果是0,表示查询。
操作代码(OpCode):用来定义消息中请求的类型,占4个比特位。
权威应答(Authoritative Answer,AA):如果响应报文中设定了这个值,则说明这个响应是由域内权威域名服务器发出的,占1个比特位。
截断(Truncation,TC):用来指明这个响应由于时间太长,无法接入报文而被截断。该标志位占1个比特位,当该标志位值为1时,表示响应已经超过512字节并以被截断。
期望递归(Recursion Desired,RD):当请求中设定了这个值,则说明DNS客户端在目标域名服务器不含有所请求信息的情况下,要求进行递归查询。该标志位占1个比特位。
可用递归(Recursion Available,RA):当响应中设定这个值,说明域名服务器支持递归查询,占1个比特位。
保留(Z):在RFC1035的规定中全被设为0,但有时会被用来作为RCode域的扩展,占3比特位。
响应代码(Response Code):在DNS响应中用来指明错误,占4个比特位。该字段的值通常为0和3,可取的值以及含义如下:
1)0表示没有错误。
2)1表示格式错误。
3)2表示在域名服务器上存在问题。
4)3表示域参数问题。
5)4表示查询类型不支持。
6)5表示在管理上被禁止。
7)6~15表示保留。
问题计数(Question Count):在问题区段中的条目数。
问答计数(Answer Count):在回答区段中的条目数。
域名服务器计数(Name Server Count):在权威区段的域名资源记录数。
额外记录计数(Additional Records Count):在额外信息区段中的其他资源记录数。
问题区段(Question section):大小可变,包含有被发送到DNS服务器的一条或多条信息查询的部分。
回答区域(Answer section):大小可变,含有用来回答查询的一条或多条资源记录。
权威区段(Authority section):大小可变,含有指向权威域名服务器的资源记录,用以继续解析过程。
额外信息区域(Additional Information section):包含资源记录且大小可变的区段,这些资源记录用来存储完全没有必要回答的查询相关的额外信息。
(2)DNS查询数据包:
下面,我们以dns-ping文件来分析DNS协议,抓包如下图:

上图中的Info信息中,可以看出是DNS的查询包,其他协议这里不多介绍,不理解的,可以去相关的实验中学习,我们来主要看DNS协议。

Domain Name System (query)                                                   #DNS查询Response In: 2078Transaction ID: 0x3061                                                     #DNS ID号Flags: 0x0100 Standard query                                               #标志0... .... .... .... = Response: Message is a query                       #响应消息,值为0,表示是DNS查询.000 0... .... .... = Opcode: Standard query (0)                         #操作代码.... ..0. .... .... = Truncated: Message is not truncated                #截断.... ...1 .... .... = Recursion desired: Do query recursively            #期望递归.... .... .0.. .... = Z: reserved (0)                                    #保留.... .... ...0 .... = Non-authenticated data: UnacceptableQuestions: 1                                                               #问题计数为1Answer RRs: 0                                                              #回答计数为0Authority RRs: 0                                                           #域名服务器计数为0Additional RRs: 0                                                          #额外计数为0Queries                                                                    #问题区段wwww.hetianlab.com: type A, class INName: wwww.hetianlab.com                                                 #请求的域名Name Length: 18Label Count: 3Type: A (Host Address) (1)                                               #域名类型为A(主机地址)Class: IN (0x0001)                                                       #地址类型为IN(互联网地址)

以上信息就是DNS协议包的详细信息,在标志位字段,可以看到该包是一个DNS请求包,请求的域名为www.hetianlabdns.com,类型为A。将以上信息对应到DNS报文格式中,如下:

(3)DNS响应数据包:
下面,我们来分析下相应的数据包,如下图:

在上图中Info列可以看出,这是个DNS相应的数据包。下面我们来详细的看下:

Domain Name System (response)                                                    #DNS响应Request In: 2029Time: 0.471163000 seconds                                                      #DNS响应时间Transaction ID: 0x3061                                                         #DNS IDFlags: 0x8183 Standard query response, No such name                            #标志1... .... .... .... = Response: Message is a response                        #响应消息,1,表示是DNS响应.000 0... .... .... = Opcode: Standard query (0)                             #操作码.... .0.. .... .... = Authoritative: Server is not an authority for domain   #权威应答.... ..0. .... .... = Truncated: Message is not truncated                    #截断.... ...1 .... .... = Recursion desired: Do query recursively                #期望递归.... .... 1... .... = Recursion available: Server can do recursive queries   #可用递归.... .... .0.. .... = Z: reserved (0)                                        #保留.... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server.... .... ...0 .... = Non-authenticated data: Unacceptable.... .... .... 0011 = Reply code: No such name (3)                           #响应代码Questions: 1                                                                   #问题计数为1Answer RRs: 0                                                                  #回答计数为0(此处表示没有找到域名对应的IP)Authority RRs: 1                                                               #域名计数器计数为1Additional RRs: 0                                                              #额外记录计数为0Queries                                                                        #问题区域wwww.hetianlab.com: type A, class INName: wwww.hetianlab.com                                                     #请求的域名Name Length: 18Label Count: 3Type: A (Host Address) (1)                                                   #域名类型Class: IN (0x0001)                                                           #地址类型为IN(互联网地址)Authoritative nameservers                                                      #权威域名服务器,其下面的是一些解释信息,不过多介绍

之前说过,我们使用ping一个未知的域名来获取DNS数据,而域名本身没有在互联网上注册,按照DNS解析的原理就会知道,最后是无法得到域名对应的IP。所以上面的Answer RRS为0。
而同学有些兴趣可以看下实验环境中,访问百度的DNS抓包,就会发现其Answer RRs不为0,并且在问题区域(Queries)的下面,会列出回答区域。请同学们自己查看分析。
我们将上面分析的数据,填入DNS报文中,具体如下:

好了,DNS协议,就先分析到这里,还是希望同学们自己通过合天的基础知识学习后,能访问互联网来抓取DNS进行详细分析,增加自己的知识储备。

Wireshark数据抓包分析之域名系统协议相关推荐

  1. 实验十四:Wireshark数据抓包分析之ARP协议

    实验十四:Wireshark数据抓包分析之ARP协议 目录 一.实验目的及要求 二.实验原理 1.什么是ARP 2.ARP工作流程 3.ARP缓存表 三.实验环境 四.实验步骤及内容 实验步骤一 1. ...

  2. Wireshark数据抓包分析之HTTP协议

    在合天王安实验环境中,通过模拟局域网的两台机器之间的数据传输,来抓取和分析HTTP数据,用到HFS软件 1. 配置HFS软件 在局域网环境中,使用一个小工具来实现HTTP服务器.先在服务器上配置HFS ...

  3. Wireshark数据抓包分析之UDP协议

    目录 预备知识 1.UDP协议概述 2.什么是UDP协议 3.UDP协议的特点 实验目的 实验环境 实验步骤一 1.配置TCP&UDP测试工具 2.配置服务器端 3.配置客户端 4.获取UDP ...

  4. Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark

    Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark Wireshark(前称Ethereal)是一个网络包分析工具.该工具主要是用来捕获网络包,并显示包的详细情况.本节将分别介绍 ...

  5. Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述

    Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述 网络协议是用于不同计算机之间进行网络通信的.网络协议是网络上所有设备(如网络服务器.计算机.交换机.路由器等)之间通信规则的集合,它 ...

  6. Wireshark数据抓包分析——网络协议篇

    Wireshark数据抓包分析--网络协议篇 Wireshark是目前最受欢迎的抓包工具.它可以运行在Windows.Linux及MAC OS X操作系统中,并提供了友好的图形界面.同时,Wiresh ...

  7. 【愚公系列】2022年02月 wireshark系列-数据抓包分析之DNS协议

    文章目录 一.题目一 二.题目二 一.题目一 根据实验环境,本实验的步骤如下: 1.测试环境中获取DNS数据包. 2.分析DNS数据包. 任务描述:获取两种类型的DNS数据包 (1)通过浏览器访问域名 ...

  8. 【愚公系列】2023年04月 wireshark系列-数据抓包分析之ARP协议

    文章目录 前言 一.使用Netsh和ARP命令来绑定IP和MAC地址 二.使用Wireshark抓取ARP数据包 前言 ARP协议属于TCP/IP协议族中的底层协议,与常见的应用层协议不同,其了解程度 ...

  9. 【愚公系列】2022年02月 wireshark系列-数据抓包分析之IP协议

    文章目录 一.题目一 二.题目二 一.题目一 任务描述:使用Wireshark抓取IP数据包以及IP分片数据包 1.使用Wireshark抓取IP数据包 启动Wireshark,Filter选择IP协 ...

最新文章

  1. python使用imbalanced-learn的NearMiss方法进行下采样处理数据不平衡问题
  2. 量子计算机人的大脑,人类的大脑是量子计算机吗?科学家正在进行测试!
  3. 管能做暖气管道吗_这样的暖气管道施工,标准吗
  4. 补丁分发 linux,patch 命令应用补丁
  5. 第三次学JAVA再学不好就吃翔(part63)--String和int的相互转换
  6. 数据库与数据库管理系统
  7. 密度图的密度估计_不同类型的二维密度图小教程
  8. 20191007:选择排序,插入排序,冒泡排序详解
  9. python可以用del释放资源_Python中垃圾回收和del语句详解
  10. php微信公众号绑定微信号,订阅号实现微信网页授权登陆(原创)
  11. 某一api全开源网站源码
  12. 《弃子长安》第十六章 道阳心经
  13. 刘宇凡:一棵树给我的真理
  14. 深度篇——实例分割(三) 细说 mask rcnn 实例分割代码 训练自己数据 之 相关网络,数据处理,工具等
  15. 伦敦国王学院计算机申请要求,2020年伦敦国王学院高级计算机专业研究生申请条件及世界排名|学费介绍...
  16. 谷歌退出中国声明全文(中英对照版)A new approach to China
  17. 深入浅出WMS之出库流程解析
  18. javaweb mysql购物车_javaweb购物车实现的几种方式
  19. 【指示器】自定义ViewPager指示器,和你见过的不太一样。
  20. 【优化布局】基于免疫算法求解充电站最优布局matlab代码

热门文章

  1. 又发闪电贷价格操纵攻击?—— welnance.finance事件分析
  2. Lua三人帮出新书 Lua Programming Gems
  3. openlayers地图旋转_Openlayers实现地图的基本操作
  4. failed to allocate for range 0: no IP addresses available in range set:
  5. 【Simulink教程案例12】基于BPSK+costas环载波同步的simulink建模与仿真分析
  6. Python接口获取12306火车票信息
  7. html if函数,IF条件判断函数还不会就out了,IF函数七种条件判断用法都在这
  8. 商睿智能科技完成千万元级别天使轮融资
  9. 深度强化学习系列(2): ERROR: GLEW initalization error: Missing GL version
  10. 高性能高并发系统的稳定性保障