文章出处:www.net1980.com 

       TCP/IP不仅提供了IP地址来确定设备,而且还专门设计了一种字符串形式的主机命名机制,这就是所谓的域名系统DNS(Domain Name System)。此系统使用一种有层次的命名方式,为网上的设备指定一个有意义的名字,并且在网络上设置域名解析服务器,建立域名与IP地址的对应关系。这样一来用户就可以使用便于记忆的、有意义的域名,而不必去记忆复杂的IP地址。

一、Internet域名体系

       最初所有机器使用的名字构成了一个非等级的名字空间,由字符序列组成所有的名字。网络信息中心NIC(Network Information Center)管理这个名字空间,并负责接纳新名字。非等级名字空间由于自身的特点不能管理大量的机器名字,主要原因如下所示:

1、名字由字符序列组成,存在潜在的命名冲突。

2、名字空间的管理结构位于一个站点,机器数量的不断增多对管理工作带来很大负担。

3、名字到IP地址的映射经常发生变化,导致维护域名空间的工作量巨大。

       因此,TCP/IP把DNS的域名设计成了分级的结构。Internet域名结构由TCP/IP协议栈中的DNS进行定义。DNS把因特网划分成多个顶级域,顶级域采用组织模式和地理模式的划分模式。地理模式按照国家进行划分,每个申请加入Internet的国家都要向NIC注册一个顶级域名,如cn代表中国、us代表美国等。

       NIC将顶级域的管理权分派给由其指定的管理机构,由这些管理机构再对被授权管理的域继续进行划分,从而形成了二级域。负责划分二级域的管理机构可以授权其下属的管理结构,由它们继续划分域。有此下去,便形成了层次型的Internet域名体系结构。

 

二、域名解析

       域名解析分为动态解析和静态解析,二者可以相辅相成,在解析域名时,可以首先采用静态解析的方法,如果静态解析不成功,再采用动态解析的方法。

 

1、静态DNS

       静态域名解析是通过静态域名解析表进行的,即手动建立域名和IP地址之间的对应关系表,该表的作用类似于Windows操作系统下的hosts文件,可以将一些常用的域名放入表中。当客户机需要域名所对应的IP地址时,即到静态域名解析表中去查找指定的域名,从而获得所对应的IP地址,提高域名解析的效率。

 

2、动态DNS

       所谓动态DNS,是指不具固定IP的主机,利用动态DNS服务,帮助主机可以根据IP的变化去对应域名与IP的关系。例如使用 PPPOE的ADSL、DHCP的Cable或拨号上网,这些网络接入方式都不具备固定IP地址,假如要架设Web、Mail或者FTP等服务器,就需要用到动态DNS服务。

 

动态DNS实例说明:

       我已注册了一个网域名称:net1980.com,但我所使用的网路连线是不具固定IP的ADSL服务,以前我并不能用它来架设网站,因为我的IP并非固定IP无法用来指定域名,但现在有了动态DNS服务后,我将可以用我的域名利用动态IP来架设主机及网站。

       当我启用了动态DNS功能後,每次我的主机开机,动态DNS服务器将会自动去取得并对应我的主机当时上线的IP,假设此次我的主机开机时所取得IP是202.96.111.201,此时利用动态DNS服务,会将我的net1980.com自动设定对应到202.96.111.201去;又假设我的主机重开机时所取得的IP是202.96.110.101,则利用动态DNS服务,又会自动再将我的net1980.com对应到202.96.110.101去,如此解决了不固定IP无法对应到域名的困扰,并且这对浏览我网站的人来说,并无任何影响,只需输入 http://net1980.com 即可连接到我的网站。

 

3、动态DNS服务器

       动态域名解析需要专用的域名解析服务器,该服务器运行域名解析服务器程序,提供从域名到IP地址的映射关系,负责接收客户提出的域名解析请求。

       根域名服务器包含有关根和顶级域的信息。DNS要求每个域名解析服务器至少要知道一个根域名解析服务器的地址。客户也必须知道如何与至少一个域名解析服务器取得联系。

       域名解析服务器接收到客户端提出的域名解析请求后,首先判断请求的域名是否处于自己被授权管理的子域里。如果是,就查询数据库把域名转换为IP地址,并把转换结果发送给客户端。如果域名解析服务器不能解析出域名,它就根据客户在查询报文中所指明的解析方式来进行下一步操作。

 

域名解析方式分为以下两种:

递归解析:域名解析服务器和能解析该域名的服务器联系,并将查询结果即域名所对应的IP地址返回给客户端。

迭代解析:若该域名解析服务器不能提供解析结果,会在给客户端的响应报文中指明客户端应联系的下一个域名解析服务器。客户端会向指明的下一个域名解析服务器再次发出查询请求。

 

1)动态DNS的高速缓存

       如果解析者把每个非本地名字的解析请求都送到根域名解析服务器的话,会造成很大的查询开销。为了降低非本地域名查询的开销,域名解析服务器使用高速缓存。对于每次动态解析成功的域名和IP地址的映射关系,存放在内存的动态域名缓存区中,下一次查询相同域名的时候,就可以直接从缓存区中读取,不用再向根域名解析服务器请求了。每个域名解析服务器都在本机的高速缓存里维护着最近用过的域名的记录,并且同时保存从哪个服务器获得的此域名映射。

       但是当域名与IP地址的映射关系发生变化时,高速缓存中的信息就不再正确。为保证缓存信息的正确性,域名解析服务器在DNS响应报文中,会指定一个TTL值,该值代表解析的域名与IP地址绑定存在的有效时间值。客户端在缓存区中保存的映射关系在一段时间后被老化删除,保证能够及时从域名解析服务器得到最新的内容。对于安装不同操作系统的域名解析服务器,老化时间都有其相对应的值。客户端从DNS协议报文中获得老化时间。

       同样,主机中也存在一个高速缓存,用来维护自己最近使用过的域名与IP地址的绑定。只有主机在未能从缓存中找到要解析的域名时才会使用域名解析服务器进行查询。

 

2)动态DNS的后缀名

        动态域名解析支持域名后缀列表功能,用户可以预先设置一些域名后缀,在域名解析的时候,用户只需要输入域名的部分字段,系统会自动将输入域名加上不同的后缀进行解析。

       例如,用户想查询域名“net1980.com”,那么可以在后缀列表中配置com,然后输入“net1980”,系统会自动将输入域名与后缀连接成“net1980.com”进行查询。使用域名后缀的时候,可能会出现以下几种情况。

       如果用户输入的域名中没有“.”,比如“net1980”,系统认为这是一个主机名,会首先加上域名后缀进行查询。如果所有域名都查询失败,最后用最初输入的域名进行查询。

       如果用户输入的域名中间有“.”比如“www.net1980”,系统直接用它进行查询。如果查询失败,再依次加上各个后缀进行查询。

       如果用户输入的域名最后有“.”,比如“net1980.com.”,系统首先会将输入域名最后的“.”去掉,用剩下的部分查询,如果没有成功,会再去匹配域名列表进行查询。

 

原文链接:http://www.net1980.com/2011/02/09/dongtai-dns/