DNS协议测试软件的设计与实现

2017-02-06 00:33阮晓龙
软件 2016年6期

阮晓龙

摘要:本文通过对DNS协议和DNS系统的业务流程进行分析,以及目前现有的DNS协议测试软件进行分析,设计并实现了一种对DNS协议状态进行测试的软件。软件可以实现不同类型记录的检测,并对响应数据分析得到DNS服务器的访问状态以及访问性能情况。实例证明,该软件能很好地完成检测与分析任务,方便对DNS服务器的运行情况进行正确评估。

关键词:DNS协议;DNS报文;Whois信息查询

引言

随着互联网的高速发展,Web业务的访问量大大增加,几何级数增长的Web访问量对DNS服务器的解析性能提出了更高要求。域名服务是网络中比较重要的基础服务之一,DNS的解析服务性能影响着网络访问的服务质量。

本文首先分析了DNS协议的业务流程,继而引出一些常见的DNS协议测试软件,通过这些测试软件的对比得到新的需求,基于新的需求进行软件的设计与实现,并将开发的软件投入各种场景的应用,最后对软件的测试结果进行分析。研究表明,该软件能很好地完成检测与分析任务,为用户在自主评估DNS服务器方面提供了较大的帮助和便利。

1DNS基本信息

1.1DNS概念

所谓DNS,是Domain Name System的英文缩写,又称域名系统。它在互联网的作用是:把域名转换成为网络可以识别的IP地址。当一台主机访问网络上的另一台主机时,就需要知道对方的IP地址,而用户只记得另一台主机的域名,此时,用户输入域名后,本机就需要找到该域名对应的IP地址是什么,这个过程,就叫做域名解析。

1.2DNS报文

DNS报文是DNS协议的具体实现,作为DNS协议的通信基础,熟悉DNS的报文格式有助于理解DNS的工作原理。DNS报文分报头和正文段两部分,其中正文段分四类:查询段、应答段、授权段和附加段。其具体结构如图1所示:

DNS正文段中的查询段用于主机向DNS服务器发送域名地址解析请求,应答段、授权段和附加段用于DNS服务器返回域名地址解析的结果。

1.3DNS工作过程

DNS是一个分布式系统,它的管理与控制也是分布式的。当一个用户在访问一个域名地址时,DNS系统的业务流程如图2所示:

当DNS客户端向域名服务器发出域名解析请求时,因为被请求的DNS都会有自己的资料库,所以域名服务器会通过查找自己的资料库来回应此域名的真正IP地址。如果在自己的资料库中没有找到,DNS服务器则会向根域服务器请求协同寻找。

2 DNS测试软件

2.1DNS测试软件介绍

DNS测试软件能够帮助用户方便的评估出某台DNS服务器域名解析服务是否正常与高效。

2.2DNS测试软件分类

在这里,将DNS测试软件划分为两类,一种是在线DNS测试软件,另一种是可单机运行的DNS测试客户端软件。

在线版DNS测试软件:只需在浏览器中输入测试软件的域名,即可实现DNS解析检测,主要查询公网中DNS服务的状态;

客户端版DNS测试软件:线上可检测公网DNS服务状态,线下还能实现私网中DNS服务状态的检测。

2.3功能对比

两种DNS测试软件的功能对比如表1所示:

2.4DNS测试软件的不足

对于在线版DNS测试软件来说,依赖互联网既是优势,也是不足,它只能检测公网上已有的DNS服务器,而不能对校园网等类型的内部DNS服务器进行检测。客户端版DNS测试软件又大多是国外产品,在国内的易用性较差,且软件太大,且需要安装。

3DNS测试软件的需求

3.1定位

DNS测试软件是一种客户端软件,功能多易用性强,支持中文。

3.2功能需求

DNS测试软件的功能需求如下:

(1)软件的界面友好,简明,易用,使用户能够轻松的进行操作。

(2)软件的可靠性高,能够充分保证检测结果的准确性和有效性,以便准确的判断出DNS服务器的状态特征。

(3)能够实现对指定记录在本地DNS服务器、公共DNS服务器和指定DNS服务器下的解析测试。

(4)能够对域名所属的注册信息等进行查询,并保证查询结果实时准确。

3.3软件的价值

DNS测试软件可方便快捷的实现DNS服务检测,即使在公网断开的情况下,也能准确的分析本地DNS服务器的内网解析能力,可帮助用户在网络出现故障时,检测DNS服务器的生存状态,为故障排除提供依据。

4DNS测试软件的实现

4.1结构设计

4.1.1技术路线

软件结构采用单机客户端模式,使用WPF开发。

4.1.2逻辑结构

该软件通过互联网/路由器向目标DNS服务器发送解析请求,DNS服务器进行响应并将请求数据通过互联网/路由器返回给DNS协议分析软件。结构图如图3所示:

