《计算机网络—自顶向下方法》 Wireshark实验(三):DNS协议分析

这篇具有很好参考价值的文章主要介绍了《计算机网络—自顶向下方法》 Wireshark实验(三):DNS协议分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        域名系统 DNS(Domain Name System) 是互联网使用的命名系统,用于把便于大家使用的机器名字转换为 IP 地址。许多应用层软件经常直接使用 DNS,但计算机的用户只是间接而不是直接使用域名系统。 互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。DNS 是:

  1. 一个有分层的 DNS服务器实现的分布式数据库;
  2. 一个使得主机能够查询分布式数据库的应用层协议。

        采用客户服务器方式,使大多数名字都在本地进行解析。名字到 IP 地址的解析是由若干个域名服务器程序完成的,域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。当一个应用进程需要把主机名解析为 IP 地址是,该用户进程就调用解析程序,并成为 DNS 的一个客户,把待解析的域名放在 DNS 请求报文中,以 UDP 用户数据报的方式发给本地域名服务器。本地域名服务器查找域名后,把对应的 IP 地址放在回答报文中返回。若本地域名服务器不能回答该请求,则该本地域名服务器就暂时成为 DNS 中的另一个客户,并向其他域名服务器发出查询请求。

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

为什么是分布式?

        DNS 的一种简单的设计是,在互联网中只使用一个 DNS 服务器,该服务器包含所有的映射,所有客户的查询都发往该服务器。现在来考虑下,为什么 DNS 不使用集中式设计而是使用分布式?原因主要有一下 4 点:

  • 单点故障:如果该 DNS 服务器崩溃,则整个因特网都会因此瘫痪;
  • 通信容量:单个 DNS 服务器不得不处理所有的 DNS 查询(数量级是上亿台主机);
  • 远距离的集中式数据库:单个 DNS 服务器不可能“邻近”所有的查询客户,会导致严重的时延;
  • 维护:单个 DNS 服务器不得不为所有因特网主机保留记录,这使得数据库异常庞大,且需要频繁更新。

        总而言之,单一的 DNS 服务器上运行集中式数据库,完全没有拓展能力。

        DNS 系统是一种将域名和 IP 地址相互映射的以层次结构分布的数据库系统。DNS 系统采用递归查询请求的方式来响应用户的查询,为互联网的运行提供关键性的基础服务。

        DNS 系统的解析过程描述如下:

  1. 主机先向本地域名服务器进行递归查询;
  2. 本地域名服务器采用迭代查询,向一个根域名服务器进行查询;
  3. 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器的 IP 地址;
  4. 本地域名服务器向顶级域名服务器进行查询;
  5. 顶级域名服务器告诉本地域名服务器,下一步查询权威服务器的 IP 地址;
  6. 本地域名服务器向权威服务器进行查询;
  7. 权威服务器告诉本地域名服务器所查询的主机的IP地址;
  8. 本地域名服务器最后把查询结果告诉主机。

        本实验的主要内容是基于 Wireshark 工具去分析 DNS 的解析过程及其协议字段。

1 DNS 协议分析

1.1 nslookup 域名解析

1.1.1 域名结构

        IP 地址是网络中面向应用的计算机主机的标志,而域名则是互联网中面向用户的主机的标志。为了保证域名的唯一性,域名系统采用层次结构。如下图所示:

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup
  • 每一个域名(只讨论英文域名)都是一个标号序列(labels),用字母(A-Z,a-z,大小写等价)、数字(0-9)和连接符(-)组成;
  • 标号序列总长度不能超过 255 个字符,它由点号分割成一个个的标号(label);
  • 每个标号应该在 63 个字符之内,每个标号都可以看成一个层次的域名;
  • 级别最低的域名写在左边,级别最高的域名写在右边,如 www.baidu.com
  • com: 一级域名。表示这是一个企业域名。同级的还有 “net”(网络提供商), “org”(非盈利组织) 等;
  • baidu: 二级域名,指公司名;
  • www: 表示该公司的 WEB 服务器对应的主机。
