APP下载

DNS查询原理与实验

2017-07-14惠嘉荣胡曦明

电脑知识与技术 2017年16期

惠嘉荣+胡曦明

摘要:DNS是因特网上主机之间相互通信的基础,它提供了一个域名和IP地址之间的映射关系。这篇文章介绍了DNS的工作原理,使用nslookup程序探究了在WIFI共享大师环境下、SNNU无线上网环境下和PPPOE拨号上网环境下DNS的A类查询结果并与在浏览器访问百度时的DNS查询结果作以比较,总结了这几种情况下查询的异同。

关键词:DNS;DNS后缀;DNS查询;DNS解析;nslookup

1概述

DNS(Domain Name System,域名系统)是一个分布式数据库,保存了域名和IP地址之间的映射关系。有了这一映射关系,当要访问一台主机时,人们不用记住其IP地址而只需记住其对应的易于记忆的字符串即可。例如:人們在访问百度时只需记住www.baidu.eom,而不用记住此域名后对应的IPv4地址。

WIFI共享大师是一个应用软件,在一台电脑上安装此软件并通过有线接人来连接到互联网后,就可以利用此软件来开启WIFI,供他人使用。

SNNU是陕西师范大学的无线WIFI,连接到此WIFI经过认证后,即可连接到互联网,在互联网上进行通信。

2DNS工作机制

A类型是DNS资源记录中的一种类型,IPv4地址记录(32位IPv4地址)。

我们平常上网访问网页时的DNS工作过程如下(以访问百度为例):

在浏览器输入http://www.baidu.eom/,按下回车之后,浏览器首先尝试从浏览器的缓存中获取www.baidu.com对应的IP地址,如果能够取到,浏览器就会使用这个IP地址作为数据包发送时的目的IP地址。如果取不到,浏览器就会查找本机的Host文件,获取www.baidu.com对应的IP地址。如果Host文件中也没有www.baidu.eom对应的IP地址,这时,浏览器便会使用DNS协议,向本地DNS服务器发出一个IP地址查询的A类型的DNS请求报文。

1)本地DNS服务器有对应的DNS记录,将百度对应IP地址响应给本机。

2)本地DNS服务器无对应的DNS记录,向根域名服务器发起对百度IP地址的查询。

3)根域名服务器有对应的DNS记录,发送响应给本地DNS服务器。本地DNS服务器收到回答后,发送响应给主机并缓存此条记录。

4)根域名服务器无对应的DNS记录,向本地DNS服务器发送.com域的域名服务器的IP地址。

5)本地DNS服务器收到来自根域名服务器的回答之后,便会向对应的.con域的域名服务器发送对百度的IP地址的查询报文。con域的域名服务器收到这样的查询报文之后,重复刚才和根域名服务器相同的动作。这样一个一个域查询下去,直到本机收到对百度IP地址查询的回应,或者请求超时响应。

以上查询过程中,本机到本地DNS服务器是递归查询。本地DNS服务器向其他DNS服务器发起查询是一个迭代的过程。

3实验

3.1nslookup程序下DNS的A类查询

nslookup是一个用于查询Internet域名信息或诊断DNS服务器问题的工具。在WINDOWS 10的操作系统中,进入到命令提示符(管理员),输入nslookup即可进入到此程序中来。此程序有其对应的命令参数。图1为连接到WIFI共享大师开启的WIFI后,在nslookup程序下进行的对baidu.com域的IP查询。(此前已经刷新了DNS缓存)

图1显示,查询出现了一次超时回答,在超时回答之后又给出了baidu.com域对应的IP地址。利用wireshark抓取的报文告诉我们:在进行DNS查询时,首先进行了一次对baidu.com.workgroup域名对应IP地址的查询,且没有收到回答,导致请求超时。然后再进行了一次对baidu.com域名对应IP地址的查询,并收到了对应的IP地址的回答。与此同时也出现了一个问题:为何会首先进行对baidu.com.workgroup域名的IP地址的查询呢?

网络连接解释了这个现象:网络连接中连接特定的DNS后缀一栏中显示值为workgroup。在DNS查询过程中,若网络本身连接有特定的DNS后缀,则在进行DNS查询时会首先进行带后缀的查询。图1所示就是这个原因导致的。

在SNNU以及PPPOE拨号环境下进行DNS的A类查询时的DNS工作过程与图1所示基本相同。SNNU网络连接显示的特定DNS后缀为snnu.edu.cn。PPPOE拨号环境下网络连接显示的特定DNS后缀也为snnu.edu.cn。在这两种网络环境下都使用nslookup程序发出对百度IP地址的A类查询,查询结果如图2、图3所示。SNNU环境下查询到的百度的IP地址并没有带上特定的DNS后缀,这是为什么呢?利用wireshark抓包发现其的确是先进行了带有snnu.edu.cn后缀的查询,不过收到的回答显示no such name,所以才又进行了不带这一后缀的查询,并给出了查询到的百度的IP地址。而在PPPOE拨号环境下,由于带snnu.edu.cn这个后缀能够直接查询到百度的IP地址,所以结果也就和SNNU环境下查询到的结果不同了。

由此得出,在nslookup程序下进行DNS的A类查询时,若网络本身带有特定的DNS后缀,则查询时会先进行带特定后缀的查询。当出现带特定后缀查询不到对应IP地址或者请求超时这两种情况,才会进行不带后缀的DNS的A类查询。

3.2浏览器访问百度时的DNS查询

在三种环境下用浏览器访问百度,发现DNS解析过程基本相同,解析到的百度的IP地址也一样,如图4、图5。浏览器访问百度时进行的DNS的A类查询并没有带特定后缀。这也显示出,nslookup程序下对DNS进行A类查询和平时用浏览器上网时的DNS查询过程是不同的。

4结论

实际生活中的DNS查询过程并不和我们所学习到的完全相同,它总是根据网络情况的不同而有所变化。但是其大体思路还是一样的。本文对三种不同网络情况下的基于nslookup程序的DNS的A类查询结果进行了比较分析,并和浏览器访问百度时的DNS查询过程做了比较,得出了二者之间的异同。但是对于浏览器访问百度时DNS的具体工作过程和nslookup这一程序下的DNS的A类查询机制还是需要进一步探究,来解释二者异同的原因。