(计算机应用技术专业论文)动态域名系统设计及应用.pdf_第1页
(计算机应用技术专业论文)动态域名系统设计及应用.pdf_第2页
(计算机应用技术专业论文)动态域名系统设计及应用.pdf_第3页
(计算机应用技术专业论文)动态域名系统设计及应用.pdf_第4页
(计算机应用技术专业论文)动态域名系统设计及应用.pdf_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要( 中文) 动态域名系统是可以实现动态更新的域名系统。本文首先介绍了域名系统的 技术,并分析了动态域名系统的相关协议( r f c 2 1 2 6 、r f c 3 0 0 7 等) 以及已有的 实现方法( b i n d 、微软d n s 服务器) 。在分析研究的基础上,根据实际的需求, 本文设计了一套动态域名系统,该系统使用全新设计的更新协议,有利于系统的 扩展,该系统还使用了系统采用了纯内存查询、面向对象的设计、多线程、数据 同步等技术,提高了系统的性能。最后,文章还简单介绍了该动态域名系统的一 些实际应用。 关键字 域名、动态域名 a b s t r a c t d y n a m i cd o m m n n a m es y s t e m ( d d n s ) i sa l le n h a n c e dd n s i nt h i ss y s t e m ,t h e i pa d d r e s so ft h er e s o u r c er e c o r dc o u l db ed y n a m i c a l l yc h a n g e d t h i sa r t i c l ef i r s t s t u d i e dt h e p r o t o c o l s o f d d n s ( r f c 2 1 2 6 、r f c 3 0 0 7e t c ) a n d s o m ed d n s a p p l i c a t i o n s ( b i n d 、m i c r o s o f td n ss e r v e o b a s e do n t h es t u d y , t h ea u t h o r d e s i g n e da n e wd d n s t h ed d n su s e dan e w u p d a t ep r o t o c o l t om a k e 血e s y s t e mm o r e s c a l a b l e d u r i n gt h ed e s i g n i n g ,t h ea u t h o ru s e dm a n ys k i l l s ,s u c ha sp u r ec a c h es e a r c h 、o o b 、 m u l t i - t h r e a d 、d a t as y n c h r o n i z e f i n a l l y , t h ea r t i c l ei n t r o d u c e ds o m ep r a c t i c a lu s eo f t h ed d n s k e y d o m a i nn a m es y s t e m ( d n s ) 、d y n a m i cd o m a i nn a m e s y s t e m ( d d n s ) 一、项目的背景 1 、项目的由来 在经过了短暂的低谷后,近年来互联网的业务又焕发了青春,网络业务又开 始了新一轮的增长。目前网络发展的最大特点就是宽带接入的发展,它使得普通 用户的上网条件得到了极大的改善。宽带接入已经成为比较普遍的一种上网方 式,其最大的特点在于带宽较大和长时间在线,这也是许多企业和个人在选择宽 带接入时所考虑的主要因素。 宽带接入与宽带应用,紧密相连,互相促进。要进一步促进宽带业务的发展, 就要做好宽带应用的开发。如果能够针对宽带接入的特点提供独特的增值服务, 无疑可以增加宽带的含金量,吸引更多用户选择宽带接入,而动态域名解析可能 就是这样一个应用。 动态域名的需求最早来自一些小企业,这种企业规模不大,但是由于业务发 展的需要,往往在很多的城市都有分部。这些公司为了节省成本,往往使用a d s l 等宽带接入手段上网,而且他们希望利用宽带接入线路进行企业内部信息的交 流,同时把公司的信息发布到互联网,提供w w w 、f t p 、m a i l 等服务。企业要 实现这些功能,传统的方式是申请d d n 专线和固定的i p 地址,然后进行静态的 域名解析。单从带宽方面来核算,这种方式的成本高得只有较少的企业可以承受, 小企业根本无力承担。但是如果将动态域名系统与宽带接入相结合,就可以提供 一种廉价的替代方案:即为用户分配固定的域名用作网络通信地址,当某个企业 的某个主机使用宽带拨号业务上网时,可以通过动态域名系统来更新域名与i p 地址的对应关系,这样就可以使用固定的域名访问企业的服务了。这个方案的好 处在于其价格非常便宜,但是在稳定性和安全性上会打些折扣。 在市场的需求下,我们开始着手建立一个可营运的多用户的动态域名系统。 其服务可以用以下的例子阐述:营运商提供诸如a b e t o m 的二级域名,不同用户 可以在此基础上使用不同的三级域名,如a 用户使用a a b e c o r n ,b 用户使用 b a b c c o m 。用户拥有固定域名后,可以方便的修改域名和i p 地址的对应关系, 从而可以实现在动态i p 地址的环境下,对固定域名稳定访问。系统建成后,除 了作为一个单独的业务推出外,还可以与其他业务进行组合,形成新的业务。 关于该系统性能,我们希望能够达到l o 力用户的容量。这主要是考虑到, 由于宽带网的发展,普通用户也正在逐步成为网络信息的发布者,他们的加入, 很可能极大的扩展动态域名服务的潜在用户数量。 2 、项目的意义 本项目的意义有三点: 其一是通过系统的建立,可以为用户提供网络的增值服务,满足用户的市场 需求,进而促进宽带接入业务的发展。 其二,通过研究动态域名的相关技术,加深对互联网的了解,并跟踪当前域 名系统技术的发展情况。 其三:通过系统的开发,提高了开发人员的项目管理能力和开发能力。 3 、本文内容的安排 l 下文共六个部分,第一部分为项目背景的介绍,第二部分主要研究了域名系 统结构和其运作方式,第三部分研究了动态域名实现的协议和已有的方法,第四 部分阐述动态域名设计的过程和一些细节,第五部分简单介绍了系统的一些应 用,第六部分是程序的部分代码。 二、域名系统的结构 动态域名系统可以被分为域名系统和动态更新两个部分,其中域名系统是基 本系统,动态更新部分则是在基本系统上进行的功能扩展。在进行动态域名系统 的设计前,首先必须了解现有域名系统的运作方式及结构,使设计的系统能够保 证正常域名访问机制的实现。本部分主要研究了对域名系统的标准、技术等问题。 1 、概述 域名系统是t c p i p 网络上一种分布型层次式的命名和翻译系统,它提供主 机名字和ip 地址之间的转换及有关电子邮件的选路信息。域名系统的标准化工 作由i e t f ( t h ei n t e r n e te n g i n e e r i n gt a s kf o r c e ) 下的网络工作组( n e t w o r k w o r k i n gg r o u p ) 负责,其制定的标准称为r f c ( r e q u e s tf o rc o m m e n t ) 文档, r f c 按照制定的时间的顺序进行编号和归档。 在互联网上,所有的通信实体都拥有一个或者多个i p 地址,并用于两个实 体间的通信。i p 地址是一个3 2 b i t 的二进制整数,为了记忆方便,一般用 “x 1 x 2 x 3 x 4 ”( o x 1 ,x 2 ,x 3 ,x 4 2 5 5 ) 的格式表示,当通信实体进行数 据传输时,传输的数据包可以简化为下图的格式: i 源i p 地址l 目的i p 地址| 传输的数据l 对于人的实际使用来说,一般会使用具有一定意义的字母组合作为主机的名 字用于通信,这个名字被称为域名( d o m a i nn a m e ) ,而域名系统就是完成两者 之间翻译的系统。多数情况下,域名系统完成从域名、邮件域名( 邮件域名是电 子邮件地址“ ”后面的部分) 到i p 地址的翻译;在一些特殊的情况下,域名 系统可以完成从i p 地址到域名的翻译,但是这个服务并不是一定需要提供的。 2 、客户端,服务器方式 域名系统的工作模式是客户端朋艮务器方式。该模式的运行方式为:服务器 被定义为提供网络服务的服务器软件程序,一直在互联网上运行着,随时准备提 供服务;而其他需要服务的程序为客户;当客户需要服务时,客户通过网络向提 供该种服务的服务器建立连接,向它发出服务请求,服务器根据该请求作出相应 的处理,然后把结果送回客户。对于某些应用,客户机只需要向服务器发送一个 服务请求,然后等待服务器的回答,域名系统也是采用这种方式工作的。而对另 一些应用,客户机要与服务器进行不断的交互,目口在客户机与服务器建立了连接 后,客户机不断地显示服务器送来的数据,同时又把键盘或鼠标的输入送给服务 器进行新的处理。 域名系统的客户目前几乎已经内嵌到了所有t c p i p 的应用程序中,从应用 的角度上看,可以把域名查询看成是通过一个地址解析器( r e s o l v e r ) 来完成的, 其他程序则是通过调用该程序进行域名相关查询的。当使用s o c k e t 进行网络编程 时,应用程序可以通过两个库函数进行调用该解析器:g e t h o s t b y n a m e ( ) 和 g e t h o s t b y a d d r ( ) 来访问的,它们在编译时与应用程序连接在一起。前者接收主 机名字返回ip 地址,而后者接收ip 地址来寻找主机名字。 为了提高域名的查询效率,解析器可以使用缓存,将以前的查询结果记录下 来,降低重复查询的次数。提高查询效率的另外一个手段就是使用h o s t 文件, 该文件是域名与i p 地址的对应的文本文件,h o s t 文件在w i n d o w s 9 x 中位于 w i n d o w s 主目录中,在w i n d o w s2 0 0 0 和x 口中位于w i n d o w s 主目录下的s y s t e m 3 2 d r i v e r s e t c 中。域名查询的顺序为:h o s t 文件、缓存查询、域名服务器。 除了嵌入程序内的客户端外,多数操作系统都提供了一个独立的域名系统客 户程序,用于域名的查询和调试,在w i n d o w s 系统中,这个程序是系统目录 下的n s l o o k u p e x e 程序。 匪 查询 解析器 飞 i n t e r n e t 域名服务器 陬砷 、。,4 、 结果 醉# 域名服务主机 域名查询的客户端与服务器 域名系统的服务器称为域名服务器( d n ss e r v e r ) ,一般都长时间运行在某 个固定的i p 地址上,其监听的端口号是5 3 ( 包括t c p 和u d p 协议) 。目前互联 网上有大量的域名服务器,一般而言,互联网的接入运营商会为其用户提供域名 4 服务器,并可以解析全部互联网的域名。网站的营运者一般也提供域名服务,不 过可能只提供其管辖域名的解析( 例如新浪网) 。 对于客户端而言,需要设置一个域名服务器作为缺省的域名服务器,还可以 设黄一个或者多个域名服务器用于备份,这些服务器被称为用户的本地域名服务 器( l o c a ld n ss e r v e r ) 。对于客户所在的计算机而言,本地域名服务器的i p 地 址用于本机的所有i p 通信程序,因此是一个系统参数。 客户主机必须在域名查询前获得本地域名服务器的i p 地址,否则即使有了 本地域名服务器的域名也无法得到其地址。在实际的使用中,域名服务器的地址 可以采用人工设置或者使用d h c p 等动态协议来获得。随着使用上网业务的大 众化,越来越多的非技术人员加入到上网的行列中来,为了降低用户的使用门槛, 多数系统都倾向于使用动态协议设置本地域名服务器的i p 地址。 3 、域名的结构 域名( d o m a i n n a m e ) 是互联网上主机的名字,在实际通信时,域名通过域 名系统被翻译成i p 地址。 在域名系统引入前,域名翻译是通过通信主机上的h o s t 文件实现的。为了 实现全网的名字解析,互联网中的新主机都必须向斯坦福研究院的网络信息中心 ( s r i n i c :s t a n f o r dr e s e a r c hi n s t i t u t e sn e t w o r ki n f o r m a t i o nc e n t e r ,s r i - n i c ) 进行登记。s r i - n i c 经常发布主机信息的文件,a r p a n e t ( 互联网的前身) 上的所 有主机将相关文件复制到本地的h o s t 文件。s r i - n i c 的相关运作一直持续到直到 9 0 年代初,由于使用扁平的名字方式,该机制在上网主机数量迅速增加时,出 现了问题。于是域名系统出现了,它的设计采用的是树型的层次结构,方便了名 字的管理和扩展。 一级域名 二级域名 域名的树型结构 上图是域名的树型结构图例,域名的级别从根开始( 以点“”表示) 逐次 降低,每个节点都可以用一个至多6 3 个字符长的字符串( 域名的字符集包括英 文字母、“一”和) 表示,节点的名字不区分大小写。树上任何一个结点的 域名就是将从该结点到最高层的域名串连起来,中间使用个点“”分隔这些 域名。域名树中的每个结点必须有一个唯一的域名,但域名树中的不同结点可使 用相同的标识。图中的血:g 趔:q 磐和w w w g n u o r g 都是三级域名。通过该树型结 构。就可以将所有的互联网的域名表示出来。 一级域名分为三类:机构域、地理域和a r p a 。机构域表示网站的性质,常用 的有t o m ( 商业单位) 、i n t ( 国际组织) 、o r g ( 非盈利组织) 、e d u ( 教育机构) 、 m i l ( 军事单位) 、g o v ( 政府部门) 、n e t ( 网络支持中心) 。常用的地理域有c n ( 中 国) 、l l s ( 美国) 、i p ( 日本) 、d e ( 德国) 、u k ( 英国) 、f r ( 法国) 、r u ( 俄国) 。 a r p a 域,及它下面的i n 。a d d r 域是一个特殊的一级域名,i n - a d d r a r p a 是用来 标示i p 地址的特殊域名,任何i p 地址都可以用该域名表示,但是其顺序与i p 地址相反。例如i p 地址1 2 3 4 的i n a d d r a r p a 域名为4 3 2 1 i n a d d r a r p a 。 i n a d d r a r p a 域名用于域名的反向查询,即输入一个i p 地址来查询其域名。 4 、域名系统的分层管理 如同域名系统的结构一样,域名系统的管理也是分层次的。最高的管理机构 是美国n e t w o r k s o l u f i o n s ( h t t p :w w w n e t w o r k s o l u t i o n s c o r n ) 和i c a n n 互联网 域名数字公司( i n t e m e t c o r p o r a t i o n f o r a s s i g n e d n a m e sa n d n u m b e r s ) ,他们负责一 级域名的分配和授权。 域名的授权单位是( z o n e ) 。一个区域是域名树上的一个独立管理的子树, 区域内域名具有同样的后缀。区域可以逐级授权,但是只能对本区域内的区域进 行授权。例如,区域“s i n a e o m c n ”是分配给新浪公司的三级域名区域,新浪 公司可以自由分配该区域下的名字,如w w w s i n a c o i l l c n 和b b s s i n a c o m c n 等; 而该区域是由c n n i c ( 中国互联网络信息中心) 授权给新浪管理的;c n n i c 的 管辖权利则来自最高域名机构的授权,它可以管理区域e l l 下的域名。 5 、权威域名服务器 一旦一个区域的授权机构被委派后,由它负责在该区域内设立域名服务器, 并提供至少对本区域下所有域名的解析。当一个新主机加入到一个区域中时,该 区域的域名管理者为该新系统申请一个域名和一个ip 地址,并将它们加到域名 服务器的数据库中。区域的域名服务器是其辖下域名的权威域名服务器 ( a u t h o r i t a t i v e d n ss e r v e r ) ,应该注意到,权威域名服务器只针对本地数据库内 域名,如果本地的管理机构将一个子域授权给下一级域名管理机构,那么该子域 内域名权威域名服务器也将同时发生改变。 除主域名服务器外,区域内还可以设置一个或者多个辅域名服务器,以便当 某个域名服务器发生故障时不影响该区域的域名服务。主、辅服务器的区别在于 主服务器上有原始域名数据库,辅服务器上的数据则只是一个备份,域名的修改 只发生在主服务器上,辅服务器需要定期与主服务器同步。如果对数据库的修改 发生在同步的间隙,主服务器必须通知辅服务器对域名数据库进行相应的修改。 6 、 分布式数据库结构 域名系统实际上是一个分布式的目录数据库:所有的互联网域名都纳入了这 个树状的目录系统,域名系统的管理同时又是逐级授权的,每个区域的管理机构 都负责维护其各自的数据库部分,并保障其所管辖部分域名解析正确性。所有域 名的管理者都只拥有互联网中的部分域名数据库,通过等级管理、授权和域名查 询的协议,可以将分散的数据库结合起来,形成一个逻辑上的巨大的全球性域名 系统,实现为全球的计算机提供全球域名的快速查询。 在这个逻辑上的全球域名系统中,最核心的域名服务器是根服务器,它们由 全球互联网的最高管理机构设置和管理,根服务器负责提供全球的一级域名的解 析服务。本地域名服务器应该了解至少一个根服务器所在的地址,否则将无法解 析非本区域内的域名。目前,全球共有1 3 个根服务器( a r o o t - s e r v e r s n e t 到m r o o t - s e r v e r s n e t ) ,其中,1 个为主根服务器,被放置在美国,其余 1 2 均为辅根服务器,分别被放置在美国9 个、欧洲2 个( 位于英国和瑞典) 、亚 洲1 个( 位于日本) 。根域名服务器是整个互联网运行的核心之一,一旦发生故 障,将影响全球互联网域名的解析,进而影响全球互联网的服务。 7 、查询的过程 由于域名的数据分布在互联网上的各级域名服务器上,并且采用逐级授权的 方式管理,因此在进行域名查询时多数会涉及到多个域名服务器的查询。 在域名查询时,客户程序只与本地域名服务器发生信息交互,本地域名服务 器必须能够提供对全球域名的解析。当客户程序向本地域名服务器发出查询请求 后,如果域名数据就在本地( 权威服务器就是本地域名服务器) ,本地域名服务 器将直接返回结果,如果该域名数据不在本地,本地域名服务器必须负责向其他 域名服务器发起逐级查询,直至找到相关信息返回用户。逐级查询是按照域名的 等级从高向低逐层解析的,下图是该过程的示意图。 域 本 3 根服务器 名 1l 地 4l 查 一 域 一5 一级域名 询 一1n 名 6l 客 服 一7 各级域名 务 8l 户 器 一9 权威域名 域名的逐层查询过程 以查询域名w w w s i n a c o r n c n 为例,如果本地域名服务器没有相关信息,本 地域名服务器将向一个根服务器发起查询,根服务器将返回e l l 域所在的域名服 务器的i p 地址:然后本地域名服务器向该服务器发出新的查询,获得c o r n c r l 所 在的域名服务器;通过这样的逐级查询后最终可以获得s i n a c o m c n 权威域名服 务器所在的地址,最后通过该服务器查询到最终的结果,并返回用户。 在进行反向域名查询时,用户将输入一个i n a d d r a r p a 域名,查询的过程不 变。反向查询并不是一个必须提供的业务,不过在有些安全性较高的站点上,强 制要求对所有的访问i p 地址进行反向域名查询。如果提供反向查询,则它是由 各级i p 地址管理机构提供的,例如,某一段地址被分配给新浪,新浪就可以设 置域名服务器,进行该段地址的反向查询。 逐级查询并不是每个域名服务器都必须具备的功能,因此并不是任何域名服 务器可以作为用户的本地域名服务器。逐级查询功能对域名服务器的资源耗费是 相当大的,在根服务器和一级域名基本上都不提供这个功能,一些非i s p 的网站 为了防止用户以其服务器作为本地域名服务器,也禁用了逐级查询功能。如果客 户程序向这些域名服务器发起查询命令时,一般只会返回其下一级域名服务器的 信息或者根服务器的信息。 8 、资源记录( r r ) 域名数据库里的每一个项目被称为资源记录r r ( r e s o u r c er e c o r d ) ,它也是 进行域名查询时返回的结果。在网络上传输时,r r 被封装成以下的格式 n a m e t y p e c l a s s t t l r d l e n g t h i 些坐 l 其中n a m e 表示r r 的名字,通常情况下表示待解析的域名的字符串;t y p e 表示了r r 的类型或者查询的类型,长度为2 b y t e ;c l a s s 表示了使用范围,长 度为2 b y t e ,其值目前大多是“i n ”,表示该r r 在互联网的范围内使用;t t l 主要用于域名的缓存,长度3 2 b i t ;r d l e n g t h 表示了其后的r d a t a 的字节长 度,长度为1 6 b i t ;r d a t a 表示了n a m e 所对应的数值,例如在域名查询中, r d a t a 表示了域名为n a m e 的主机所对应的i p 地址。 按照t y p e 属性区分,现有大约20 种不同类型的r r ,以下是比较常用的 类型: a ( a d d r e s s ) :a 记录表示了指定域名所对应的i p 地址( 3 2 位的二进制数) , 它是最常用的资源记录。通常一个域名只有一个a 记录,即一个域名只对应一 个i p 地址,一个域名有多个a 记录的情况一般在在大型网站上使用,由于访问 量巨大,系统需要有多个主机支撑单一域名的巨大访问量( 如雅虎 w w w y a h o o , c o m 、微软w w w m i c r o s o f t c o m 等) ,于是出现了d n s 负载均衡的方法, 使一个域名指向多个i p 地址,并将不同用户对该的域名查询引导到不同的i p 地 址上。 p t r :p t r 记录用于反向地址查询,表示了一个给定i n a d d r a r p a 域名( 与 ip 地址一一对应) 所对应的域名( 字符串) 。 c n a m e ( c a n o n i c a ln a m e ) :c n a m e 记录表示某个给定域名是另一个域名的 别名( 字符串) ,该记录允许将多个名字映射到同一台主机。域名查询时,如果 提交的域名是一个别名,返回的r r 将包括该域名所映射的域名和该域名所在的 i p 地址。 ns :n s ( n a m es e r v e r ) 记录表示了某个区域名所在的权威域名服务器的域 名( 字符串) 。当本地域名服务器进行逐级的域名查询时,中间级别的域名服务 器一般只返回下一级域名服务器的n s 记录和该域名服务器所在的i p 地址。 mx :m x ( m a i le x c h a n g e r ) 表示了某个域名所对应的邮件服务器的域名( 该 域名是电子邮件地址u s e r h o s t 中的h o s t 部分) 。m x 记录仅用于电子邮件的发 送,通过m x 记录,可以实现 ( 1 ) 提供了一种将无法到达其目的主机的邮件传送到一个替代主机的方 式,这种状况一般是为了兼容早期的u u n e t 网络的传输邮件的方式。 ( 2 ) 提供他人发送邮件的虚拟主机,该主机甚至可以不存在。 举例说明,域名s i n a c o r n c r l 的a 记录是2 0 2 1 0 6 1 8 4 2 0 0 ,其m x 记录是 s i n a m x s i n a g o m c n ( i p 地址为2 0 2 1 0 6 1 8 2 2 3 0 ) 。当使用非电子邮件的网络应用 时,使用该域名时客户程序将访问地址2 0 2 1 0 6 1 8 4 2 0 0 ,而当进行电子邮件传送 9 时( 例如将邮件发送到z h a n g s i n a c o r n c n ) ,邮件程序将把邮件发送到服务器 s i n a m x s i n a c o m c n 上,即使s i n a c o r n c n 没有a 记录,也不会影响电子邮件的传 递。 一个域名可以设置多个m x 记录作为邮件服务器的备份,各邮件服务器用 优先权值区分,一般电子邮件的邮递程序会选择优先权最高的服务器作为传送的 目的地,在该服务器失效时则转向低优先级服务器。 9 、域名系统的缓存机制 从域名的的查询过程来看,这是一个比较复杂的过程,如果每一次查询都遵 循同样的过程,效率是比较低的,特别是对于根服务器和一级的域名服务器而言, 访问的压力几乎无法承担。 为了解决这个问题,目前几乎所有本地域名服务器都使用缓存机制。域名缓 存的时间由t t l ( t i m et ol i v e ) 参数决定,这个参数是r r 的一个属性,并在 发生域名查询与r r 同时返回查询用户,r r l 由域名区域的主管人员设置和管理。 当一次迓级域名查询过程结束后,本地域名服务器会将查询结果记录在域名服务 器的缓存内,如果在r r l 时间内收到同样的查询,就可以不用启动逐级查询过 程,而直接将结果发送给用户。 从理论上说,使用缓存的数据是不可靠的,如果在1 v r l 时间内,区域内的 域名数掘库发生了修改,就有可能造成域名解析的错误。为了加以区别,将通过 域名逐级查询的结果定义为权威答案( a u t h o r i t a t i v ea n s w e r ) ,通过缓存返回的结 果称为非权威的答案( n o n a u t h o r i t a t i v ea n s w e r ) ,并在r r 返回时做明确的标记。 在实际情况下,这个区别往往是可以忽略的,多数应用程序不会处理这个标记。 t t l 的设置是一个与性能相关的参数,当t t l 设置的较大时,就可以把权 威域名服务器的访问压力更多的分散到本地域名服务器上,减轻其性能压力,但 是这会限制区域的域名管理机构对自己域名数据库的修改,因为即使自己修改了 相关数据,其他的域名服务器也不会很快向自己发出新的查询,造成域名查询的 错误。 1 0 、域名服务器软件简介 最著名的域名服务器软件是b i n d ,在域名系统乃至互联网的发展历史中, 这个软件都是一个重要的里程碑。b i n d 最早是b e r k e l e y 的研究生为美军方做的 一个项目,后来经过不断修改后,才正式发布了b i n d 4 ,并很快得到了广泛的 应用。b i n d 对互联网的发展做出了巨大的贡献,它使人们能够更加方便的使用 互联网。作为当时唯一的域名软件,它对域名的标准化进程影响巨大,b i n d 的 标准往往就成为当时的r f c 标准。b i n d 目前有三个系列软件:版本4 、8 、9 , 其中版本4 由b e r k e l e y 的c o m p u t e rs y s t e m sr e s e a r c hg r o u p ( c s r g ) 维护,目前 已经基本上停止了发展。版本8 之后,b i n d 软件改由i s c ( i n t e r n e ts y s t e m s c o n s o r t i u m ) 继续开发维护,并免费发布软件。为了提高运行性能和使用方便, i s c 对b i n d 软件的架构进行了重大的修改,因此各版本的b i n d 的配置和使用 都略有差异。直至今日,b i n d 仍然是最广泛使用的域名软件,根据w w w i s c o r g 网站的数据,目前b i n d 的市场占有率仍然达到7 5 。从某种程度上说,互联 网仍然依赖着b i n d 软件。 其他域名服务器软件包括微软的d n ss e r v e r 、d j b d n s 或者t i n y d n s 等, 这些软件的出现主要针对了b i n d 的一些缺点,例如配置比较复杂,软件过于庞 大等。其中微软的d n ss e r v e r 由于捆绑在服务器操作系统中销售,因此也取得 了较高的市场占有率。 三、域名动态更新和域名安全认证 1 、 动态域名功能的历史发展 在网络的快速发展过程中,域名系统的不足伴随着网络应用的不断扩大逐步 体现出来。其中最大的问题是域名的修改需要人工介入,不太适合一些域名变化 较多的场合,动态域名的需求也就逐步显现出来。 动态域名更新的需求最早可能来自微软的网络产品。微软的w i n d o w s n t 4 主 要用于构建企业端网络,在这样的网络内,很少采用域名系统进行名字解析,即 使提供了域名系统,也只用于支持u n i x 主机或互联网提供的服务。n t 4 首选的 本地名字解析服务是w i n s ,在其网络中,各类应用程序使用n e t b i o s 名称来 识别和定位资源、服务,并使用w i n s 协议进行名字注册和查询。虽然w i n s 在n e t b i o s 网络中实现解析服务较方便快捷,但是,w i n s 和n e t b i o s 域名 服务并没有在超过企业网的范围内使用,根本原因就是w i n s 的名字系统是扁平 的,没有分级的概念,是一个难以扩展的系统。微软之所以选择w i n s 而非d n s 的主要原因就是因为它支持动态更新。在企业网络中,客户端的i p 地址往往通 过d h c p 动态获得,因此名字的动态更新是十分必要的。由于企业网的名字服 务与互联网的域名服务有着较大的差异,使用传统的n e t b i o s 的微软网同互联 网的连接就较困难。如果能实现动态域名更新,就可以大大方便这些网络的应用。 根据这些需求,i e t f 开始制定相关的标准化文件,1 9 9 7 年发布了r f c 2 1 3 6 ( d y n a m i cu p d a t e si nt h ed o m a i nn a m es y s t e m ) 和r f c 2 1 3 7 ( s e c u r ed o m a i n n a m e s y s t e md y n a m i cu p d a t e ) 提出了解决域名动态更新的一个方法,之后发布 得最新b i n d 软件支持了该协议。不久,微软公司在新发布的w i n d o w s 2 0 0 0 的服 务器软件中开始支持r f c 2 1 3 6 的动态域名更新协议,它取代w i n s 名字系统成 为w i n d o w s 网络首选的名字解析服务。微软并未支持有关r f c 2 1 3 7 的内容,而 是使用其他安全机制。之后,i e t f 发布了r f c 3 0 0 7 ( s e c u r ed o m a i nn a m e s y s t e m ( d n s ) d y n a m i cu p d a t e ) 等相关协议,以改进域名更新的安全认证方法。从发展 上看,域名协议标准化过程受到b i n d 的影响非常大,新标准出现后,一般都会 得到b i n d 的支持。 尽管动态域名系统的标准化工作和产品都得到了巨大的发展,但是在实际使 用中仍然存在着一些非标准方法,而且这些方法也得到了巨大的应用。 2 、标准动态更新的方法 r f c 2 1 3 6 是原有域名系统标准的一个扩充,满足r f c 2 1 3 6 的系统应该仍然 能够完成标准域名的其他功能,从而保证新系统的向下兼容。r f c 2 1 3 6 说明域 名更新的方法,它主要包括以下的一些内容: 两个不同r r 的区别。两个相同的r r 是指他们n a m e ,c l a s s ,t y p e , r d l e n g t h 和r d a t a 属性是相同的,否则就是不同的。定义中明确将t t l 排 除在比较之列。 定义了r r s e t ,r r s e t 是所有n a m e ,c l a s s 和t y p e 属性相同r r 组成的 集合。 域名更新的协议。域名的更新仍然采用客户服务器模式,使用原有的域名 查询的端口,更新后服务器的回应数据包也采用原有格式,但是增加了相关的回 应代码。 协议设计了新的域名更新的请求数据包,其格式为: h e a d e r z o n e p r e r e q u i s i t e u p d a t e a d d i t i o n a ld a t a h e a d e r 是包头数据,标明该包的性质和功能,该包头与原有的域名查询、 回应的数据包头格式是完全一样的,但是扩展了h e a d e r 保留参数o p c o d e ,当 o p c o d e 设置为5 时,代表该包为域名更新的数据包。 z o n e 是区域名,代表了被更改域名所在的区域的名字,一个查询包可以对 多个r r 进行修改,但是这些r r 必须位于同一个区域内。如果域名服务器收到 非本域的更新要求时,将返回错误信息,而不会启动逐级操作的过程。 p r e r e q u i s i t e 是先决条件,告知了服务器进行域名操作的先决条件,目前共有 5 种先决条件: r r 必须存在选项,该选项要求服务器上已经存在一个r r ,其n a m e 和t y p e 属性与提交的r r 相等,但与数值无关。 r r 数值相等选项,该选项要求提交的r r 与服务器的r r 相等。 r r 必须不存在选项,该选项要求提交的r r 必须不存在。 名字使用:该选项要求服务器上已经存在一个r r ,该r r 与提交的r r 的n a m e 相等。 名字未使用:该选项要求服务器不存在一个r r 与提交的r r 的n a m e 相等。 u p d a t e 是更新具体内容,其内容是相关的r r ,通过参数的不同,分别表示 增加r r ,删除r r ,删除r r s e t ,删除某个域名下的所有r r s e t 。 a d d i t i o n a ld a t a ,用于其他的更新。 在进行域名更新时,只有主域名服务器才能进行更新的动作,如果辅域名服 务器收到域名更新要求时,它将把数据包转发给主域名服务器进行处理,收到主 名域服务器的应答后,辅域名服务器将转发该应答,并更新自己相关数据库的内 容。 在r f c 2 1 3 6 中,并没有说明如何实现域名更新的认证,安全的认证协议是 在其他的r f c 文件中说明的。 3 、 域名系统中的安全认证 作为互联网的“电话簿”,域名系统往往成为黑客的重要攻击目标,而域名 系统一旦产生问题,其影响是非常巨大的。在域名服务中存在着不少安全隐患, 比较集中的问题是认证问题,无论是服务器还是客户端都没有有效的手段来验证 收到数据的正确性,这容易引起虚假域名数据的问题。为从根本上解决域名服务 问题,i e t f 制定了一系列的域名安全协议,以保障域名系统的安全,如r f c 2 0 6 5 、 r f c 2 1 3 7 、r f c 2 5 3 5 、r f c 3 0 0 7 等。 这些协议的目标就是建立一个具有认证机制的域名服务,这些认证包括对数 据真实性的认证和对操作的认证。而动态域名协议的认证则是这其中一个部分。 在这个认证机制中,核心的算法就是电子签名的算法。 电子签名算法 电子签名是附加在正式信息后面的一段电子数据,该数据结合了发信人的密 码和相关的信息内容,并通过一定的算法计算得出的。这段数据作用有两个: 身份证明:证明信息是相关人员制作的,其他人不可能伪造出相关的数据。 信息防篡改:可以识别出信息是否曾被非法修改。 电子签名的算法主要包括摘要算法和公钥算法。 摘要算法是一种信息校验算法。摘要算法使用某个h a s h 函数对输入信息进 行处理,生成定长的信息校验码。例如m d 5 算法,该算法可以对任何长度信息 进行计算,生成1 2 8 b i t 的校验码,目前m d 5 、s h a 1 是最常用的两种摘要算法。 有时候摘要算法被称为不可逆的加密算法,因为通过摘要无法还原原有的信息。 摘要算法有较高的安全性,对原始信息的微小修改都会造成校验码的巨大变化, 而即使知道了信息的部分内容和摘要,也没有算法可以算出原有的信息( 除穷举 法外) 。 4 公钥算法是一种非对称的算法,该算法是一个可逆的加密算法。该算法使用 两个密钥对信息进行加密和解密,这两个密码成对出现,分别被称为公钥和私钥。 用公钥加密的信息可以使用私钥解密,用私钥加密的信息则可以用公钥解密。公 钥可以作为公开信息发布,而私钥则必须保密。常用的公钥算法有r s a 算法和 椭圆算法等。 签名算法的细节描述如下: 如果有摘要算法h a s h ( m ) ,其中m 为字符串,代表信息 以及公钥算法p c r y ( k e y ,m ) 和p d e c ( k e y ,m ) ,其中p c r y 代表加密,p d e c 代表解密。 那么签名算法为:s i g = p c r y ( p r i k e y 。h a s h ( m ) ) ,其中s i g 为电子签名,p r i k e y 为私钥。 签名校验的等式为:p d e c ( p u b k e y , s i g ) - - h a s h ( m ) ,其中p u b k e y 为公钥。 从以上算法可以看出,没有私钥就无法生成特定的签名,这样就可以用签名 校验等式来验证信息制作者的身份。另外,如果信息m + s 培被修改,就会造成 签名验证失败,这样就可以防止信息在传输过程中被非法篡改。 电子签名的算法的安全性由算法的安全性和密钥的长度所决定。以当前的技 术水平来看,常用的公钥算法和h a s h 算法都是相对安全的,因为这些算法都没 有找到有效的解密算法。在密钥长度方面,为了保障安全,公钥的长度必须达到 5 1 2 位以上。 由于密钥长度较长,公钥加密速度要比私钥加密箅法( 只使用个密码进行 加密、解密) 和h a s h 算法慢。为了提高效率,在有些情况下,可以使用一种较 为简单的签名算法,当然,其安全性也低于电子签名算法。 该算法使用一个密码和h a s h 算法进行签名,具体方法为: 签名和验证的等式:s i g = h a s h ( m + k e y ) 具体来说,通信双方都拥有相同的密码,签名是原始信息加上密码的h a s h 值。该算法只保证了通信双方拥有相同的密码,具备了不可篡改性的安全要求。 该算法的效率明显高于电子签名的算法,也是一种常用的安全验证的手段。例如 在域名的动态更新中的t s i g 就使用了该算法。 域名系统的认证机制 在r f c 的标准协议,使用了多种的签名机制,其中主要包括s i gr r ,k e yr r t s i g ,s i g ( o ) 和g s s t s i g a s i gr r ( 签名的资源记录) 是具有电子签名的r r ,其格式仍然参照标准r r 的格式,但是扩展了r d a t a 部分。按照f r c 2 5 3 5 的规定,r d a t a 的格式中除 了原有的数值外,还包括电子签名的有效期、电子签名的算法表示、电子签名等 数据。每个需要提供安全认证的域名区域都必须拥有一个公钥和私钥,私钥用于 对区域内的r r 进行签名,以保证数据的完整性。在一次安全的域名查询中,服 务器将返回s i gr r ,客户端就使用该区域的公钥对r r 数据进行身份验证和完整 性检测。 安全域名的前提是客户端已经事先知道区域的公钥,因此实现安全认证还包 括区域公钥的发布过程,这个过程是通过k e yr r 来实现的。k e yr r 的r d a t a 格式是在原r r 后加上了区域公钥的密码。 t s i g 事务签名( t r a n s a c t i o ns i g a t u r e ) 是采用简单h a s h ( ) 算法的一种签名机制, 主要用于动态域名的更新、区域传输等域名操作。t s i g 的详细定义可以参考 r f c 2 8 4 5 。t s i g 在相关事务操作时动态的生成,并不保存在服务器的数据库里。 当t s i g 签名用于动态域名更新时,客户端和服务器端享有共同的密码,并在传 输时对数据进行签名,保证数据的安全传输。t s i g 作为一个比较高效安全的算法, 目前还是得到了一定的应用。 s i g ( 0 ) 的签名机制的作用与t s i g 的作用是完全相同的,但是它具有更高的 安全性,定义文件为r f c 2 9 3 1 。在s i g ( 0 ) 中,使用公钥算法进行验证,可以对 通信双发的身份进行验证。但是采用s i g o ) 的协议将耗费大量的资源,目前使 用面比较狭窄。 g s s t s i g ( g e n e r i cs e c u r i t ys e r v i c ea l g o r i t h mf o rs e c r e tk e yt r a n s a c t i o n a u t h e n t i c a t i o n f o r d n s ) 是微软提出安全签名标准,也用于域名的更新等操作, 目前定义在r f c 3 6 4 5 中。g s s t s i g 的安全验证的机制基于k e r b e r o s ,在这种机 制下,更新数据发出前,服务器和客户端必须先进行协商,获得操作的凭单,然 后再进行域名更新。g s s - t s i g 目前只在微软的域名服务器内使用。 除了以上的协议外,许多应用系统使用了其他的安全协议或者是私有协议进 行安全认证。比较常用的如h t t p s ,i p s e c 等协议。 4 、 动态域名的一些应用系统 b i n d b i n d 软

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论