1.1.2 域名服务器

        域名需要由遍及全世界的域名服务器去解析,域名服务器实际上就是装有域名及其 IP 地址数据库的主机。

        域名服务器由高向低进行层次划分,可分为以下几大类:

  • 根域名服务器:最高层次的域名服务器,本地域名服务器解析不了的域名就会向其求助;
  • 顶级域名服务器:负责管理在该顶级域名服务器下注册的二级域名;
  • 权限域名服务器:负责一个区的域名解析工作;
  • 本地域名服务器:当一个主机发出 DNS 查询请求时,这个查询请求首先发给本地域名服务器。
自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

        注:一个域名服务器所负责的范围,或者说有管理权限的范围,就称为区。各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

        我们需要注意的是:

  • 每个层的域名上都有自己的域名服务器,最顶层的是根域名服务器;
  • 每一级域名服务器都知道下级域名服务器的 IP 地址;
  • 为了容灾,每一级至少设置两个或以上的域名服务器。
1.1.3 域名解析

        域名解析主要是将主机名(例如 www.example.com)转换为计算机友好的 IP 地址(例如 192.168.1.1),域名解析的基本过程:

  • (1) 输入域名后,先查找自己主机对应的域名服务器,域名服务器先查找自己的数据库中的数据;
  • (2) 如果没有, 就向上级域名服务器进行查找, 依次类推;
  • (3) 最多回溯到根域名服务器,肯定能找到这个域名的 IP 地址;
  • (4) 域名服务器自身也会进行一些缓存, 把曾经访问过的域名和对应的 IP 地址缓存起来,可以加速查找过程。

        简单的域名对应的 IP 地址查询,也可以使用 ping 命令来完成。

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup
1.1.4 域名解析与 nslookup

        nslookup 是一种网络管理命令行工具,可用于查询 DNS 域名和 IP 地址。无论是 linux 或者是 window 下都有这个工具,用好它对平常的域名解析情况,或者对域名服务器的维护都有帮助。
语法:

    nslookup [ -Option ... ] [ Host ] [ -NameServer ]

        nslookup 命令以两种方式查询域名服务器:

  • 交互模式:当没有给出操作参数时进入,操作对象和操作方式可以通过相应交互命令来告诉。
  • 命令模式:在一个命令行中将操作对象和操作方式告知命令,nslookup 将执行结果返回。实际使用中,采用这种方式比较多。

        下面列举几种主要用法:

  1. 直接查询 查询一个域名的 A 记录,使用默认的 DNS 服务器,语法为:nslookup domain 例如: nslookup baidu.com
自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

        从中可以看出:
(1) baidu.com 的域名解析所使用的 DNS 服务器地址 172.21.0.10
(2) baidu.com 域名对应的主机有几个IP地址。

  1. 指定域名服务器查询
nslookup domain  dns-server

        将查询请求发送到 DNS 服务器 bitsy.mit.edu,而不是默认的 DNS 服务器。如:

nslookup baidu.com 172.21.0.10
  1. 查询其他记录,语法格式如下:
nslookup -type=type domain 

        通过指定 -type 参数的具体类型,执行其他类型的查询。常用类型说明:

  • MX:邮件服务器记录;
  • NS:名字服务器记录;
  • PTR:反向记录。

        如查询baidu.com对应的名字服务器记录:

nslookup -type=NS baidu.com

结果如图:

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

        查询 IP 地址172.11.4.107对应的域名(反向查询):

nslookup -type=PTR 172.11.4.107

结果如图:

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

1.2 查看与设置 DNS 服务器操作

1.2.1 如何查看网卡默认的 DNS 服务器

        在我们使用的 Linux 操作系统里面,DNS 服务器的配置信息在 /etc/resolv.conf 文件里面。查看该文件的命令如下:

cat /etc/resolv.conf

        该文件内容如下图所示:

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

        可以看出,默认的 DNS 服务器 IP 是:172.21.0.10

1.2.2 如何修改网卡默认的 DNS 服务器

        可以直接修改 resolv. conf文件,方法如下:

