DNS协议分析实验
吉 林 农 业 大 学 实 验 报 告姓名:李洪爽 学号:12145211 专业:物联网工程 第六次 2016年 5月 16 日实
吉 林 农 业 大 学 实 验 报 告
姓名:李洪爽 学号:12145211 专业:物联网工程 第
六次 2016年 5月 16 日
实验七 DNS 协议分析
一、 实验目的
1. 学会客户端使用nslookup 命令进行域名解析。
2. 通过协议分析软件掌握DNS 协议的报文格式。
二、 实验原理
DNS 是域名系统(Domain Name System) 的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP 地址,在Internet 上域名与IP 地址之间是一一对应的,DNS 就是进行域名解析的服务器
DNS 命名用于Internet 等TCP/IP网络中,通过用户友好的名称查找计算机和服务。DNS 是因特网的一项核心服务,它作为可以将域名和IP 地址相互映射的一个分布式数据库而存在。
DNS 是一个分层级的分散式名称对应系统,有点像电脑的目录树结构:在最顶端的是一个“root ”,然后其下分为好几个基本类别名称,如:com ﹑org ﹑edu 等;再下面是组织名称,如:IBM ﹑Microsoft ﹑Intel 等;继而是主机名称,如:www ﹑mail ﹑ftp 等。 一个具体的 DNS 运作过程如下:
1. 当被询问到有关本域名之内的主机名称的时候,DNS 服务器会直接做出回答;
2. 客户端向服务器提出查询项目;
3. 如果所查询的主机名称属于其它域名的话,会检查缓存(Cache),看看有没有相关资料;
4. 如果没有发现,则会转向 root 服务器查询;
5. 然后 root 服务器会将该域名之下一层授权(authoritative)服务器的位置告知(可能会超过一台) ;
6. 本地服务器然后会向其中的一台服务器查询,并将这些服务器名单存到缓存中,以备将来之需(省却再向 root 查询的步骤) ;
7. 远方服务器回应查询;
8. 若该回应并非最后一层的答案,则继续往下一层查询,直到获得客户端所需的结果为止;
9. 将查询结果回应给客户端,并同时将结果储存一个备份在自己的缓存里面; 10. 如果在存放时间尚未过时之前再接到相同的查询,则以存放于缓存里的资料来做回应。
从这个过程我们可以看出,没有任何一台 DNS 主机会包含所有域名的 DNS 资料,资料都是分散在全部的 DNS 服务器中。
,DNS 协议报文结构
通过研究发现,DNS 协议分成包头和数据两部分。如图1所示,该报文由12字节的首部和4个长度可变的字段组成。

以下会详细介绍个字段:
1. 标识
标识字段由客户程序设置并有服务器返回结果,16位,在对应的query 和response 报文中有着相同的ID ,可以在抓到的包中配对请求和应答报文,提取相关信息,同时也可以根据他们的时间戳大致估计DNS 的相应时间。
2. 标志
标志字段长16bit ,结构如图2所示:
QR 1 Opcode AA 1 TC 1 RD 1 RA 1 Zero 3 Rcode 4
QR :1bits 字段,0表示查询报文,1表示响应报文
Opcode :4bits 字段,通常值为0(标准查询),其他值为1(反向查询)和2(服务器状态请求)
AA :1bits 标志表示授权回答(authoritive answer), 该名字服务器是授权于该领域的 TC :1bits 字段,表示可截(truncated ),使用UDP 时,它表示当应答的总长度超过512字节时,只返回前512个字节
RD :1bits 字段,表示期望递归,该比特能在一个查询中设置,并在一个响应中返回,这个标志告诉名字服务器必须处理这个查询,也称为一个递归查询,如果该位为0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的其他名字服务器列表,这称为迭代查询(期望递归)
RA :1bits 字段,表示可用递归,如果名字服务器支持递归查询,则在响应中将该bit 置为1(可用递归)
zero :必须为0
rcode :是一个4bit 的返回码字段,通常值为0(没有差错)和3(名字差错),名字差错只有从一个授权名字服务器上返回,它表示在查询中指定的域名不存在
随后的4个bit 字段说明最后4个变长字段中包含的条目数,对于查询报文,问题数通常是1,
,其他三项为0,类似的,对于应答报文,回答数至少是1,剩余两项可以使0或非0
5. DNS查询报文中每个查询问题的格式
0 16 31查询名
查询类型 查询类
查询名:要查找的名字
查询类:通常值为1,表示是互联网的地址,也就是IP 协议族的地址
查询类型:有很多种查询类型,一般最常用的查询类型是A 类型(表示查找域名对应的IP 地址)和PTR 类型(表示查找IP 地址对应的域名)
查询名为要查找的名字,它由一个或者多个标示符序列组成,每个标示符已首字符字节数的计数值来说明该表示符长度,每个名字以0结束,计数字节数必须是0~63之间,该字段无需填充字节,如:

gemine.tuc.noao.edu
6. DNS响应报文中的资源记录格式:

域名:记录中资源数据对应的名字,它的格式和查询名字段格式相同
类型:类型说明RR 的类型码,类通常为1,指Internet 数据
生存时间:客户程序保存该资源记录的秒数
资源数据长度:说明后面资源数据的数量,该数据的格式依赖于类型字段的值,对于类1(A 记录)记录数据室4字节的IP 地址
资源数据:服务器端返回给客户端的记录数据
Nslookup 是一个监测网络中DNS 服务器是否能够正确实现域名解析的命令行工具。它在Windows NT/2000/XP中均可使用。本实验通过nslookup 检测服务器的配置,并利用协议分析Wireshark 捕获分析nslookup 命令产生的DNS 数据包。
Nslookup 查询命令格式为nslookup 域名,主要做两个操作,一个是根据本地DNS 服务器的IP 地址获得本地DNS 服务器的名字,二是根据输入查询的域名查找该域名的IP 地址。
三、实验步骤
1. 打开Wireshark ,选择工具栏上的“Capture”->“interfaces选择网关”,截图替换:
,
2、然后在Wireshark ,选择工具栏上的“Capture”->“optoins”选择过滤器,并在capture filter 中输入 udp port 53(表示

要抓dns 的包) ,截图替换
3. 打开命令提示符,键入CMD 后,输入nslookup . 截图替换
,
分析:
1)由此可知,本地域名服务器是:Cc-cache1-ibm
2)Ip 地址是:219.149.194.56
3)别名:www.google.com.DHCP
4) 分析抓到的DNS 的包,截图:

第一帧
是 192.168.1.108 发送给本地DNS 服务器 219.149.194.56 的反向查询取得报文,用于获得本地DNS 服务器的名字。截图并分析

:
,
分析:
问题的个数: 1 回答RR 个数:0 权威域名RR 数:0 附加RR 数: 0 Type 为 :A
第二帧,截图
,
存活时间是:58
告诉查询结果是:pub.idqqimg.com.tc.qq.com 第三帧 截图

分析
是 192.168.1.108 (客户端)发给 本地DNS 的请求报文:问域名为 地址219.149.194.56
第四帧截图

告诉客户端 36.49.31.15 (IP 地址) 没 无权威域名服务器 对应的ipv4地址有 一 个
四、实验总结
加强对计算机网络的认知
加强对实验软件的熟练程度
加强对相应知识的了解