DNS(Domain Name Service,域名服务)是Internet/Intranet中最基础也是非常重要的一项服务,用来将域名地址转化为IP地址的服务,通常由DNS服务器完成。它提供了网络访问中域名到IP地址的自动转换。在客户机上配置TCP/IP时通常要指明DNS服务器所在的IP地址。
在因特网中,网络是与分层次组织的路由器连接的,如图D-28所示。数据分组可能只需要通过某个中间路由器,或被发送到位于最高层的路由器,以便找到通向目的地的路径。路径中的每一个路由器都知道与之连接的网络。如果某个路由器不知道路径,它则将数据分组发送给层次结构中下一个最高的路由器。
图D-28 Internet上的分层路由选择结构
与该路由层次紧密相关的是“域名服务(DNS)”,它将名称与IP地址联系在一起。DNS提供主机和域名的一个Internet范围内的数据库。例如,DNS用于查找主机名写作microsoft.com的IP地址。当您访问因特网中的Web站点时,如果您知道该站点的IP地址并且记住了它,可以键入该地址。不过很少有人能够做到这一点。相反,我们依靠分布在因特网上的DNS服务器来将我们能够记住的众所周知的名称翻译成IP地址,一般有两种机制来完成,一种是有主机表来完成,另一种是采用域名服务的守护进程(named , 或 in.namd)来实现。这两种方式都能实现域名与IP之间的互相映射。图D-29描述了获取IP地址的过程。 Internet上的主机成千上万,并且还在随时不断增加,不可能由一个或几个DNS服务器能够实现这样的解析过程,传统主机表(hosts)方式更无法胜任,事实上DNS依靠一个分布式数据库系统对网络中主机域名进行解析,并及时地将新主机的信息传播给网络中的其它相关部分,因而给网络维护及扩充带来了极大的方便。
DNS服务器有规划地位于因特网中。如图D-29所示,通常某个系统可直接访问某个服务器,或者是通过至少一个路由器跳跃访问服务器,尽管可能要查询若干个服务器。大多数因特网服务提供商都有DNS服务器。当用户在Web浏览器中键入域名时,查询将被发送到在用户的Web浏览器配置对话框中定义的主DNS服务器(如果未指定服务器,则为默认DNS服务器)。
如果此过程发生错误,将会出现一条错误信息,表明无法找到此站点。通常,都是由于网络和服务器繁忙而导致的临时问题。再次尝试访问站点通常都会使DNS再次查找并且能够成功连接。
图D-29 从DNS服务器处获得IP地址
命名系统是分层次的,如图D-30所示。树是倒置的,它的根级显示在最上方。树分为顶级域(TLD),这些域又被分成二级域(SLD),依此类推。顶级域名由Internet网络协会负责网络地址分配的委员会进行登记和管理,它还为Internet的每一台主机分配唯一的IP地址。全世界现有3个大的网络信息中心:INTER NIC负责美国及其它地区、RIPE-NIC负责欧洲地区和APNIC负责亚太地区。除了显示的TLD(.Com、.net和.org),还有200多个国家级的TLD,它们由各自相应的政府或私有实体管理。
顶级域一般有两种类型,一种是地理域,另一种是机构域,地理域是通过地理区域来划分域名,例如中国的地理域名是CN,日本是JP,香港是HK,美国一般不使用地理域名;机构域是根据注册的机构类型来分类。常用机构类的顶级域名为:
图D-30 DNS命名级
1997年2月,除现有的这些.Com、.net和.org外,IAHC(国际特别委员会)宣布了七个新的gTLD(普通顶级域),可以在它们之下注册因特网名。这些新的领域有:
DNS历史和管理信息
1998和1999年,修改了整个管理结构。美国商务部发表了名为“因特网名称和地址管理”的文章,概述了美国政府要“以一种能够增强竞争并能够促进对域名管理的国际参与的方式,使域名系统私有化”的计划。
在因特网的初期,当只有几百个用户而不是几百万个用户时,Jon Postel维护一个主机名和IP地址映射的列表。该列表存储在其他人能够访问到的FTP服务器中。它包含两栏信息:IP地址和主机名。此方案的问题是文件的更新并确保每个人都有最新的信息。更改和更新差不多是一件很可怕的事情。因此需要一种方法使此过程自动化并确保两个主机不会有相同的名称。
Paul Mockapetris最终出台了他的所谓“域名方案”。它是分层次的并且是分布式的。如果某个DNS服务器不知道某个名称,它还允许该服务器查询其他服务器。早期的DNS文档是RFC1034,“Domain Names-Concepts and Facilities,”(November1987)和RFC2035,“Domain Names-Implementation and Specification,”(November1987)。
在1991年到1992年之间,美国国家科学基金会(NSF)与Network Solutions, Inc.(NSI)签定合同,使之管理域名注册和其他业务。差不多在整个20世纪90年代,都是NSI基于先来先服务的原则处理普通顶级域(gTLD)的域名注册。它还维护一个目录,该目录将域名和域名服务器的IP号进行链接,并维护因特网注册的权威数据库。在20世纪90年代因特网在商业方面的发展中,NSI在此领域内起了非常重要的作用。
到1999年,域名系统有了下列结构:
•IANA协调数字IP地址块对于区域IP注册机构(北美洲的是ARIN,欧洲的是PIPE,亚太地区的是APNIC)的分配。然后大型ISP向注册机构申请注册IP地址块。这些ISP再将分配给他们的地址块分配给更小的ISP或终端用户。
•IANA维护网际协议族的技术参数,包括协议号、端口号、自治系统号、管理信息基础对象标识符以及其他内容。
•DNS包含一个根服务器系统,该系统物理上包含一组文件服务器,数量为13个。这些服务器包含权威性数据库,它列出所有的顶级域。NSI操作“A”根服务器,它维护权威性的根数据库并且每天都将更改复制到其他根服务器。美国政府操作大约这些服务器的一半。权威性服务器提供有一个重要的功能:因特网中的通用名称的一致性。
1999年,因特网赋名和编号公司( ICANN),一个新的非赢利公司,接管了对IP地址空间分配、协议参数分配、域名系统管理和根服务器系统管理功能的责任,以前这些都是根据美国政府的合同由IANA和其他实体执行的。
ICANN已经针对未来的Com、org和.net的注册机构采取了鉴定合格的标准和申请程序。1999年4月,通过与美国政府达成协议,Network Solutions,Inc.对五家注册机构开放了它用于.com、.org和.net的共享注册系统试验台,并在1999年中期对所有鉴定合格的注册机构开放。由于NSI失去了分配因特网域名的独家合同,许多其他公司和组织已开始从事此项工作,其中包括AOL(美国在线)、AT&T、register.com、France Telecom不a几个国际联合会。最终,许多其他公司也将出售域名。NSI现在仍然从事这项业务,并仍然维护着权威的“A”根数据库。
DNS操作
将它的内部网络连接到因特网的组织都可以选择安装它自己的DNS服务器或使用外部DNS服务器,如位于它的ISP处的服务器。有些组织可能会选择同时使用内部和外部DNS服务器。安装内部DNS服务器涉及到适当地维护DNS服务器及其数据库,以便系统能够与外部DNS服务器相互操作。
因为DNS包含一个分布式数据库,所以数据库存在于多个服务器中,每个服务器都拥有整个数据库的一部分。如果DNS是内部专用的,整个数据库可能就在某一个服务器中,或分割到几个服务器中,这取决于网络的大小和某一时间内访问数据库的用户的数量。
在因特网中,分布数据库是一项基本要求。DNS层次结构中的服务器拥有与某一区域相关的DNS数据库的一部分,而且该服务器被认为对这一区域是权威性的。一个区域可能包含一个或多个域,区域服务器只对这些域来说是权威性的。有了区域,DNS数据库可以被分布并由各自的DNS服务器管理。
DNS服务器包含区域文件,而此文件又包括名称到IP地址的映射。区域文件包含对于每个名称到IP地址的映射的资源记录。这些文件通常是使用DNS附带的DNS管理程序编辑的。也可以手工编辑它们。
因特网中的DNS名称服务器需要同时具有主名称服务器和辅助名称服务器,其中主名称服务器包含原始的名称到IP地址的映射,而辅助名称服务器则包含这些映射的副本。这样就提供了冗余和容错能力以确保因特网用户的连通性。
典型的DNS服务器包含下列文件:
•区域文件 包含对区域内每个主机的名称到IP地址映射进行描述的资源记录。在该区域内,该DNS服务器是权威性的。
•高速缓存文件 包含因特网根DNS服务器的名称到IP地址的映射,并用于解析对域外部的计算机的名称查询。
•反向查找文件 该文件包含IP地址到名称的映射(称为PTR记录)。当只知道IP地址时,使用此种映射可提供名称。
设置DNS服务器涉及到安装DNS服务器软件、创建区域数据库文件、指定主域以及添加子域。然后您可以开始添加主机系统。有些操作系统使用动态DNS技术自动完成最后一个过程,其中包括对主机定位并将它们的名称/IP地址信息输入到数据库中。最后一步是确保配置网络客户机的TCP/IP软件以表明主DNS服务器和辅助DNS服务器的IP地址。这样就允许客户机系统首先直接转到最近的DNS服务器来解析名称到IP地址的映射。
RFC2901,“Guide to Administrative Procedures of the Internet Infrastructure, ”(August 2000)描述了对试图连接到全球因特网的网络的管理规程。它包括地址空间分配和注册、路由选择数据库注册和域名注册所必需的步骤和操作。
DNS的工作原理及过程分为下面几个步骤:
第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。
第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。
第五步:重复第四步,直到找到正确的纪录。
第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。
Novell DNS/DHCP服务将DNS和DHCP(动态主机配置协议)集成到Novell目录服务(NDS)中。DHCP是一种自动向客户机系统分配IP地址的协议。DNS/DHCP服务也支持动态DNS ( DDNS),它使用新的IP地址动态地更新主机名称数据库。使用DNS/DHCP服务,管理员可以通过NDS集中监控和管理IP地址和主机名称。
在Windows NT/Windows 2000环境中,DNS与WINS (Windows因特网命名服务)集成以提供动态形式的DNS. WINS是跟踪传统的Windows网络中NetBIOS计算机名称的系统。随着Windows2000的发行,Microsoft正在从NetBIOS名称转移到DNS命名。
安全性是DNS的一个潜在问题。在服务器错误配置、防火墙错误配置以及未能安装能修复己知的安全性隐患的最新修补程序等情况下,都会出现安全性缺口。IETF域名系统安全性(dnssec)工作组正在努力解决DNS安全性问题。
还有最后一件事。Berkeley因特网名称域(BIND)是DNS最常见的实现,可在因特网软件协会(ISC)那里找到,其网址是http://www.isc.org 。Novell NetWare和Windows NT/Windows 2000等操作系统都有它们自己特定的DNS实现,尽管您也可以自由运行其他实现。