vim /etc/resolv.conf        		// 打开resolv.conf 文件

        改为如下内容:

nameserver 114.114.114.114 		# 修改成你的主DNS
nameserver 8.8.8.8    			# 修改成你的备用DNS

        配置完成后,需重启网络服务才生效,重启网络服务的语句为:

service networking restart
自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

1.3 DNS 报文分析

1.3.1 DNS 域名解析过程

        DNS 协议属于应用层,使用客户端-服务器模式运行在通信的端系统之间。在通信的端系统之间通过端到端传输输协议( UDP 协议,通常使用 53 号端口)来传送 DNS 报文。DNS 系统解析过程如下图所示:

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

        DNS 客户需要访问 WEB 服务器 www.abc.xyz.com,则客户机可以访问本地的 hosts 文件,看能否知道主机名称对应的 IP 地址,如果 hosts 文件不能解析该主机名称,则只能通过向客户机所设定的 DNS 服务器进行查询。查询过程如下:

  • (1) DNS 客户机向本地域名服务器发送查询请求,查找域名 www.abx.xyz.com 的 IP 地址。本地域名服务器查询本地的缓存,如果有这个地址,则将地址返回给 DNS 客户机;
  • (2) 如果本地域名服务器缓存没有这个地址,则发送查询请求到根域名服务器,询问 www.abx.xyz.com 的地址,根域名服务器会将子域 com 的域名服务器的地址返回给本地域名服务器;
  • (3) 本地域名服务器再向 com 域发送查询请求,com 域服务器无法提供地址,但会把下一级的域名服务器 xyz.com 的地址发送给本地域名服务器;
  • (4) 重复(2)、(3)的过程,最后 xyz.com 域名服务器把 abc.xyz.com 域名服务器地址发送给本地域名服务器;
  • (5) 本地域名服务器再向 abc.xyz.com 域名服务器发送地址查询请求 abc.xyz.com,找到了 www.abc.xyz.com 的地址,就将这个地址发送给本地域名服务器;
  • (6) 本地域名服务器把地址保存到缓存,同时返回给 DNS 客户机。

        有两种查询方式,分别是:

1. 递归查询
        主机向本地域名服务器的查询,一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

2. 迭代查询
        本地域名服务器向根域名服务器的查询,通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup
  1. 递归查询:主机向本地域名服务器的查询一般都是采用递归查询;
  2. 迭代查询:本地域名服务器向根域名服务器的查询通常采用迭代查询。只是通常,也有的采用递归查询。
1.3.2 域名解析协议

        域名解析的实现是依靠 DNS 协议来完成。有两种 DNS 报文——查询报文和响应报文,分别来实现 DNS 的查询请求和响应请求。

        DNS 协议报文格式如下:

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

1. 头部
        (1) 会话标识(2 字节) DNS 报文的 ID 标识,对于请求报文和其对应的应答报文,这个字段是相同的,通过它可以区分 DNS 应答报文是哪个请求的响应。
        (2) 标志(2 字节) 各字段定义如下:

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup
  • QR(1 bit) 查询/响应标志,0 为查询,1 为响应
  • opcode(4 bit) 0 表示标准查询,1 表示反向查询,2 表示服务器状态请求
  • AA(1 bit) 表示授权回答
  • TC(1 bit) 表示可截断的
  • RD(1 bit) 表示期望递归
  • RA(1 bit) 表示可用递归
  • rcode(4 bit) 表示返回码,0 表示没有差错,3 表示名字差错,2 表示服务器错误(Server Failure)

        (3) 数量字段(总共 8 字节): 各自表示后面的四个区域的数目。

  • Questions 表示查询问题区域节的数量
  • Answers 表示回答区域的数量
  • Authoritative nameservers 表示授权区域的数量
  • Additional recoreds 表示附加区域的数量

**2. 正文 **

        正文部分由查询区域和资源记录区域组成。
        (1) 查询区域

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup
  • 查询名:长度不固定,且不使用填充字节,一般该字段表示的就是需要查询的域名(如果是反向查询,则为 IP ,反向查询即由 IP 地址反查域名)。其构成如下:
自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup
  • 查询类型:规定如下
自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

        注:查询类通常为 1 ,表明是 Internet 数据。

        (2) 资源记录 (RR) 区域(包括回答区域、授权区域和附加区域)

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

        这三个区域分别是:回答区域,授权区域和附加区域,其格式都是一样的。

  • 域名( 2 字节或不定长):格式和 Queries 区域的查询名字字段是一样的;
  • 查询类型:表明资源纪录的类型,与查询类型表格相同;
  • 查询类:对于 Internet 信息,总是 IN ;
  • 生存时间(TTL):以秒为单位,表示的是资源记录的生命周期;
  • 资源数据:可变长字段,表示按照查询段的要求返回的相关资源记录的数据。

1.4 NS 类型的 DNS 解析报文分析

1.4.1 如何捕获 NS 类型的 DNS 报文

        DNS 中 NS 记录 NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个 DNS 服务器来进行解析。 在注册域名时,总有默认的 DNS 服务器,每个注册的域名都是由一个 DNS 域名服务器来进行解析的,DNS 服务器 NS 记录地址一般以以下的形式出现:ns1.domain.comns2.domain.com 等。 简单的说,NS 记录是指定由哪个 DNS 服务器解析你的域名。

        在执行 nslookup 时,可以通过指定参数 -type=NS 来查询指定域名对应的域名服务器。如下图所示。

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup
1.4.2 解析 DNS 请求报文

        通过 Wireshark 可以抓取执行上述操作报文列表。筛选 DNS 协议的报文,找到查询请求报文,展开如下图所示。

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

        可以看出,请求查询报文的的 Type 字段为 NS ,即 Authorizative Name Server 。即希望得到权威的名字服务。该请求报文是通过 UDP 协议进行传输的,端口号为 53 。

传输层协议使用 TCP 还是 UDP ?

        DNS 可以使用 UDP/53 ,也可以使用 TCP/53 。当响应报文的长度小于 512B 时,就使用 UDP (因为 UDP 的最大报文长度为 512B );若响应报文的长度超过 512B ,则选用 TCP 。DNS 协议关于 UDP 和 TCP 的选择通常为以下两种情况:
        (1) 若 DNS 客户程序事先知道响应报文的长度超过 512B ,则应当使用 TCP 连接;

        注意:主域名服务器与辅助域名服务器在进行区域传送时,通常数据量都比较大,所以 DNS 规定,区域传送使用 TCP 协议。

        (2) 若解析程序不知道响应报文的长度,它一般使用 UDP 协议发送 DNS 查询报文,若 DNS 响应报文的长度大于 512B ,服务器就截断响应报文,并把 TC(truncated) 置为 1 。在这种情况下,DNS 客户程序通常使用 TCP 重发原来的查询请求,从而它将来能够从 DNS 服务器中收到完整的响应。

1.4.3 解析 DNS 应答报文

        查看随后的响应报文,可以看到有多个响应报文。这些报文就是在进行解析baidu.com域名对应的权威服务器过程中响应的报文。展开这些报文,可以看到第一个响应报文如下图所示。

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

        该报文应答部分有多个服务器地址,其第一个地址类型为 SOA(start of a zone of an authority),即权威区域的开始。其后的服务器地址类型为 SRV(Server selection),即服务器选择。
随后的多个报文都是对查询报文的响应。

        由于前述响应报文长度大于 512B ,随后再次出现了一个查询请求报文,查看其传输层协议,可以看到换用了 TCP 协议。

        同样有多个应答报文进行响应。查看这些报文的应答类型,有些是 SRV ,有些是 A(Address,内容是具体的 IP 地址)。
        查看最后一个应答报文,如下图所示。

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

        可以看出,其权威 DNS 服务器的名称为:ns.dns.cluster.local

1.5 反向 DNS 解析

1.5.1 反向解析

        在 nslookup 中,类型参数设为 PTR 表示反向解析。反向解析是用于将一个 IP 地址映射到对应的域名,也可以看成是 A 记录的反向,IP 地址的反向解析。下图演示了反向解析 IP 地址 39.156.69.79 的操作。

        注意:反向解析时IP地址的顺序也是反的

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

