1
计算机网络技术理论与实践
1.9.1 8.1 DNS服务原理

8.1 DNS服务原理

DNS(Domain Name System,域名系统)提供了域名和IP地址之间的双向解析功能。当用户提出利用计算机的域名查询相应IP地址请求的时候,DNS服务器从其数据库中查询出对应的IP地址,并将其回送给用户。如果没有域名解析服务,我们在访问网站的时候就只能输入IP地址。IP地址是一串数字,不如具有实际意义的域名便于记忆。例如我们要访问北京大学的网站,可以在IE浏览器的地址栏中输入网址www.pku.edu.cn,也可输入IP地址124.205.79.6,显然,网址www.pku.edu.cn更容易记忆。

DNS中的域名服务器上,保存了IP地址与域名对应关系的记录。当在IE浏览器中输入域名时,它会帮助用户把输入的域名解析为IP地址。域名是层次结构,一级一级的,域名解析的时候也会从上到下,一级一级地去解析,如果域名在某台DNS服务器上存在,那么它一定会被解析出来。只有将域名解析出来才可以访问目标网址,因为在Internet上只能通过IP地址来寻找目标主机。

(1)域名结构

域名由两个或两个以上的词构成,中间由点号分隔开,它是Internet上某台计算机或计算机组的名称,采用层次化的命名方式,最右边的那个词称为顶级域名。例如www.sina.com,其中sina是域名的主体,com是顶级域名,www是sina域内的一组计算机,其上运行了Web服务,如图8-1所示。

域名可分为不同级别,包括顶级域名、二级域名、三级域名等。顶级域名又分为两类:一是国家顶级域名(national Top-Level Domain names,nTLDs),目前200多个国家都按照ISO3166国家代码分配了顶级域名,例如中国是cn,美国是us,日本是jp等;二是国际顶级域名(international Top-Level Domain names,iTDs),例如表示工商企业的com,表示网络提供商的net,表示非盈利组织的org等。二级域名是指顶级域名之下的域名,在国际顶级域名下,它是指域名注册人的网上名称,例如ibm.com、yahoo.com、microsoft.com等;在国家顶级域名下,它是表示注册企业类别的符号,例如com.cn、edu.cn、gov.cn、net.cn等。三级域名则一般都是域名注册人的网上名称,例如bupt.edu.cn等。

img192

图8-1 域名层次结构示意图

(2)域名解析过程

DNS分为Client(客户端)和Server(服务器),Client扮演发问的角色,也就是询问Server一个域名,而Server必须要回答此域名的真正IP地址。Client本地的DNS服务器会先查自己的数据库,如果自己的数据库中没有,则会向该DNS上所设的DNS询问,依次得到答案后,将收到的答案存起来,并回答客户。DNS服务器通常归属于某个授权区(Zone),记录所属该网域下的各域名资料,这个资料包括网域下的次网域名称及主机名称。

在每一个DNS服务器中都有一个快取缓存区(Cache),这个快取缓存区的主要目的是将该DNS服务器所查询出来的域名及对应的IP地址记录下来,这样当下一次其他客户端到此服务器上查询相同域名时,服务器就不用到别的DNS服务器上去查找,直接可以从缓存区中找到该记录,传回给客户端,加快客户端对域名解析的速度。

当DNS客户端向指定的本地DNS服务器查询网络上某台主机名称时,该DNS服务器会在本身数据库中查找用户所指定的域名,如果没有,该服务器会先在自己的快取缓存区中查询有无该纪录,如果找到该域名记录,就直接将所对应的IP地址传回给客户端,如果快取缓存区中也没有,该服务器会向别的域名服务器查询所要的域名。其他服务器上也执行相同的查询动作,当查询到结果后会回复给本地DNS服务器;若没查询到结果,则向本地域名服务器回复与结果最接近的域名服务器,由本地域名服务器向此域名服务器再进行查询,按照这种方式,直到查到结果为止。当本地DNS服务器接收到另一台DNS服务器查询的结果后,先将所查询到的域名及对应IP地址记录到快取缓存区中,然后将所查询到的结果回复给客户端。下面通过一个实例来详细介绍域名解析的全过程。

DNS查询实例:

假设用户要查询网络上一个为www.test.com.cn域名,从此域名可以得知该主机在中国,而且要找的组织名称为test.com.cn,寻找的主机为此组织网域下的www主机,名称解析过程如图8-2所示。

img193

图8-2 域名解析过程示意图

在DNS的客户端键入查询主机域名的指令,如下(下面例子中的域名实际不存在):

c:\ping www.test.com.cn

pinging www.test.com.cn[192.168.0.101]with 32bytes of data

reply from 192.168.0.101bytes time<10ms ttl 253