4.2功能设计

4.2.1功能层次结构

HTTP协议分析软件功能结构层次图如图4所示:

4.2.2原型设计

DNS协议分析软件的原型设计图如5-图8所示:

4.3软件关键功能实现

DNS测试软件的记录测试功能关键代码摘录如下:

//判断是否为本机首选DNS服务器

if(cbDNSserver.SelectedIndex=0)

//得到描述本地计算机上的网络接口的对象

N etworkIntertacell adapters=NetworkIntertace.GetAllNetworkInterfaces();

//得到描述此网络接口的配置的对象

IPInterfaceProperties adapterProperties=adapt-ers[0】.GetlPProperties();

//获取此接口的域名系统(DNS)服务器的首个地址

dnsname—adapterProperties.DnsAddresses[0].ToString();

//从选中的下拉列表值中查找出公共域名系统(DNs)服务器地址的开始位置

int m—ebDNSserver.SelectedValue.ToString().Indexof(”(”);

//从选中的下拉列表值中查找出公共域名系统(DNs)服务器地址的结束位置

int n—cbDNSserver.SelectedValue.ToString().Indexof(”)”);

//筛选出公共域名系统(DNS)服务器地址

dnsname—cbDNSserver.SelectedValue.ToString().Substring(m+1,n-m-1);

//添加DNS记录测试结果列表的表头

dt.Rows.Add("DNs记录","记录类型","解析结果","TTL");

//声明一个自定义的DNS对象

MyDns mydns=new MyDns();

//查询A类型的DNS记录

if(!mydns.Search(host,QueryType.A,dnsname,null))

//不存在时,提示服务器返回码

Message-Box.Show(mydns.headeERCODE.ToString());

4.4软件交互设计

DNS协议分析软件包含软件主页、DNS记录测试、Whois信息查询三个部分,其交互设计为:

1.软件主页

DNS协议分析软件的软件主页,介绍了DNS协议分析软件的功能详情,如图9所示:

2.DNS记录测试

DNS协议分析软件的DNS记录测试,在输入DNS记录并选择指定DNS服务器后,将会使用指定的DNS服务器对输入的DNS记录进行解析测试,并以将测试结果以列表方式展示出来,交互界面如图10-图12所示:

3.Whois信息查询

Whois信息查询,输入域名后,可对该域名的公共Whois信息进行查询,并对查询结果进行展示,交互界面图13所示:

4.5软件测试

DNS协议分析软件的软件测试为功能确认测试,具体方法如下:

1.双击软件运行,出现欢迎界面;

2.点击“DNS记录测试”,输入DNS记录,这里以www.baidu.com为例,测试结果如图14所示:

3.点击“Whois信息查询”,输入域名信息,进行域名公共Whois信息查询,这里以sina.com.cn为例,测试结果如图15所示:

5软件应用与分析

5.1典型应用一:检测本地DNS服务器的可用

应用场景:校园网中,一般用户若要上网,需要使用校园网的DNS服务器提供服务,此时,可使用DNS协议测试软件检测本地校园网DNS服务器的名称和可用性。

操作方法:

第一步:在电脑上上双击DNS协议测试软件运行,出现软件主页后;

第二步:选择DNS记录测试,之后在DNS记录的输入框中填写一个域名(最好是知名网站的域名信息,如“www.baidu.com”);

第三步:选择默认的DNS服务器地址,即本机首选DNS服务器;

第四步:点击“开始测试”按钮,等待测试结果;

第五步:查看DNS记录解析结果,其中,软件的中间左侧部分显示DNS解析服务器信息,即本机首选DNS服务器地址;中间右侧部分显示DNS记录测试结果,呈列表形式,若解析成功,会出现该DNS记录相应的解析结果,说明本机首选DNS服务器状态为可用,测试结果包含该条记录的名称、记录类型、解析结果和TTL,其中TTL值越小,说明本机首先DNS服务器解析效率越高;若解析失败,说明本机首先DNS服务器状态不可用。

最后,还可以重新输入其他DNS记录,重复二、三、四、五步来进行排他性测试,测试中使用的DNS记录数越多,知名度越高,测试的结果就越准确。

操作截图:

使用价值:软件操作简单,结果分析明了,可以简单直接的查看到本机首选DNS服务器的信息和状态,并可对测试结果进行分析得到本机首选DNS服务器解析的准确度和性能。

5.2典型应用二:本地DNS服务器故障,选择

最优的公共DNS服务器使用

应用场景:在我们的日常生活中,当遇到上网高峰期时,因同时上网用户量过多,本地DNS服务器承担的压力较大,会造成相应的解析效率下降或不稳定等故障,此时可适时选择其他公共DNS服务器来保证本机上网的正常。

操作方法.

第一步:在电脑上双击DNS协议测试软件运行,出现软件主页后;

第二步:选择DNS记录测试,之后在DNS记录的输入框中填写一个域名(最好是知名网站的域名信息,如“www.baidu.com”);

第三步:选择一条软件收录的公共DNS服务器地址;

第四步:点击“开始测试”按钮,等待测试结果;

第五步:查看DNS记录解析结果,其中,软件的中间左侧部分显示DNS解析服务器信息,即所选的公共DNS服务器地址;中间右侧部分显示DNS记录测试结果,呈列表形式,若解析成功,会出现该DNS记录相应的解析结果,说明该公共DNS服务器状态为可用,测试结果包含该条记录的名称、记录类型、解析结果和TTL,其中TTL值越小,说明此公共DNS服务器解析效率越高;若解析失败,说明所选公共DNS服务器状态不可用。

之后,依次选择其他公共DNS服务器进行测试,重复三、四、五步来进行对比性测试,最后根据对比测试结果,选择一条解析效率最高的公共DNS服务器使用。

操作截图:

使用价值:软件收录的有知名的公共DNS服务器,通过简单的对比性测试,即可选择出最优的DNS服务器来使用。

5.3典型应用三:自定义DNS服务器的检测

应用场景:在实验室中,内网中的某台DNS服务器,需对其进行可用性检测,因无法连接公共网络,此时就可选用DNS测试软件来进行检测。

操作方法:

第一步:在电脑上上双击DNS协议测试软件运行,出现软件主页;

第二步:选择DNS记录测试,之后在DNS记录的输入框中填写一个实验室域名(需另行配置);

第三步:选择指定DNS服务器地址,即将复选框选中后,输入自定义DNS服务器地址;

第四步:点击“开始测试”按钮,等待测试结果;

第五步:查看DNS记录解析结果,其中,软件的中间左侧部分显示DNS解析服务器信息,即本机首选DNS服务器地址;中间右侧部分显示DNS记录测试结果,呈列表形式,若解析成功,会出现该DNS记录相应的解析结果,说明白定义的DNS服务器状态为可用,测试结果包含该条记录的名称、记录类型、解析结果和TTL,其中TTL值越小,说明白定义的DNS服务器解析效率越高;若解析失败,说明白定义的DNS服务器状态不可用。

操作截图:

使用价值:在离线的局域网中,只需简单的操作,即可实现内部DNS服务器的可用性检测。

5.4典型应用四:域名Whois信息查询

应用场景:域名Whois信息作为域名的身份简介,要对其进行精确查询时,就可选用DNS测试软件来进行检测。

操作方法:

第一步:在电脑上上双击DNS协议测试软件运行,出现软件主页后;

第二步:选择Whois信息查询,之后在域名信息的输入框中填写一个域名;

第三步:选择指定DNS服务器地址,即将复选框选中后,输入自定义DNS服务器地址;

第四步:点击“开始测试”按钮,等待测试结果;

第五步:查看DNS记录解析结果,其中,软件的中间左侧部分显示DNS解析服务器信息,即本机首选DNS服务器地址;中间右侧部分显示DNS记录测试结果,呈列表形式,若解析成功,会出现该DNS记录相应的解析结果,说明白定义的DNS服务器状态为可用,测试结果包含该条记录的名称、记录类型、解析结果和TTL,其中TTL值越小,说明白定义的DNS服务器解析效率越高;若解析失败,说明白定义的DNS服务器状态不可用。

操作截图:使用价值:在离线的局域网中,只需简单的操作,即可实现内部DNS服务器的可用性检测。

6结论

6.1成果

通过对常用DNS测试软件的对比分析,指出这些工具的优缺点,进行需求分析设计出软件的功能框架,然后对需求进行细化处理并实现功能,最后进行uI设计、软件开发、软件测试并将软件投入使用。

软件完成之后面对互联网提供服务,在互联网上提供免费下载。为互联网上的用户提供一个操作简单,体验良好的DNS协议分析软件。

通过对DNS协议分析软件应用举例,将用户在日常网络使用和管理中遇到的DNS服务相关的问题进行阐述和分析,并说明如何使用该软件进行解决,为用户提供了较大的帮助和便利,提高了用户在DNS协议方面的知识和技能。

6.2进一步完善计划

1.现有功能优化。对软件现有的功能进行优化,修正使用过程中可能出现的功能错误,并对原有功能的性能进行优化,确保软件在运行过程中更加高效、快速。

2.新功能扩展。对软件原有的功能进行丰富性扩展,增加公共DNS服务器的智能对比分析,帮助用户更加快捷的选择使用;增加DNS记录测试的性能测试方法,实现指定DNS服务器的性能测试。

3.现有功能深化。对DNS协议进行更加深入的研究与探索,剖析DNS协议的解析原理,以进一步提高DNS协议测试软件功能的健壮性,智能性与高效性,以适应IPv6普及和应用的大势所趋。