admin管理员组

文章数量:1530061

  • 任务描述
  • 相关知识
    • DNS 域名解析过程
    • 域名解析协议
  • 操作要求
  • 测试说明

任务描述

本关任务:DNS 系统解析过程的具体分析。

相关知识

为了完成本关任务,你需要掌握:

  1. 如何实现 DNS 域名解析协议,
  2. 如何查看 DNS 的请求报文与响应报文。

DNS 域名解析过程

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

DNS 系统解析过程如下图所示:

DNS 客户需要访问 WEB 服务器www.abc.xyz,则客户机可以访问本地的 hosts 文件,看能否知道主机名称对应的 IP 地址,如果 hosts 文件不能解析该主机名称,则只能通过向客户机所设定的 DNS 服务器进行查询。查询过程如下: (1)DNS 客户机向本地域名服务器发送查询请求,查找域名www.abx.xyz的 IP 地址。本地域名服务器查询本地的缓存,如果有这个地址,则将地址返回给 DNS 客户机; (2)如果本地域名服务器缓存没有这个地址,则发送查询请求到根域名服务器,询问www.abx.xyz的地址,根域名服务器会将子域 com 的域名服务器的地址返回给本地域名服务器; (3)本地域名服务器再向 com 域发送查询请求,com 域服务器无法提供地址,但会把下一级的域名服务器 xyz 的地址发送给本地域名服务器; (4)重复(2)、(3)的过程,最后 xyz 域名服务器把abc.xyz域名服务器地址发送给本地域名服务器; (5)本地域名服务器再向abc.xyz域名服务器发送地址查询请求abc.xyz,找到了www.abc.xyz的地址,就将这个地址发送给本地域名服务器; (6)本地域名服务器把地址保存到缓存,同时返回给 DNS 客户机。 有两种查询方式,分别是:

  1. 递归查询:主机向本地域名服务器的查询一般都是采用递归查询;
  2. 迭代查询:本地域名服务器向根域名服务器的查询通常采用迭代查询。只是通常,也有的采用递归查询。

域名解析协议

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

DNS 协议报文格式如下:

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

  • 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)查询区域

查询名:长度不固定,且不使用填充字节,一般该字段表示的就是需要查询的域名(如果是反向查询,则为 IP ,反向查询即由 IP 地址反查域名)。其构成如下:

查询类型:规定如下

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

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

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

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

操作要求

双击打开桌面上的工作区文件夹”workspace”,再打开实训文件夹”myshixun”,将查询的信息保存到文件message-3.txt。具体要求如下:

(1)打开 Wireshark ,并在过滤器中输入 DNS 。筛选出 DNS 协议报文,并开始捕获报文。然后打开终端,输入命令并执行nslookup www.baidu,在 Wireshark 中停止捕获报文; (2)查看报文列表,将 DNS 查询-响应的次数写入文件中; (3)展开最后一轮查询报文,分析协议字段中各字段的值,将 Queries Name 的值写入文件中;

(4)展开最后一轮响应报文,分析协议字段中各字段的值,将 Answers Cname 的值写入文件中;

(5)展开最后一轮响应报文,将 Answers 中的两个 IP 值写入文件中(两个 IP 地址用";"隔开);

测试说明

 在此将 Answers 中的两个 IP 值与答案不符,小白表示不太懂。

平台会对你操作的结果进行测试,如果操作正确你将顺利通关。

开始你的任务吧,祝你成功!

本文标签: 报文协议dns