在客户端的操作系统中嵌有DNS解析器,它负责处理所有应用程序的DNS查询请求。解析过程如下:

(1)客户端的解析器向本地域名服务器发出查询www.test.com.cn主机的请求。

(2)被指定的本地域名服务器先查询该主机名称是否属于本网域,如果查出该主机名称不属于本网域范围,会再查询快取缓存区的记录,查看是否有此主机名称。查询后发现缓存区中没有此记录,会取得根网域众多服务器中的一台服务器,向其发出查找www.test.com.cn域名的请求。

(3)在根网域中,根域名服务器记录了各顶级域名分别是由哪些DNS服务器负责,所以它会向本地域名服务器响应最接近查询请求的控制cn网域的域名服务器的IP地址。

(4)本地域名服务器得知那个负责cn域名的域名服务器后,会向该服务器发出查寻www.test.com.cn域名的请求。

(5)在cn网域中,被请求的域名服务器在本机上没有找到此域名的记录,会向本地域名服务器响应离查询请求域名最近的服务器,即控制com.cn网域的域名服务器的IP地址。

(6)本地域名服务器会再向管理com.cn网域的域名服务器发出寻找www.test.com.cn域名的请求。

(7)在com.cn网域中,被请求的域名服务器在本机上没有找到此域名的记录,会回复本地域名服务器与查询结果最接近的域名服务器,即控制test.com.cn网域的域名服务器的IP地址。

(8)本地域名服务器再向test.com.cn网域的域名服务器发出查询www.test.com.cn的请求。

(9)在test.com.cn网域的域名服务器上找到了www.test.com.cn主机对应的IP地址192.168.0.101,并将查询结果返回给本地域名服务器。

(10)发出查询请求的本地域名服务器,在接收到查询结果的域名与IP地址对应关系后,把查询的结果存储到快取缓存区中,以方便后面的查询,并将结果响应给查询域名的解析器,完成整个域名的查询过程。

在DNS系统中,有两种查询模式,分别为:递归查询(Recursive)和迭代查询(Iterative)。递归查询是客户端的解析器向本地域名服务器的查询模式,在这种方式下解析器向本地域名服务器发出查询请求,本地域名服务器通过层层查询得到最终结果,并把最终结果返回给解析器。解析器收到的响应只能是正确响应或者找不到该域名的错误信息。迭代查询通常用于域名服务器间的查询,也可以用在解析器和域名服务器间。由解析器或是域名服务器上发出查询请求,在这种方式下响应回来的信息不一定是最后正确的域名解析结果或错误信息,而可能是最接近管理此域名的服务器的IP地址,然后由查询发起端再到中间结果所指向的域名服务器上去查询所要解析的域名,反复查询直到得到最终的查询结果。由上例可以看出,一般查询域名的过程中,这两种查询模式同时存在。

解析器查询域名时使用UDP端口53进行域名的查询和接收应答。域名服务器和域名服务器之间也使用UDP端口53进行域名的查询和应答,但是也使用TCP端口53进行域信息的传输。

(3)主机上的域名服务

在用户主机上需要指定域名服务器,这样用户才能根据域名来访问网络。主机上的域名服务器地址可以通过DHCP服务器自动分配,也可以由用户指定。用户可以通过询问网络管理员来获取本地域名服务器,或者查询出一些公用的域名服务器,并将该服务器的IP地址设置到Internet协议配置中。

用户可以在控制台中采用nslookup命令来查看本地的域名服务器:(示例内容不是真实内容)

C:\>nslookup

Default Server:gjjdial.bta.net.cn

Address:202.101.192.66

通过nslookup命令可以查出默认的本地域名服务器是gjjdial.bta.net.cn,并且可以得到它的IP地址202.101.192.66。此外,nslookup命令可以对域名和IP地址进行双向解析,比如当用户需要解析新浪域名时,可以输入:

C:\>nslookup www.sina.com

Server:gjjdial.bta.net.cn

Address:202.106.195.68

Non-authoritative answer:

Name:libra.sina.com.cn

Addresses:202.108.33.86,202.108.33.87,202.108.33.88,202.108.33.73

     202.108.33.74,202.108.33.75,202.108.33.76,202.108.33.77,202.108.33.78

     202.108.33.79,202.108.33.80,202.108.33.81,202.108.33.82,202.108.33.83

     202.108.33.84,202.108.33.85

Aliases:www.sina.com,us.sina.com.cn,news.sina.com.cn

    jupiter.sina.com.cn

其中Non-authoritative answer表明该域名所注册的域名服务器不是这个本地域名服务器。此外,我们还可以看出,一个域名可以对应多个IP地址,这样可以很好地实现负载均衡。