Chinaunix首页 | 论坛 | 博客
  • 博客访问: 384357
  • 博文数量: 63
  • 博客积分: 3142
  • 博客等级: 中校
  • 技术积分: 838
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-06 13:35
文章分类

全部博文(63)

文章存档

2011年(2)

2010年(114)

2009年(3)

我的朋友

分类: LINUX

2010-05-04 13:42:25

14.1.3  DNS查询的过程

当客户端程序要通过一个主机名称来访问网络中的一台主机时,它首先要得到这个主机名称所对应的IP地址,因为IP数据报中允许放置的是目地主机的IP地址,而不是主机名称。可以从本机的hosts文件中得到主机名称所对应的IP地址,但如果hosts文件不能解析该主机名称时,只能通过向客户机所设定DNS服务器进行查询了。

说明:在UNIX系统中,可以设置hosts和dns的使用次序。

可以以不同的方式对DNS查询进行解析。第一种是本地解析,就是客户端可以使用缓存信息就地应答,这些缓存信息是通过以前的查询获得的;第二种是直接解析,就是直接由所设定的DNS服务器解析,使用的是该DNS服务器的资源记录缓存或者其权威回答(如果所查询的域名是该服务器管辖的);第三种是递归查询,即设定的DNS服务器代表客户端向其他DNS服务器查询,以便完全解析该名称,并将结果返回至客户端。第四种是迭代查询,即设定的DNS服务器向客户端返回一个可以解析该域名的其他DNS服务器,客户端再继续向其他DNS服务器查询。

1.本地解析

本地解析的过程如图14-2所示。客户机平时得到的DNS查询记录都保留在DNS缓存中,客户机操作系统上都运行着一个DNS客户端程序。当其他程序提出DNS查询请求时,这个查询请求要传送至DNS客户端程序。DNS客户端程序首先使用本地缓存信息进行解析,如果可以解析所要查询的名称,则DNS客户端程序就直接应答该查询,而不需要向DNS服务器查询,该DNS查询处理过程也就结束了。

 
(点击查看大图)图14-2  本地解析

2.直接解析

如果DNS客户端程序不能从本地DNS缓存回答客户机的DNS查询,它就向客户机所设定的局部DNS服务器发一个查询请求,要求局部DNS服务器进行解析。如图14-3所示,局部DNS服务器得到这个查询请求,首先查看一下所要求查询的域名是不是自己能回答的,如果能回答,则直接给予回答,如是不能回答,再查看自己的DNS缓存,如果可以从缓存中解析,则也是直接给予回应。

 
(点击查看大图)图14-3  局部DNS服务器解析

3.递归解析

当局部DNS服务器自己不能回答客户机的DNS查询时,它就需要向其他DNS服务器进行查询。此时有两种方式,如图14-4所示的是递归方式。局部DNS服务器自己负责向其他DNS服务器进行查询,一般是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询。最后得到的查询结果返回给局部DNS服务器,再由局部DNS服务器返回给客户端。

 
(点击查看大图)图14-4  DNS解析的递归方式

4.迭代解析

当局部DNS服务器自己不能回答客户机的DNS查询时,也可以通过迭代查询的方式进行解析,如图14-5所示。局部DNS服务器不是自己向其他DNS服务器进行查询,而是把能解析该域名的其他DNS服务器的IP地址返回给客户端DNS程序,客户端DNS程序再继续向这些DNS服务器进行查询,直到得到查询结果为止。

 
(点击查看大图)图14-5  DNS解析的迭代方式

以上介绍了DNS解析的4种方式,下面看一下DNS报文的格式。

14.1.4  DNS报文格式

DNS客户端与DNS服务器进行交互时,需要传送各种各样的数据报,这些数据报的总体格式如图14-6所示。DNS报文由12字节长的首部和4个长度可变的字段组成。标识字段由客户程序设置并由服务器返回结果,客户程序通过它来确定响应与查询是否匹配。标识字段包含了以下内容。

定义是查询报文还是响应报文;

查询类型是标准查询、反向查询还是服务器状态请求;

是否是权威回答;

查询方式是递归查询还是迭代查询;

是否支持递归查询;

查询是否有差错或要查的域名不存在。

问题部分中每个问题的格式如图14-7所示,通常只有一个问题。查询名是要查找的名字,它是一个或多个标识符的序列。每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为0结束,长度为0的标识符是根标识符。计数字节的值必须是0~63的数,因为标识符的最大长度仅为63。与其他常用报文格式不一样的是,该字段无需以整32bit边界结束,即无需填充字节。图14-8显示了如何存放域名。其中,3、5、2表示后续字符的个数。

 
(点击查看大图)图14-6  DNS数据报的总体格式
 