反向解析查询报文

        下图是 Wireshark 抓获的查询报文。

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

        展开 Query 段,可以看到,此报文的 Type 为 PTR ,即反向解析。反向解析的 name 是 IP 地址再加了 in-addr.arpa 这部分。

反向解析响应报文

        下图是 Wireshark 抓获的反向解析应答报文。

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

        展开该报文的 Answers 部分,可以看到该段的 Type 是 PTR ,查询的 name 是 IP 地址加in-addr.arpa 部分,而响应的 Domain Name 的值为:79-69-156-39.dynamic.dsl.as9105.com

1.6 指定服务器的DNS报文分析

        打开 Wireshark ,并在过滤器中输入 DNS 。筛选出 DNS 协议报文,并开始捕获报文。然后打开终端,输入命令并执行 nslookup baidu.com 114.114.114.114,在 Wireshark 中停止捕获报文;

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

        从报文列表可以看出,经历了多次查询与应答,在最后一轮才得到了baidu.com的 A 地址。查询的百度域名依次为:

baidu.com.default.svc.cluster.local
baidu.com.svc.cluster.local
baidu.com.cluster.local
baidu.com

        依次查看其应答报文,可以看出,前几次的应答都是 Authoritative Nameserver ,类型为 SOA ,即域名分区,没有得到真正的 IP 地址;只有最后一次才得到 Answers ,其类型 Type 为 A ,其 IP 地址为 220.181.38.148,39.156.69.79

补充:ipconfig

         ipconfig(对于Windows)和 ifconfig(对于Linux / Unix)是主机中最实用的程序,尤其是用于调试网络问题时。这里我们只讨论ipconfig,尽管Linux / Unix的 ifconfig 与其非常相似。 ipconfig 可用于显示您当前的TCP/IP信息,包括您的地址,DNS服务器地址,适配器类型等。例如,您只需进入命令提示符,输入

ipconfig /all

        所有关于您的主机信息都类似如下面的屏幕截图所显示。

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

         ipconfig 对于管理主机中存储的DNS信息也非常有用。在第2.5节中,我们了解到主机可以缓存最近获得的DNS记录。要查看这些缓存记录,在 C:\> 提示符后输入以下命令:

ipconfig /displaydns

        每个条目显示剩余的生存时间(TTL)(秒)。要清除缓存,请输入:

ipconfig /flushdns

        清除了所有条目并从hosts文件重新加载条目。


2 实验分析

        现在,我们熟悉nslookupipconfig,我们准备好了一些正经的事情。首先让我们捕获一些由常规上网活动生成的DNS数据包。

  • 使用ipconfig清空主机中的DNS缓存。
  • 打开浏览器并清空浏览器缓存。 (若使用Internet Explorer,转到工具菜单并选择Internet选项;然后在常规选项卡中选择删除文件。)
  • 打开Wireshark,然后在过滤器中输入“ip.addr==your_IP_address”,您可以先使用ipconfig获取你的IP地址。此过滤器将删除既从你主机不发出也不发往你主机的所有数据包。
  • 在Wireshark中启动数据包捕获。
  • 使用浏览器访问网页: https://www.nuaa.edu.cn/
  • 停止数据包捕获。
