这段时间,由于工作的关系,需要研究一下dns服务器的解析工作原理,在cnnic上找到了这篇好的文章,现转载过来
CN域名解析服务的体系结构 |
中国互联网络信息中心(CNNIC)技术部 苑卫国 孙国念 1. 引言 (1) 域名服务的基本概念 域名解析系统DNS(domain Name System)是由主机名解析方案发展出来的一种新的名字的解析机制。1984年9月,ARPANET开始使用DNS,从此DNS成为访问主机名到IP地址映射的标准方法。Internet上最常用的DNS服务器是BIND(Berkeley Internet Name Domain)软件,目前BIND最新的发行版本是9.3.1。 域名系统将主机名解析成IP地址使用到一个全局的、层次性的分布式数据库系统。该系统包含了Internet上所有域名及IP的对应信息。数据库的层次性允许将域名空间划分成独立的管理部分,并称为域(Domain)。数据库的分布式特性则允许将数据库的各个不同的部分分配到不同网络上的域名服务器上,这样各域名服务器可以实现独立的管理。 DNS的域是一种分布式的层次结构系统,这种结构非常类似于UNIX文件系统的层次结构,根的名字以空标签(“”)表示,并称为根域(root domain)。图1所给出的结构是典型的例子。根域的下一级是顶级域。顶级域有两种划分方法:地理域和通用域。地理域是为世界上每个国家或地区设置的,由ISO-3166定义,如中国是cn,美国是us,日本是jp。通用域是指按照机构类别设置的顶级域,主要包括:com(商业组织);edu(教育机构)等。另外随着互联网的不断发展,新的通用顶级域名也根据实际需要不断被扩充到现有的域名体系中来,新增加的通用顶级域名是biz(商业),info(信息行业)等。在顶级域名下,还可以再根据需要定义次一级的域名,如在我国的顶级域名cn下又设立了com,net,org,gov,edu,ac以及我国各个行政区划的字母代表如bj代表北京,sh代表上海等。 图1 域名体系层次结构 域名空间是指表示DNS这个分布式数据库的逆向树型层次结构,完整域名由从树叶节点到根节点的一条路径的所有节点以分隔符“.”按顺序连接而成,如http://www.sina.com.cn/., 其中“.”代表根域(当“.”出现在域名的最右边时,实际上还表示其右边有代表根的空标签“”;也可以用最右边的“.”来表示根),“cn”为顶级域,“com”为二级域,“sina”为三级域,“www”为主机名。 DNS的服务管理层次结构允许将整个域名空间的管理任务分成多份,分别由每个子域自行进行管理,被委托子域有自己的域名服务器,该服务器维护属于该子域的所有主机信息,父域的域名服务器不保留子域的所有信息,而只保留指向子域的指针。域和子域的实际信息包含在区数据文件(zonefile)中,域和子域指域名空间的逻辑分区,区指域名服务器含有的域名空间中的某一部分的完整信息,一个域内可以有多个区。区数据文件是一套包含某个域内机器信息的文本,它的格式是资源记录(resource record)。这些记录中表示主机和它的IP的映射方法。大部分的资源记录如下:Name [TTL] class type data。其中Name是域名。TTL域表示“生存时间”,它是告诉域名服务器隔多长时间更新一次记录。Class域说明记录属于的等级,一般是IN,表示Internet数据。Type域指出记录的类型。Data域保存资源记录要求的参数。主要的资源记录如下表:
(2) 域名服务器 域名的解析过程是域名解析服务器完成的,采用的客户机/服务器模式。在域名服务器上运行一个服务进程(在UNIX系统中一般为named进程),该进程进行名字对IP地址的解析。域名服务器中存储一个区或多个区中主机的信息。 通常在一个区内设置多台服务器,这样做的目的主要是为了提高域名解析系统的可靠性,就是当其中有某台域名服务器出现故障时,所有的域名请求能够转发给其他的域名服务器;另外可以将域名请求的平均地分担到多台服务器上,提高整个系统域名解析的能力和解析的效率,并且可以根据需要将多台域名服务器放置到不同的地方,可以为用户提供地理位置的就近解析。 在一个区内具有多台域名服务器时,域名服务器包括主域名服务器和辅域名服务器,主域名服务器直接从本地的区数据文件(zonefile)中加载本区的信息,区数据文件中包含了服务器所在区内的主机的主机名和它们相应的IP地址;而辅域名服务器则在启动时与负责本区的主域名服务器进行联系,经过一个“区内传输”的过程复制主服务器的数据库。此后,将周期性的查询主域名服务器的数据是否被修改,以保持自己数据库中的数据是最新版本。 2.CN域名服务的解析的原理和过程 在介绍了域名服务体系的层次结构合域名服务器的相关概念后,我们可以比较容易的理解CN域名解析的工作原理和过程,其工作原理及过程分下面几个步骤: 第一步:用户提出域名解析请求,并将该请求发送给本地的域名服务器。 第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。 第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域,如CN)的主域名服务器的地址。 第四步:本地服务器再向上一步骤中所返回的域名服务器发送请求,然后收到该请求的服务器查询其缓存,返回与此请求所对应的记录或相关的下级的域名服务器的地址。本地域名服务器将返回的结果保存到缓存。 第五步:重复第四步,直到找到正确的纪录。 第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。 下面的例子来形象地说明一个CN域名解析的过程。假设客户机想获得域名“www.sina.com.cn”的服务器的IP地址,此客户本地的域名服务器是nm.cnnic.cn(159.226.1.8),域名解析的过程如下所示: (1)客户机发出请求解析域名www.sina.com.cn的报文。 (2)本地的域名服务器收到请求后,查询本地缓存,假设没有该纪录,则本地域名服务器nm.cnnic.cn则向根域名服务发出请求解析域名www.sina.com.cn。 (3)根域名服务器收到请求后,判断该域名属于.cn域,查询到6条NS记录及相应的A记录(或AAAA记录,IPv6使用),得到如下结果并返回给服务器nm.cnnic.cn: cn. 172800 IN NS NS.CNC.AC.cn. cn. 172800 IN NS DNS2.CNNIC.NET.cn. cn. 172800 IN NS NS.CERNET.NET. cn. 172800 IN NS DNS3.CNNIC.NET.cn. cn. 172800 IN NS DNS4.CNNIC.NET.cn. cn. 172800 IN NS DNS5.CNNIC.NET.cn. NS.CNC.AC.cn. 172800 IN AAAA 2001:dc7::1 NS.CNC.AC.cn. 172800 IN A 159.226.1.1 DNS2.CNNIC.NET.cn. 172800 IN AAAA 2001:dc7:1000::1 DNS2.CNNIC.NET.cn. 172800 IN A 202.97.16.196 NS.CERNET.NET. 172800 IN A 202.112.0.44 DNS3.CNNIC.NET.cn. 172800 IN A 210.52.214.84 DNS4.CNNIC.NET.cn. 172800 IN A 61.145.114.118 DNS5.CNNIC.NET.cn. 172800 IN A 61.139.76.53 (4)域名服务器nm.cnnic.cn收到回应后,先缓存以上结果,再向.cn域的服务器之一如NS.CNC.AC.cn发出请求解析域名www.sina.com.cn的报文。 (5)域名服务器 NS.CNC.AC.cn收到请求后,判断该域名属于.com.cn域,开始查询本地的记录,找到如下6条NS记录及相应的A记录: com.cn. 172800 IN NS sld-ns1.cnnic.net.cn. com.cn. 172800 IN NS sld-ns2.cnnic.net.cn. com.cn. 172800 IN NS sld-ns3.cnnic.net.cn. com.cn. 172800 IN NS sld-ns4.cnnic.net.cn. com.cn. 172800 IN NS sld-ns5.cnnic.net.cn. com.cn. 172800 IN NS cns.cernet.net. cns.cernet.net. 68025 IN A 202.112.0.24 sld-ns1.cnnic.net.cn. 172800 IN A 159.226.1.3 sld-ns2.cnnic.net.cn. 172800 IN A 202.97.16.197 sld-ns3.cnnic.net.cn. 172800 IN A 210.52.214.85 sld-ns4.cnnic.net.cn. 172800 IN A 61.145.114.119 sld-ns5.cnnic.net.cn. 172800 IN A 61.139.76.54 然后将这个结果返回给服务器nm.cnnic.cn。 (6)域名服务器nm.cnnic.cn收到回应后,先缓存以上结果,再向.com.cn域的服务器之一如sld-ns1.cnnic.net.cn.发出请求解析域名www.sina.com.cn的报文。 (7) 域名服务器sld-ns1.cnnic.net.cn.收到请求后,判断该域名属于.sina.com.cn域,开始查询本地的记录,找到3条NS记录及对应的A记录: sina.com.cn. 43200 IN NS ns1.sina.com.cn. sina.com.cn. 43200 IN NS ns2.sina.com.cn. sina.com.cn. 43200 IN NS ns3.sina.com.cn. ns1.sina.com.cn. 43200 IN A 202.106.184.166 ns2.sina.com.cn. 43200 IN A 61.172.201.254 ns3.sina.com.cn. 43200 IN A 202.108.44.55 然后将结果返回给服务器nm.cnnic.cn。 (8)服务器nm.cnnic.cn收到回应后,先缓存以上结果,再向sina.com.cn域的域名服务器之一如ns1.sina.com.cn.发出请求解析域名www.sina.com.cn的报文。 (9) 域名服务器 ns1.sina.com.cn.收到请求后,开始查询本地的记录,找到如下CNAME记录及相应的A记录,附加的NS记录及相应的A记录: www.sina.com.cn. 60 IN CNAME jupiter.sina.com.cn. jupiter.sina.com.cn. 60 IN CNAME libra.sina.com.cn. libra.sina.com.cn. 60 IN A 202.106.185.242 libra.sina.com.cn. 60 IN A 202.106.185.243 libra.sina.com.cn. 60 IN A 202.106.185.244 libra.sina.com.cn. 60 IN A 202.106.185.248 libra.sina.com.cn. 60 IN A 202.106.185.249 libra.sina.com.cn. 60 IN A 202.106.185.250 libra.sina.com.cn. 60 IN A 61.135.152.65 libra.sina.com.cn. 60 IN A 61.135.152.66 libra.sina.com.cn. 60 IN A 61.135.152.67 libra.sina.com.cn. 60 IN A 61.135.152.68 libra.sina.com.cn. 60 IN A 61.135.152.69 libra.sina.com.cn. 60 IN A 61.135.152.70 libra.sina.com.cn. 60 IN A 61.135.152.71 libra.sina.com.cn. 60 IN A 61.135.152.72 libra.sina.com.cn. 60 IN A 61.135.152.73 libra.sina.com.cn. 60 IN A 61.135.152.74 sina.com.cn. 86400 IN NS ns1.sina.com.cn. sina.com.cn. 86400 IN NS ns2.sina.com.cn. sina.com.cn. 86400 IN NS ns3.sina.com.cn. ns1.sina.com.cn. 86400 IN A 202.106.184.166 ns2.sina.com.cn. 86400 IN A 61.172.201.254 ns3.sina.com.cn. 86400 IN A 202.108.44.55 并将结果返回给服务器nm.cnnic.cn。 (10)服务器nm.cnnic.cn将得到的结果保存到本地缓存,同时将结果返回给客户机。这样就完成了一次域名解析过程,下图描述了解析的过程: 图2 www.sina.com.cn域名解析过程 3.CN域名解析服务的结构 CNNIC作为中国的国家顶级域名CN的注册管理机构,负责着CN域名根服务器运行。为提高系统DNS系统解析的可靠性和效率,CN顶级域(“cn”域)和CN二级域(包括“com.cn”等39个,参见参考资料3,下同)的域名服务器采用了多台域名解析服务器放置在我国不同地区。 (1) CN域名服务器的主辅更新关系 CNNIC有6台“cn”域服务器用以提供正式DNS服务。CN二级域也有6台服务器用做DNS正式服务 。主辅更新关系见图3、图4。 图3“cn”域主辅数据更新关系 图4 CN二级域主辅数据更新关系 (2) CN域名解析区数据文件的更新 “cn”域和CN二级域的主DNS服务器从区文件服务器取得数据文件,检查数据文件以确保正确后,然后加载数据文件,完成“cn”域和39个二级域的更新。 参考资料 1. RFC1034, RFC1035 2. ISO-3166-3, 1999,参考网页: http://www.iso.org/iso/en/prods-services/iso3166ma/index.html 3. 《信息产业部关于中国互联网络域名体系的公告》,2002.11.22,参考网页:http://www.cnnic.cn/html/Dir/2003/10/29/1101.htm 4. DNS and BIND (第四版的中译本)Paul Albitz &Cricket Liu 著 雷迎春等译 中国电力出版社 2002 5. BIND官方网站(http://www.isc.org) 6. UNIX 网络管理实用教程 徐国平等编著 清华大学出版社 2002 |