图14-7  DNS数据包问题部分格式
 
(点击查看大图)图14-8  域名的表示方法

每个问题都有一个查询类型,而每个应答(也称为一条资源记录)也有一个应答类型。大约有20个不同的类型值,有一些目前已经过时,表14-1列出了常用的一些值。其中有两种可以用于查询类型:一种是A类型,表示期望获得查询名的IP地址。还有一种是PTR类型,表示请求获得一个IP地址对应的域名,也称为指针查询。查询报文格式中的查询类通常是1,指互联网地址。

注意:某些站点也支持其他非IP地址查询,此时查询类将是其他数值。

表14-1  DNS问题和响应的类型值和查询类型值

   

   

   

   

   

   

A

1

IP地址

HINFO

13

主机信息

NS

2

名字服务器

MX

15

邮件交换记录

CName

5

规范名称

AXFR

252

对区域转换的请求

PTR

12

指针记录

*ANY

255

对所有记录的请求


DNS报文一般格式中的最后3个字段是回答字段、授权字段和附加信息字段,它们均采用一种称为资源记录RR(Resource Record)的相同格式。图14-9显示了资源记录的格式,各个字段的含义如下:

 
(点击查看大图)图14-9  DNS资源记录格式


域名是记录中资源数据对应的名字,它的格式和前面介绍的查询名字段格式(图14-8)相同。

类型说明RR的类型码,它的值的取值及含义见表14-1。

类通常为1,指Internet数据。

生存时间字段是客户程序保留该资源记录的秒数,资源记录通常的生存时间值为 2天。

资源数据长度说明资源数据的数量。

资源数据的格式依赖于类型字段的值,对于类型1(A记录)资源数据是4字节的IP地址。

 

14.1.4  DNS报文格式

DNS客户端与DNS服务器进行交互时,需要传送各种各样的数据报,这些数据报的总体格式如图14-6所示。DNS报文由12字节长的首部和4个长度可变的字段组成。标识字段由客户程序设置并由服务器返回结果,客户程序通过它来确定响应与查询是否匹配。标识字段包含了以下内容。

定义是查询报文还是响应报文;

查询类型是标准查询、反向查询还是服务器状态请求;

是否是权威回答;

查询方式是递归查询还是迭代查询;

是否支持递归查询;

查询是否有差错或要查的域名不存在。

问题部分中每个问题的格式如图14-7所示,通常只有一个问题。查询名是要查找的名字,它是一个或多个标识符的序列。每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为0结束,长度为0的标识符是根标识符。计数字节的值必须是0~63的数,因为标识符的最大长度仅为63。与其他常用报文格式不一样的是,该字段无需以整32bit边界结束,即无需填充字节。图14-8显示了如何存放域名。其中,3、5、2表示后续字符的个数。

 
(点击查看大图)图14-6  DNS数据报的总体格式
 
图14-7  DNS数据包问题部分格式
 
(点击查看大图)图14-8  域名的表示方法

每个问题都有一个查询类型,而每个应答(也称为一条资源记录)也有一个应答类型。大约有20个不同的类型值,有一些目前已经过时,表14-1列出了常用的一些值。其中有两种可以用于查询类型:一种是A类型,表示期望获得查询名的IP地址。还有一种是PTR类型,表示请求获得一个IP地址对应的域名,也称为指针查询。查询报文格式中的查询类通常是1,指互联网地址。

注意:某些站点也支持其他非IP地址查询,此时查询类将是其他数值。

表14-1  DNS问题和响应的类型值和查询类型值

   

   

   

   

   

   

A

1

IP地址

HINFO

13

主机信息

NS

2

名字服务器

MX

15

邮件交换记录

CName

5

规范名称

AXFR

252

对区域转换的请求

PTR

12

指针记录

*ANY

255

对所有记录的请求


DNS报文一般格式中的最后3个字段是回答字段、授权字段和附加信息字段,它们均采用一种称为资源记录RR(Resource Record)的相同格式。图14-9显示了资源记录的格式,各个字段的含义如下:

 
(点击查看大图)图14-9  DNS资源记录格式


域名是记录中资源数据对应的名字,它的格式和前面介绍的查询名字段格式(图14-8)相同。

类型说明RR的类型码,它的值的取值及含义见表14-1。

类通常为1,指Internet数据。

生存时间字段是客户程序保留该资源记录的秒数,资源记录通常的生存时间值为 2天。

资源数据长度说明资源数据的数量。

资源数据的格式依赖于类型字段的值,对于类型1(A记录)资源数据是4字节的IP地址。

阅读(1169) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~