自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup
  1. 运行nslookup 以获取一个亚洲的Web 服务器的IP 地址。该服务器的IP 地址
    是什么?
    答:这里使用的阿里的公众 DNS 223.5.5.5 替代我的 ISP 服务商的 DNS 进行查
    询,这里我查询的是南航(https://www.nuaa.edu.cn/)的IP 地址。可以在图中看到我请求阿里公共DNS 来获取南航的IP 地址,为:218.94.136.180

  2. 找到DNS查询和响应消息。它们是否通过UDP或TCP发送?
    答:是 UDP。
    自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

  3. DNS是查询消息的目标端口是什么? DNS响应消息的源端口是什么?
    答:都是 53 端口。

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup
  1. DNS 查询消息发送到哪个 IP 地址?使用 ipconfig 来确定本地 DNS 服务器的 IP 地址。这两个 IP 地址是否相同?
自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup
  1. 检查 DNS 查询消息。DNS 查询是什么 “Type” 的?查询消息是否包含任何 “answers”?
    答:Type 为 “A”,表示查询 IP 地址,没有任何 “answers”。
    自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

  2. 检查DNS响应消息。提供了多少个"answers"?这些答案具体包含什么?
    答:提供了 2 个 “answers”,是该域名的 2 个 IPV4 地址。
    自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

  3. 考虑从您主机发送的后续 TCP SYN 数据包。 SYN 数据包的目的 IP 地址是否与 DNS 响应消息中提供的任何 IP 地址相对应?
    答:是相对应的。
    自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

  4. 这个网页包含一些图片。在获取每个图片前,您的主机是否都发出了新的 DNS 查询?
    答:没有,因为本机 DNS 已经被缓存了,因此不需要发起新的 DNS 查询。

  5. DNS查询消息的目标端口是什么? DNS响应消息的源端口是什么?
    答:目标端口和源端口都是 53。

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup
  1. DNS 查询消息的目标 IP 地址是什么?这是你的默认本地 DNS 服务器的 IP 地址吗?
    答:225.3.3.3,是我修改的默认本地 DNS 服务器的 IP 地址。
自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup
  1. 检查 DNS 查询消息。DNS 查询是什么 “Type” 的?查询消息是否包含任何 “answers”?
    答:Type 为 “A”,表示查询 IP 地址,没有任何 “answers”。
自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup
  1. 检查 DNS 响应消息。提供了多少个 “answers”?这些答案包含什么?
    答:提供了 1 个 “answers”,是该域名的 IPV4 地址。
自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

        现在重复上一个实验,但换成以下命令:

nslookup www.aiit.or.kr bitsy.mit.edu
自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup
  1. DNS 查询消息发送到的 IP 地址是什么?这是您的默认本地 DNS 服务器的 IP 地址吗?
    答:18.0.72.3,不是我的默认本地 DNS 服务器的 IP 地址。
自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup
  1. 检查DNS查询消息。DNS 查询是什么 “Type” 的?查询消息是否包含任何 “answers”?
    答:Type 为 “A”,表示查询 IP 地址,没有任何 “answers”。
自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup
  1. 检查 DNS 响应消息。提供了多少个 “answers”?这些答案包含什么?
    答:提供了 1 个 “answers”,是该域名的 IPV4 地址。
自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

补充:dig命令

        命令行工具 dig 可以跟 DNS 服务器互动,它的查询语法如下(美元符号$是命令行提示符)

$ dig @[DNS 服务器] [域名]

        网上有很多公用的 DNS 服务器,这篇文章选择 Cloudflare 公司提供的 1.1.1.1 进行演示,向 1.1.1.1 查询域名,就执行下面的命令。文章来源地址https://www.toymoban.com/news/detail-757504.html

自顶向下wireshark,# Computer Networking,计算机网络,wireshark,服务器,DNS协议,nslookup

参考

  • DNS 原理入门:http://www.ruanyifeng.com/blog/2016/06/dns.html
  • DNS 查询原理详解:http://www.ruanyifeng.com/blog/2022/08/dns-query.html
  • DNS协议分析:https://www.educoder.net/shixuns/4yze3kp5/challenges
  • 《计算机网络-自顶向下方法》笔记:https://github.com/moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES
  • Wireshark实验——DNS域名系统:https://www.cnblogs.com/linfangnan/p/12771157.html

到了这里,关于《计算机网络—自顶向下方法》 Wireshark实验(三):DNS协议分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《计算机网络-自顶向下》04. 网络层-数据平面

    从表面上看网络层的作用:将分组从一台发送主机移动到另一台接收主机。 完成该功能需要两个重要的网络层功能: 转发:当一个分组到达某路由器的一条输入链路时,该路由器必须将该分组移动到适当的输出链路。 路由选择:当分组从发送方流向接收方时,网络层必须决

    2023年04月15日
    浏览(43)
  • 《计算机网络——自顶向下方法》精炼——3.7(2)

    读书有三到:谓心到,眼到,口到。——明·朱熹 为了简化对一条TCP连接吞吐量的描述,我们首先忽略连接过程中处于慢启动状态的时间,因为这一状态时间极短,而且相比于其他状态的线性增长,该状态的指数式增长会将计算复杂化;而对于快速恢复状态,这一状态仅在网

    2024年02月07日
    浏览(43)
  • 计算机网络自顶向下WireShark实验:TCP

    计算机网络 WireShark 实验记录可供参考 1:What is the IP address and TCP port number used by the client computer (source) that is transferring the file to gaia.cs.umass.edu? To answer this question, it’s probably easiest to select an HTTP message and explore the details of the TCP packet used to carry this HTTP message, using the “details of

    2023年04月15日
    浏览(57)
  • 《计算机网络:自顶向下方法》第五章--网络层:控制平面

    控制平面作为一种网络范围的逻辑,不仅控制沿着从源主机到目的主机的端到端路径间的路由器如何转发数据报,而且控制网络层组件和服务如何配置和管理 传统上,控制平面功能与数据平面的转发功能在一起实现,在路由器中作为统一的整体 在网络层:数据平面中有转发

    2024年02月12日
    浏览(50)
  • 计算机网络——自顶向下方法(第四章学习记录)

    本章学习网络层:数据平面 前一章中我们学习了运输层依赖于网络层的主机到主机的通信服务,提供了各种形式的进程到进程的通信。在本章中我们将看到与运输层和应用层不同的是,在网络中的每一台主机和路由器中都有一个网络层部分。 网络层能够被分解为两个相互作

    2024年02月11日
    浏览(53)
  • 计算机网络——自顶向下方法(第二章学习记录)

    本章学习应用层 网络应用是计算机网络存在的理由。 现代网络应用程序有两种主流体系结构:客户—服务器体系结构和对等(P2P)体系结构 客户—服务器体系结构 (client-server ),在这个结构中,有一个总是打开的主机称为服务器,它服务于来自许多其他称为客户的主机的请求

    2024年02月09日
    浏览(42)
  • 计算机网络——自顶向下方法(第一章学习记录)

    可以从两个不同的方面来理解Internet。(它的构成。它的服务) 1.因特网的主要构成          处在因特网的边缘部分就是在因特网上的所有主机,这些主机又称为 端系统 (end system),端系统通过 因特网服务提供商 (Internet Service Provider,ISP)接入因特网,端系统通过 通信

    2024年02月10日
    浏览(41)
  • 计算机网络——自顶向下方法(第三章学习记录)

    本章学习运输层 运输层位于应用层和网络层之间,是分层的网络体系的重要部分,该层为运行在不同主机上的应用进程提供直接的通信服务起着至关重要的作用。 运输层协议为运行在不同主机上的应用进程之间提供了 逻辑通信 (logic communication)功能。从应用程序的角度看,通

    2024年02月11日
    浏览(40)
  • 《计算机网络--自顶向下方法》第四章--网络层:数据平面

    每台路由器的数据平面的主要作用是从其输入链路向其输出链路转发数据报 ;控制平面的主要作用是协调这些本地路由器转发动作,使得数据报沿着源和目的地主机之间的路由器路径进行端到端传送 路由器具有截断的协议栈,即没有网络层之上的部分,因为 路由器不运行应

    2024年02月12日
    浏览(43)
  • 《计算机网络——自顶向下方法》精炼——1.4到1.7

    三更灯火五更鸡,努力学习永不止。无惧困难与挑战,砥砺前行向成功。 计算机网络在这一学科中的重要性毋庸置疑,而黑皮书又是这一学科的教科书级经典,因此本书是计算机从业者的必读书之一。笔者用一个专栏来精炼这本书的知识,帮助想了解这方面知识的同学快速打

    2023年04月15日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包