基于WireShark和Packet,Tracer软件的域名查询实验综述报告
打开文本图片集
摘 要:域名查询实验是计算机网络实验教学的重要组成部分之一.该实验设计以域名查询的工作原理为核心,使用WireShark软件捕获并分析DNS报文,使用Packet Tracer软件仿真域名查询的迭代查询和递归查询过程.通过实验,帮助学生更好地理解域名查询的工作原理,提高了学生的理论水平和实践能力,为后续学习FTP、WWW等服务打下坚实的基础.
关键词:域名系统;递归查询;迭代查询;实验综述报告
中图分类号:G642.0;TP312 文献标识码:A 文章编号:1673-260X(2019)10-0061-05
计算机网络是计算机专业必修的一门实践性很强的专业基础课程[1-4],域名系统(Domain Name System,DNS)是因特网的核心服务之一.对于计算机专业的学生,DNS查询和应答报文的格式,域名查询原理是必须掌握的.但是,由于实验设备的缺乏[5-6]和网络知识本身的抽象性,增加了学生对于域名解析的理解和掌握难度.为了帮助学生更直观地学习域名查询的工作原理,設计了使用WireShark分析DNS查询和应答报文[7-9],使用Cisco Packet Trace仿真DNS的递归和迭代查询的实验.
1 域名查询原理
由于IP地址难以记忆,出现了使用“主机名”代替IP地址与服务器通信的需求,一种基于TCP/IP的域名系统应运而生.域名系统提供的服务能够将域名转换为对应的IP地址.如图1所示,Internet采用层次树状结构的域名空间命名方法,互联网上的所有主机或路由器都有一个唯一的域名.每个域名由若干个分量组成,各分量之间用点隔开,格式为“… ….三级域名.二级域名.顶级域名”,如.
1.1 DNS服务器
DNS采用分布式客户/服务器(C/S)架构,有4种类型的域名服务器:
(1)本地DNS服务器:用户主机有域名查询需求时,先将查询报文发送到本地DNS服务器.接收到查询请求后,本地DNS服务器首先在缓存中查找对应的IP地址,如找不到则将查询请求发到指定的DNS服务器.
(2)授权DNS服务器.负责特定域名的域名解析,同时也具有本地DNS服务器的功能.授权DNS服务器总是能够将其管辖的主机域名转换为对应的IP地址.
(3)顶级DNS服务器.负责管理该顶级域名中所有注册的二级域名.
(4)根DNS服务器.全世界只有13台,是最重要的DNS服务器,存有所有顶级DNS服务器的域名和IP地址,用来管理互联网主目录.当本地DNS服务器请求根DNS服务器时,路由器就能找到离这个本地DNS服务器最近的一个根DNS服务器.
1.2 域名查询原理
DNS的详细概念、原理和机制定义在RFC1034和RFC1035中.共有3种域名查询方式:递归查询、迭代查询和反向查询.
(1)递归查询(Recursion Query).这是最常见的查询方式,用户主机向本地DNS服务器发出的查询请求一般为递归查询.本地DNS服务器接收到用户主机的查询请求后,先查询自己的数据库和缓存中是否有对应记录,如查询到则将结果返回给用户主机;否则将同样作为客户端向最近的根DNS服务器提出查询请求.这种查询方式中,用户主机向本地DNS服务器提出1次查询请求,然后等待查询结果.
(2)迭代查询(Iteration Query).本地DNS服务器向上层DNS服务器(外网)发出的查询请求一般为迭代查询.用户主机向本地DNS服务器发送查询请求后,如果本地DNS服务器不知道要查询的IP地址,就向最近的根DNS服务器发出迭代查询请求.根DNS服务器通常把某个顶级DNS服务器的IP地址发给本地DNS服务器,让本地DNS服务器向该顶级DNS服务器查询.顶级DNS服务器收到本地DNS的查询请求后,或者直接返回所要查询的IP地址,或者将知道该查询结果的授权DNS服务器的IP地址告诉本地DNS服务器,让本地DNS服务器向授权DNS服务器查询.这种查询方式中,用户主机提出1次查询请求,本地DNS服务器提出多次查询请求,上层DNS服务器或者给出要查询的IP址,或者返回一个能解答该域名查询的DNS服务器地址,直到找到最终负责所查域名的DNS服务器,得到查询结果.
(3)反向查询(Reverse Query).用户主机查询IP地址对应的域名.
1.3 DNS报文格式
DNS查询报文和应答报文的格式是一样的,如图3所示[10-12],各字段含义如下:
1.3.1 Header头部
(1)ID:查询报文和应答报文的序列号.用于匹配未得到解决的查询的响应.
(2)QR:为0表示查询报文,为1表示应答报文.
(3)Opcode:为0表示标准查询,为1表示反向查询,为2表示服务器状态请求.
(4)AA:在应答报文中才有意义.表示应答服务器为授权DNS服务器.
(5)TC:表示可截断.如应答报文长度超过512字节,则只返回前512字节.
(6)RD:如为1,表示建议域名服务器进行递归查询.
(7)RA:为1表示DNS服务器支持递归查询.
(8)Z:保留值,未使用.在查询和应答报文中必须设为0.
(9)RCODE:在应答报文中设置.为0表示无错误,为1表示报文格式错误,为2表示DNS服务器无法处理查询请求,为3表示要查询的域名不存在,为4表示DNS服务器不支持该查询类型,为5表示DNS服务器拒绝应答.
(10)QDCOUNT:查询报文中的问题数.
(11)ANCOUNT:应答报文中的回答数.
(12)NSCOUNT:授权记录中的DNS服务器资源记录数.
(13)ARCOUNT:附加记录中的资源记录数.
1.3.2 Question问题段
(1)QNAME:要查询的域名(反向查询中为IP地址).如,在报文中的表示方式为“3www4sohu3com0”,数字表示当前这一级域名中的字符数.
(2)QTYPE:需要应答报文查询的记录类型,常见的查询类型列在表1中.
(3)QCLASS:规定查询的类.对于互联网,值为1(IN).
1.3.3 Answer,Authority和Additional段
这三个字段的格式是一样的,各字段含义如下:
(1)NAME:域名.
(2)TYPE:查询类型.含义和Question段中TYPE的含义一致.
(3)CLASS:查询类.含义和Question段中CLASS的含义一致.
(4)TTL:查詢结果在客户端缓存的存放时间,单位为秒.
(5)RDLENGTH:RDATA字段的长度.
(6)RDATA:格式和TYPE和CLASS有关.例如,TYPE为A,CLASS为IN,那么RDATA为一个4字节ARPA网络地址.
1.4 WireShark软件和Packet Tracer软件
1.4.1 WireShark
WireShark是目前世界上应用最广泛的网络协议分析软件.其主要功能是截获网络报文信息,并以网络协议数据报的详细格式将网络信息的微观细节显现给用户.WireShark操作简单,功能强大,是网络安全工程师和普通学习者分析网络协议的优秀工具.
1.4.2 Packet Tracer
Cisco Packet Tracer是一款功能强大的网络仿真软件,用户可以使用该软件设计、配置、排除网络故障、验证网络的正确性,通过模拟仿真网络观察网络的实时运行情况.为计算机网络技实验教学,提供了直观的仿真环境[13-14].
2 实验目的
(1)掌握DNS报文的格式
(2)理解域名查询的工作过程
(3)熟练使用WireShark软件抓取DNS包
(4)熟练使用Packet Tracer搭建虚拟仿真网络
(5)掌握ipconfig和nslookup命令的使用方法
3 实验内容
3.1 实验环境
采用项目驱动、理论实践一体化的实验教学模式[15],共安排4个实验学时.将授课班级学生分为若干个小组进行实验.实验的软、硬件环境为:
(1)操作系统:64-bit Windows 10
(2)浏览器:Chrome Version 73.0.3683.103
(3)WireShark Version 3.0.0
(4)Cisco Packet Tracer Version 6.0.0.0045
3.2 实验步骤
(1)使用ipconfig命令查询本机IP地址和本地DNS服务器地址
首先,要确保本地主机可以正常连接互联网.在终端窗口输入ipconfig/all命令,结果如图4所示.查询到本地主机的局域网IPv4地址为192. 168.1.110,首选/备用DNS服务器地址分别为:61. 132.163.68和202.102.213.68.
(2)使用nslookup命令查询域名对应的IP地址
nslookup命令可以用于查询域名所对应的IP地址.例如,在终端窗口输入nslookup 查询到新浪网的IP地址为202.102.94.124,应答DNS服务器地址为61.132.163.68,这正是本地主机默认的首选DNS服务器地址.使用nslookup命令的第二种方式是在终端窗口中直接输入nslookup,然后可连续输入多个要查询的域名.通过这种方式查询和的IP地址.如图5所示.
(3)查看/清除本地DNS缓存
在终端窗口中输入“ipconfig/displaydns”可以查询保存在本地主机缓存中的DNS查询结果,输入“ipconfig/flushdns”可以清除保存在本地主机的DNS缓存.
(4)使用WireShark抓取并分析DNS查询包和应答包
打开WireShark软件,由于域名查询使用53号端口,因此将网络报文的捕获条件设置为”udp.port == 53 "| tcp.port == 53”.在浏览器地址栏输入“”,图6是通过WireShark截获到的查询包和应答包.
分析图7中的域名查询包详细信息:用户192.168.1.110向DNS服务器61.132.163.68发出域名查询请求,查询方式为递归查询,有1个查询问题,查询域名为,查询类型为A(IP地址),查询的类为IN(互联网).
图8是应答包的详细信息:DNS服务器支持递归查询,1个查询问题的应答数为3.分析Answers中的应答结果可知,前两个应答的类型都为CNAME(规范域名),sohu.com的规范域名为fjsy.a.sohu.com和gs.a.sohu.com,第三个应答的类型为A(IPv4地址),该应答给出了域名sohu.com的IP地址为110.43.83.1,这和使用nslookup命令查询到的结果是一致的.Answers中还给出了三个应答结果在缓存中的TTL(存放时间).
(5)使用Packet Tracer仿真DNS递归查询和迭代查询
打开Packet Tracer软件,搭建如图9所示的虚拟仿真网络拓扑结构.所有主机和服务器的IP地址均设在同一网段,各服务器的IP地址和所要开启的服务和相关信息如表2所示.将实验用户主机PC-PT的地址设为192.168.0.1,本地DNS服务器地址设为192.168.0.5.
分别设置sina.com和sohu.com服务器的HTTP服务的内容如图10所示.
接下来,进行域名查询实验.在用户主机PC-PT(192.168.0.1)的WEB浏览器中分别输入和,可正常进行域名查询,结果如图11所示.
用户主机PC-PT访问时,直接通过本地DNS服务器(192.168.0.5)查询.这种查询方式为递归查询.
用户主机PC-PT访问时,先向本地DNS服务器(192.168.0.5)查询;本地DNS服务器中没有应答结果,因此它向根DNS服务器(192.168.0.6)查询;根DNS服务器中也没有应答结果,但它能查询到应答结果保存在dns.sohu.com(192.168.0.5)中,于是由根DNS服务器向dns.sohu.com发起查询并将查询结果存入自己的缓存,再转发给本地DNS服务器;本地DNS服务器接收到结果后也存入自己的缓存,然后再发给用户主机PC-PT.这种查询方式为迭代查询.
4 结束语
通过本实验项目的理论学习和实践操作后,学生对于DNS报文的格式、域名查询的过程有了直观深刻的认识,并且能够熟练使用WireShark抓取网络数据包,使用Packet Tracer构建模拟仿真网络,达到了实验目的.教学实践表明,该实验项目突出了重点知识的掌握,加深了学生对于计算机网络知识的理解,增强了学生的动手实践能力和团队合作意识,降低了学习计算机网络知识的枯燥性,激发了学生的学习兴趣,取得了较好的教学效果.
参考文献:
〔1〕刘利强,陈凯文,周细义.计算机网络实验教学的改革与实践[J].实验技术与管理,2007,24(12):118-125.
〔2〕姜枫.计算机网络实验教程[M].北京:清华大学出版社,2010.
〔3〕郭秋萍.计算机网络技术实验教程[M].北京:清华大学出版社,2009.
〔4〕冯博琴.计算机网络实验教程[M].北京:高等教育出版社,2011.
〔5〕何增颖,陈建锐.基于虚拟技术的计算机实验教学[J].实验技术与管理,2012,29(1):79-82.
〔6〕李宏儒.虚拟化技术在计算机实验教学中的应用[J].实验技术与管理,2010,27(5):90-92.
〔7〕Sanders C. Wireshark数据包分析实战[M].第2版.诸葛建伟,陈琳,许伟林译.北京:人民邮电出版社,2013.
〔8〕Orebaugh A,Ramirez G,Burke J, et al. Wireshark & Ethereal Network Protocol Analyzer Toolkit[M]. Rockland: Syngress Publishing,Inc.,2007.
〔9〕徐慧,王春枝,陈宏伟,等.以协议分析为导向的本科生网络管理能力培养模式[J].计算机教育,2013(14):13-16.
〔10〕谢希仁.计算机网络[M].(第5版)北京:电子工业出版社,2008.
〔11〕曹雪峰.計算机网络原理——基于实验的协议分析方法[M].北京:清华大学出版社,2014.
〔12〕Mockapetris P. Domain Names - Implementation and Specification[S]. IETF RFC 1035,1987.
〔13〕崔北亮.CCNA认证指南[M].北京:电子工业出版社,2009.82-83.
〔14〕沈鑫剡,叶寒锋,刘鹏,等.计算机网络安全学习辅导与实验指南[M].北京:清华大学出版社,2012.12-18.
〔15〕吴献文.计算机网络安全应用教程[M].北京:人民邮电出版社,2010.