计算机网络学习--域名解析系统DNS(10)

来源:互联网 发布:mac文件怎么转word 编辑:程序博客网 时间:2024/05/16 09:12

我们知道,计算机在网络中通信时需要有自己的唯一的IP地址,在IPV4中IP地址是由4个字节32位的二进制来表示的,我们平常经常使用点分法来记录IP地址,然而,即使是这样我们仍然需要记住4个用‘.’分开的整数,如“127.0.0.1”等等。人类是不擅长记录这些没有任何实际意思的纯数字的,所以域名系统可以帮助我们解决这个问题。

我们想和一个主机通信时,我们不需要记住这个主机的IP地址,而只需要记住它的域名就可以了,而域名一般带有很明显的实际意思,如www.baidu.com    我们便知道这是一个连接BAIDU服务器的域名,而不是去记忆一个32位的IP逻辑地址。

DNS域名服务系统就是帮助我们解决由一个域名去查询给出其相应IP地址的应用层协议。

DNS域名服务系统是一个庞大的系统,被设计成一个联网的分布式数据库系统。系统是由许许多多的DNS服务器组成,这些服务器是划分层次的,最顶层的是根域名服务器,下面一层是顶级域名服务器,再下面是权限域名服务器,最后是本地域名服务器。每个域名服务器都保存着一些映射表,不同域名服务器之间相互合作,共同完成域名解析任务。

下面我们先看看因特网上的域名体系结构。

现在的因特网采用树状层次结构来表示域名结构,各层次之间采用‘.’进行划分,连接在因特网上的每一台主机或者路由器都有唯一的层次结构名称,即域名。


域名由标号序列组成,每个标号用一个‘.’隔开,标号长度不超过63个字符,且不区分大小写,整个域名的长度不超过255个字符。

DNS域名空间结构如下所示:

域名采用分层结构,最上面的是顶级域名,顶级域名可以分为通用顶级域名和国家顶级域名。

通用顶级域名包含:com(公司企业),gov(美国政府机构),net(网络服务结构),int(国际组织),mil(美国军事机构),edu(美国教育机构)等。

国家顶级域名是每个国家为一个域进行划分的,如中国是ch,美国是us等。

在国家顶级域名下面的二级域名,由国家相关机构自行管理。每一层的域名都是由其上一层进行管理的。

大概了解了域名的体系结构以后,我们看看域名是如何解析的?

域名解析的要点是:当一个应用程序需要将一个主机的域名解析成IP地址时,应用程序会调用一个解析程序,成为一个DNS的客户,把待解析的域名放在DNS报文中,以UDP用户数据报的方式发送给本地域名服务器,如果本地域名服务器查找到这个域名,就将其对应的IP地址放在回答报文中返回。如果查找不到,则本地服务器会向其他域名服务器发出请求,知道查出该域名的IP地址或者出错。

上面提到要将请求发送给域名服务器,那么域名服务器又有那些类型呢?

域名服务器可以分成4类,分别为根域名服务器,顶级域名服务器,权限域名服务器和本地域名服务器。

根域名服务器很重要,它知道所有顶级域名服务器的域名和IP地址。同时,当进行一个域名解析时,如果本地域名服务器无法解析,也是首先向根域名服务器求助的。

在因特网上有13个不同IP地址的根域名服务器,域名分别以a到m开头,如下a.rootservers.net,b.rootservers.net………,m.rootservers.net。

顶级域名服务器负责管理在该顶级域名服务器上注册的所有二级域名。

本地域名服务器也是一个很重要的域名服务器,也称为默认域名服务器。当进行域名解析时,首先是将请求报文发送给本地域名服务器的,只有本地域名服务器查询不到,才会借助于其他的域名服务器。

为了提高域名服务器的可靠性,通常会有主域名服务器和辅助域名服务器之分,每隔一段时间主域名服务器会将数据更新到辅助域名服务器中,但是数据的修改不发生在辅助域名服务器中。这样当主域名服务器发生故障时,辅助域名服务器可以替代主域名服务器继续工作。

 

介绍完了域名服务器,现在看看具体如何查询?

查询可分为两种,一种是递归方式,一种是迭代方式。

递归方式就是主机首先向本地域名服务器发送域名解析请求,如果服务器可以解决,就将结果发送给主机;如果本地域名服务器不能解析,那么自己就以DNS客户的身份向其他根域名服务器发送解析请求,让其替主机查询,并最终将查询结果返回主机,或者出错。


迭代查询就是主机首先向本地域名服务器发送域名解析请求,如果服务器可以解决,就将结果发送给主机;如果本地域名服务器不能解析,那么本地域名服务器会将解析请求发送给根域名服务器,根域名服务器要么告诉本地域名服务器IP地址,要么告诉本地服务器下一个查询的DNS域名服务器的地址。然后本地服务器继续后面的查询。


为了提高DNS查询的效率,在域名服务器中引入了高速缓存的技术。告诉缓存用来存储最近查询过的域名以及从何处获得域名映射信息的记录。这样下次查询同一个域名时,就不需要再次查询,而是直接从高速缓存中读取就可以了,或者根据高速缓存中的记录进行快速的查询。

当然为了保证高速缓存记录的正确性,我们为每条记录都设置了一个有效期,超过有效期的查询记录将会被清除,如果再想查询相同的域名,就不能从高速缓存中直接获取了,而需要再次查询。

除了域名服务器外,主机中也有自己的高速缓存,当主机开启时会从本地域名服务器下载全部的数据库信息,这样只有在自己的高速缓存中找不到域名时才会求助于域名服务器。