下载
第6章DNS:名字服务器
作者:Rima S. Regas
本章内容包括:
• 域名系统概述
• 授权局
• DNS分布数据库
• 域和区
• Internet顶级域
• 选择一个域名服务器
• 名字服务解析过程
• 高速缓存
• 反向解析( P o i n t e r )查询
• DNS安全
• 资源记录
在以前,网络上的用户需要维护一个H O S T S配置文件,这个文件包括当此工作站和网络
上的其他系统通信时所需要的一切信息。问题是显然的,因为每台机器的H O S T S文件需要手
工单独更新,几乎没有自动配置,因此使得H O S T S文件更新是既枯燥又费时的工作。
H O S T S文件包括名字和I P地址的对应信息。当一台计算机需要定位网络上的另一台计算
机时,就会查看本地H O S T S文件,如果在H O S T S文件中没有关于此计算机的表项,说明其不
存在。域名系统( D N S )改变了这一切。D N S允许系统管理员使用一个服务器作为D N S主机。
当网络上的计算机要定位另一台服务器时,它就会查看H O S T S文件。
今天,仍在使用H O S T S文件,这仅仅是为防止局域网上的一台机器使用D N S查找一台本地
机器,因为通过H O S T S文件查找本地会更快。简单的讲,计算机的网络软件在使用缺省D N S服
务器之前,首先查看本地H O S T S文件来指导定位,如果在H O S T S文件中存在一个匹配,客户
端软件就会直接和远端的主机通信,这样一来就极大地缩短了通过D N S发现I P地址的时间。
6.1 域名系统概述
使用名字的原因是名字比数字更容易记忆。虽然大多数人有记忆电话号码、地址、数量
以及其他与生命相关特征的惊人能力,但是存在如此众多的I P地址,记住它们绝非易事,因
此产生了命名。举例来说, C | N e t的域名是w w w. c n e t . c o m,这个域名没有竖线和大写字母,与
站点的名字比较,域名的含义相当不明显,但是,域名和站点的名字还是相当好地吻合了。
C | N e t是世界上最大的且最经常被访问的站点之一。
在出现D N S之前,人们曾想让一个系统负责把名字翻译成号码。当翻译或解析一个We b
站点的域名(如w w w. c n e t . c o m )并且找到了域名对应的I P号( 2 0 4 . 1 6 2 . 8 0 . 1 8 1 )时,I P号就是实际
的地址。这样I n t e r n e t内容就可以传送到你的We b浏览器上。这个过程需要一个称为D N S或域
第6章DNS:名字服务器使用49
下载
名服务器(系统)的网络系统。当前,这些服务器都连接到一个叫做网络解决方案( N S I )的公司,
这个公司位于弗吉尼亚。N S I,也就是I n t e r n e t网络信息中心( I n t e r N I C ),负责对域名进行所有
权管理和分发。
其中的一部分工作是提供基本的根域名服务器,其他的D N S服务器会查找此服务器得到
所需要的信息。其结果是,全世界有许多共享信息的D N S服务器,这样,它们所在地的用户
就能找到它们的站点和其他的I n t e r n e t资源。这意味着如果用户的D N S服务器不能解析一个域
名到I P地址,服务器就会和另外的D N S服务器联系。假如那个D N S不能找到域名,它还将继
续搜索直到超时。在这种情况下,就会返回一个错误,如果客户端容许的话,还会显示一条
错误消息。在We b站点不能被发现的情况下,浏览器就会显示一条错误信息—不能定位服务
器或存在D N S错误。
D N S就如其组织结构分层一样,从顶级D N S根服务器向下延伸,并把名字和I P地址传播
到遍布世界的各个服务器上。一个能清楚说明D N S如何使用分层结构的例子是D N S服务器不
在本地存储全部的名字和I P地址的映射,一旦D N S服务器在自身的数据库中没有找到I P地址,
它会请求上一级D N S服务器看是否能找到这一I P地址,这个过程会继续下去直到超时或找到
答案。下一节会更详细地讨论这一结构,因为它还有另一个更重要的特性。
DNS结构化组织
在1 9 8 2年出版的R F C 8 1 9文档中,Zaw-Sing SU和Jon Postel提出了D N S概念和D N S计划。
下面摘出文档中的一段话:
“域名集构成层次。使用图论表示,这种层次可以模型化为有向图。有向图由一组点和一
组弧组成,弧由不同的有序点对标识[ 1 ],图中每个点表示一个域,有序点对(B, A),即B到A
的弧,说明B是A的一个子域,B是一个简单的名字,且在A内惟一”。
这句话不是很好理解,我们会以一种更简单的方式解释这个概念。其中的原理很简单,
用户有一个顶级域,如C O M或E D U。C O M和E D U域是最高的域级,不会有比它们更高的域,
但是有一个例外。实际上,在C O M后有一个句号( C O M . ),那个句号是比C O M更高的域,但
是这个句号没有使用意义,因为它仅仅有表示作用且通常被忽略。顶级域(如C O M、E D U和
O R G )称为通用名,因为它们包含层次在其下面的域和子域,它们非常像树根。从顶级移至中
间级,中间域名的例子包括c o k e . c o m、w h i t e h o u s e . g o v以及d i s n e y. c o m,这些域名可以被注册,
但是这样做通常仅仅是为了覆盖相关域名范围。在一个子域内注册一个完全的域是很常见的,
S U和P o s t e l 称这些域为端域。端域的例子包括
w w w. c o k e . c o m、w w w. w h i t e h o u s e . g o v以及w w w.
d i s n e y. c o m。当然,这些都是I n t e r N I C注册系统中有
代表性的域,美国之外的系统使用不同的方式来指
示位置和国家,如w w w. b b c . c o . u i c,是指B B C的We b
站点是一个商业站点( C O 和C O M相似)位于英国
( U K )。
图6 - 1显示了S u和P o s t e l提出的最初域层次图。
子域可以是任何东西,这样的例子是w w w. netscape.
c o m、h o m e . n e t s c a p e . c o m及www1. netscape. com,所有这图6-1 原始域层次示意图
U:命名空间
I:中间域
E:端域
些可以位于I n t e r n e t上非常不同的地方,并且经常包含不同的信息。当然如果We b管理员愿意,
这些都可以指向一个站点或者一个页面。N e t s c a p e就是这样做的,可以通过所有的U R L列表访
问N e t s c a p e。
注意作为另一个例子,Webopedia选择注册webopedia.com作为子域,这是因为许多人
对古典希腊字母不熟悉。
6.2 授权局
D N S的组织方式允许服务器成为根名字服务器的下属机构控制一个域。一个很好的例子
是为个人或公司驻留We b站点的本地I S P。当X公司向I n t e r N I C注册了域名( w w w. companyx.
c o m )时,就宣布它的I S P的主控和辅助D N S服务器作为其D N S服务器。I n t e r N I C会把相应信息
放进. c o m根服务器上,让其传播。
注意DNS服务器周期性地和其他DNS服务器上的各种数据库同步,并检查其他服务器
上的新表项。这个过程通常称为传播。域名注册过程不是瞬时完成的,但是一个新域
名大约会在3~4天内完成传播,能在世界各地获得相关信息。
为了使这种系统能工作,需要一个方法来决定网络上的一台机器位于何处。这就需要引
入系统层次概念,对机器按功能进行分类。假如要查找的机器位于教育机构,它的顶级域应
是. E D U。假如一个站点是商业机构它就应位于. C O M顶级域中。这个概念形成了D N S层次中
的根,但不是根名服务器。
6.3 DNS分布数据库
D N S分布数据库结构分布相当广泛,功能非常强大。前面已述及为了更好地控制域或子
域内的流量,可以把权力分配给处于更佳位置的其他服务器。这种信息传播到其他服务器的
方式,通过完全的分布计划来完成。
每个域指定一个所有者,定义为域授权开始( S O A )的一部分, S O A将在后面作详细介绍。
顶级域如C O M,为一个域名,如d i s n e y. c o m授权给一个特定D N S服务器作为其基本D N S服务
器。这样减轻了顶级域控制器为每一个I n t e r n e t上的D N S请求作处理的负担。一旦一个S O A与
一个域控制器联系起来,它就能把子域控制授权给其他的D N S服务器,等等。这就是授权从
最顶级分布到最低层的工作方式。
6.4 域和区
域和区经常成对出现,但是二者有些微妙的区别。一个区在名字世界中是一个基本域,
它授权给另一个D N S服务器以便管理。D i s n e y. c o m是一个区,但w w w. d i s n e y. c o m实际上是那
个区内的一个子域。管理的责任授权给一个基本的D N S服务器, D i s n e y站点的基本D N S服务
器是h u e y. d i s n e y. c o m,其I P地址是2 0 4 . 1 2 8 . 1 9 2 . 1 0,因为指定h u e y为D i s n e y的基本D N S,那么
它也是D i s n e y. c o m的基本区。这个服务器的指定所有者是root @ huey. d i s n e y. c o m,在S O A中
为r o o t . h u e y. d i s n e y. c o m。
注意要使用正确格式的SOA,因为SOA会在各个阶段通过去掉所有邮件地址中的@符
号改变管理员的邮件地址,有的公司喜欢在电子邮件地址的@前加一分隔符,这样就
50使用第二部分命名和寻址
下载
第6章DNS:名字服务器使用51
下载
会出现问题,因为如果一个管理员的电子邮件地址是host.admin @ example.com,在
S O A中将成为h o s t . a d m i n . e x a m p l e . c o m。任何要解析那个地址的系统将假设电子邮件地
址为host @ admin.example.com,这样只能收到一个DNS错误(认为那不是有效地址)。
考虑这样一种情形, t h i n g _ 1 . c o m作为用户的域, t h i n g _ 1 . c o m的D N S服务器称为d n s .
t h i n g _ 1 . c o m,它作为t h i n g _ 1 . c o m的授权D N S。
thing_1. com 的一个子域可以是w w w.
t h i n g _ 1 . c o m,也可以是h o m e . t h i n g _ 1 . c o m。
这个子域的基本D N S 服务器是
d n s . t h i n g _ 1 . c o m。如果用户想注册另一个域
名t h i n g _ 2 . c o m , 也可以授权给
d n s . t h i n g _ 1 . c o m,这两个域名将位于双区内,
由t h i n g _ 1和t h i n g _ 2组成。任何数目的子域可
以加入到任何一个区内,只要子域名在它们
的区内惟一。
图6 - 2显示了一种更复杂的情形,图中建立了一个t h i n g . c o m的区,授权给主控D N S:
d n s . t h i n g . c o m和辅助D N S:d n s 2 . t h i n g . c o m,这为用户提供了基准域。
现在,加入一个子域,典型情况下加入w w w. t h i n g . c o m。为了流量均衡目的,用户可以加
入w w 1 . t h i n g . c o m和w w 2 . t h i n g . c o m。流量可以在内部处理,使新的流量调度到最少被使用的
服务器上。现在用户的区如图6 - 3所示。
图6-3 三个新服务器作为区主服务器和两个DNS服务器的下属
注意所有的D N S流量仍将穿过t h i n g . c o m。虽然看起来次级服务器直接访问D N S服务器,
但它们是通过t h i n g . c o m的网关I P来完成访问的。
6.5 Internet顶级域
有大量的顶级域( T L D ),最熟悉的是C O M、E D U、G O V、M I L、N E T和O R G。然而还有
许许多多的T L D。每个国家有自己双字母的T L D,U K是英国的T L D,N Z是新西兰的T L D,J P
是日本的T L D等等。一个使用T L D的例子是w w w. b b c . c o . u k。
注意有许多美国之外的外国地址域使用CO表示商业,CO类似于InterNIC中的COM。
警告没有什么能阻止人们在其他国家注册域,即使服务器与U R L指示的国家距离更远一些。
图6-2 thing.com区和DNS基本示图
I n t e r n e t
t h i n g . c o m
d u s . t h i n g . c o m d u s 2 . t h i n g . c o m
网络流量
网络流量
I n t e r n e t
t h i n g . c o m
d u s . t h i n g . c o m d u s 2 . t h i n g . c o m
网络流量
网络流量
w w w. s o f t . t h i n g . c o m
w w 1 . t h i n g . c o m w w 2 . t h i n g . c o m
6.6 选择一个域名服务器
在今天,选择一个域名服务器有些不必要。Windows NT/2000具有一个内嵌的适合于各
种平台的应用程序。苹果有一个称为M a c D N S的自由软件。U N I X和相关操作系统一直提供一
个可靠的B I N D软件。还有许多功能强大的第三方D N S服务器可用。
寻找服务器的最好地方是D a v a中心( w w w. d a v e c e n t r a l . c o m )和Tu c o w s ( w w w. t u c o w s . c o m,
正准备选择一个本部服务器作为分支机构)。它们会考察每一个软件,并给用户提供建议:哪
个软件流行,哪个软件不流行。流行的更好一些,因为它说明人们愿意使用它,不是所有的
人都能忍受界面不友好的应用程序。
6.7 名字服务解析过程
当一个客户端程序,如浏览器,产生一个U R L请求交给本地D N S服务器时,这个服务器
会尽可能把名字分析成号码。假如解析成功,数据会被向前发送,开始下一段旅程, D N S服
务器处理下一个请求。假如服务器不能定位地址,它有两个选择,这要依赖于服务器的配置
方式,这两个选择是递归( R e c u r s i v e )和叠代( I t e r a t i v e )。
6.7.1 递归查询
递归查询是最典型的。如果到达服务器的查询在C a c h e中找到了一个记录,就不再需要更
进一步的查询。假如没有找到,服务器会请求另一个服务器,这个过程就像爬梯子一样。这
里要引入存活时间( Time to Live, TTL)机制。如果查询费了很多时间也没找到记录,查询过程
会停止,发出请求的D N S服务器会返回一个“ address not found”错误。
6.7.2 叠代查询
叠代查询被强制在局部范围内进行,这其中是有原因的。最主要的原因是另一个D N S服
务器不可得到。递归特性可能在用户访问的服务器上被禁止了,但是这不大可能。服务器会
定位C a c h e中最好的匹配。如果没发现,就说明不在那里, D N S会返回一个错误。
6.8 高速缓存
由于D N S整天都在忙碌,它会挑选资源存储起来。这些资源记录(Resource Record, RR)包
括被查询U R L的信息。T T L机制在这里也起作用,服务器会高速缓存尽可能多的并且有效的
信息。
6.9 反向解析(Pointer)查询
典型的查询是前向的,尽力解析一个U R L的I P地址。反向解析恰恰相反,尽力找到I P对
应的U R L。有一些程序可以为用户做到这一点,但是为Wi n d o w s开发的一个最好程序是L u c
N i e i j e n s的C y b e r K i t。这是个免费网络软件,可以从w w w. p i n g . b e / c y b e r k i t /上下载。
6.10 DNS安全
用户可以升级到动态D N S服务器来保证安全,因为它们的记录可以在没有管理员干预的
52使用第二部分命名和寻址
下载
情况下自动更新。
6.11 资源记录
所有的D N S记录有相似的格式。虽然在D N S文件中可以找到有许多快捷的表示方式,但
是这些例子使用最简单的术语以消除二义性。
D N S记录中的第一个域总是I P地址或主机名。如果此域为空的话,前一个记录的名字或
地址就适用于此记录。注意所有的名字或地址以点结尾( . ),这表明名字或地址是绝对的而不
是相对的。绝对地址,也称为全称域名,是相对于根的,然而相对地址相对于缺省域(可能不
是根),这个域可以跟可选的生存时间( T T L )值,它指出此域中的信息有效的时间长度。
第二个域指出地址类型。在今天的D N S数据库中,串“ I N”指明是I n t e r n e t地址。这个域
的存在有其历史原因,为的是和旧的系统兼容。
第三个域是字符串,指出资源记录的类型。这个域后跟一个可选的与R R相关的参数。
1. 授权开始( S O A)
记录存储D N S系统的名字及其负责人姓名。下面是一个R R顶部S O A的例子:
;Start of Authority (SOA) record
dns.com. IN SOA dns1.dns.com owner.dns.com (
0000001; serial # (counter)
10800; refresh (3小时)
3600; retry(1小时)
604800 ; expire(1星期)
86400); TTL (1天)
这里要注意的一些事情是所有者以o w n e r. d n s . c o m列出,应读作owner @ dns.com,同时后
面跟一个左括号,右括号结束于T T L值之后。这对于方便读记录很重要,用下面的方式显示
仍然有效:
Dns.com. IN SOA dns1.dns.com owner. d n s . c o m .
[ic:ccc] (0000001 10800 3600 604800 86400)
分号(;)在这里是解释符,分号后的语句被忽略。最后要注意的是所有的数字以秒记数,
各项内容在后序节中讨论。
2. 序列号
序列号标明D N S数据库的可用版本。当数据库被更新时,这个数必须加1,这样辅助服务
器知道该用哪一个。本例中的序列号是一个简单的记数器,也可以使用一个数据或其他的记
数系统来满足用户的喜好和需要。
3. 刷新
刷新告诉每一个辅助名字服务器检查和更新信息的频率(10 800秒是3小时)。
4. 重试
如果辅助名字服务器不能和主控名字服务器联系,它就会每隔“ r e t r y (重试)”秒重新试图
联接( 3 6 0 0秒是1小时)。
5. 超时
如果辅助名字服务器经过“ e x p i r e (超时)”秒后未能和主控名字服务器相联系,那么辅助
名字服务器就停止应答任何关于此域的请求。这样做的理由是:在某些时候,一些数据太旧
第6章DNS:名字服务器使用53
下载
了,可能会带来损害,不应答会比应答坏的信息要好一些(604 800是一星期)。
6. TTL
T T L (生存时间)与数据库请求的应答一起返回,告诉请求者(或其他服务器)信息可缓存
( c a c h e )的最长时间(86 400秒是一天)。这个值是文件中所有记录的缺省值,这个值可被一个
R R提供的值所覆盖。
7. 地址资源记录
A记录中包含和域中第一个主机名相关的I P地址。
8. 名字服务( N S)资源记录
N S记录包括名字服务器的地址:在这个例子中,有两个名字服务器具有关于f o o . c o m
D N S的信息。
9. 规则名字记录(C N A M E)
C N A M E记录包含一个主机别名,这个主机别名与记录第一个域中的主机名相联系。虽然
可以给一个系统指定一个A记录和多个C N A M E记录,但是要小心。一些邮件程序解析M X主
机名时,使用C N A M E记录而不是A记录,这样一来会发生一些不可预测的事情。
10. 指针(P T R)记录
指针是容许一个域指向另一个域的记录。在网络上使用多个U R L建立一个新名时,通常
使用这种记录类型。前面提及的N e t s c a p e是个很好的例子,它的三个U R L实际上仅指向一个。
11. 授权域
授权域把一个域的管理责任从一个服务器移向另一个子服务器。I n t e r N I C对. c o m和.有管理
控制权,但是把所有在它们下面注册的域授权给各自的控制域。实际上,大多数站点是驻留
的,这意味着服务器空间卖给了个人,站点的所有者对硬件不需要维护,它的工作是提供驻
留服务,对驻留在站点上域的控制权经常授权给D N S服务器管理员,让其维护主机上的D N S
服务器。有一个免费的D N S 服务器可以为用户提供空间, 其站点是h t t p : / / s o a .
g r a n i t e c a n y o n . c o m。
6.12 小结
在这一章读者了解了I n t e r n e t中域名系统的层次结构和控制。这个系统使名字成为I n t e r n e t
中资源寻址的基本形式成为可能。读者也学到了许多D N S确定域名I P地址的方法。需要重点
记住的是,和其他系统一样,这个系统也会崩溃。如果读者对这些内容还是不清楚或对它的
结构感到迷惑,就让I S P来处理,这毕竟是访问We b站点或在其他协议下定位资源的方式。
54使用第二部分命名和寻址
下载
第6章DNS:名字服务器
作者:Rima S. Regas
本章内容包括:
• 域名系统概述
• 授权局
• DNS分布数据库
• 域和区
• Internet顶级域
• 选择一个域名服务器
• 名字服务解析过程
• 高速缓存
• 反向解析( P o i n t e r )查询
• DNS安全
• 资源记录
在以前,网络上的用户需要维护一个H O S T S配置文件,这个文件包括当此工作站和网络
上的其他系统通信时所需要的一切信息。问题是显然的,因为每台机器的H O S T S文件需要手
工单独更新,几乎没有自动配置,因此使得H O S T S文件更新是既枯燥又费时的工作。
H O S T S文件包括名字和I P地址的对应信息。当一台计算机需要定位网络上的另一台计算
机时,就会查看本地H O S T S文件,如果在H O S T S文件中没有关于此计算机的表项,说明其不
存在。域名系统( D N S )改变了这一切。D N S允许系统管理员使用一个服务器作为D N S主机。
当网络上的计算机要定位另一台服务器时,它就会查看H O S T S文件。
今天,仍在使用H O S T S文件,这仅仅是为防止局域网上的一台机器使用D N S查找一台本地
机器,因为通过H O S T S文件查找本地会更快。简单的讲,计算机的网络软件在使用缺省D N S服
务器之前,首先查看本地H O S T S文件来指导定位,如果在H O S T S文件中存在一个匹配,客户
端软件就会直接和远端的主机通信,这样一来就极大地缩短了通过D N S发现I P地址的时间。
6.1 域名系统概述
使用名字的原因是名字比数字更容易记忆。虽然大多数人有记忆电话号码、地址、数量
以及其他与生命相关特征的惊人能力,但是存在如此众多的I P地址,记住它们绝非易事,因
此产生了命名。举例来说, C | N e t的域名是w w w. c n e t . c o m,这个域名没有竖线和大写字母,与
站点的名字比较,域名的含义相当不明显,但是,域名和站点的名字还是相当好地吻合了。
C | N e t是世界上最大的且最经常被访问的站点之一。
在出现D N S之前,人们曾想让一个系统负责把名字翻译成号码。当翻译或解析一个We b
站点的域名(如w w w. c n e t . c o m )并且找到了域名对应的I P号( 2 0 4 . 1 6 2 . 8 0 . 1 8 1 )时,I P号就是实际
的地址。这样I n t e r n e t内容就可以传送到你的We b浏览器上。这个过程需要一个称为D N S或域
第6章DNS:名字服务器使用49
下载
名服务器(系统)的网络系统。当前,这些服务器都连接到一个叫做网络解决方案( N S I )的公司,
这个公司位于弗吉尼亚。N S I,也就是I n t e r n e t网络信息中心( I n t e r N I C ),负责对域名进行所有
权管理和分发。
其中的一部分工作是提供基本的根域名服务器,其他的D N S服务器会查找此服务器得到
所需要的信息。其结果是,全世界有许多共享信息的D N S服务器,这样,它们所在地的用户
就能找到它们的站点和其他的I n t e r n e t资源。这意味着如果用户的D N S服务器不能解析一个域
名到I P地址,服务器就会和另外的D N S服务器联系。假如那个D N S不能找到域名,它还将继
续搜索直到超时。在这种情况下,就会返回一个错误,如果客户端容许的话,还会显示一条
错误消息。在We b站点不能被发现的情况下,浏览器就会显示一条错误信息—不能定位服务
器或存在D N S错误。
D N S就如其组织结构分层一样,从顶级D N S根服务器向下延伸,并把名字和I P地址传播
到遍布世界的各个服务器上。一个能清楚说明D N S如何使用分层结构的例子是D N S服务器不
在本地存储全部的名字和I P地址的映射,一旦D N S服务器在自身的数据库中没有找到I P地址,
它会请求上一级D N S服务器看是否能找到这一I P地址,这个过程会继续下去直到超时或找到
答案。下一节会更详细地讨论这一结构,因为它还有另一个更重要的特性。
DNS结构化组织
在1 9 8 2年出版的R F C 8 1 9文档中,Zaw-Sing SU和Jon Postel提出了D N S概念和D N S计划。
下面摘出文档中的一段话:
“域名集构成层次。使用图论表示,这种层次可以模型化为有向图。有向图由一组点和一
组弧组成,弧由不同的有序点对标识[ 1 ],图中每个点表示一个域,有序点对(B, A),即B到A
的弧,说明B是A的一个子域,B是一个简单的名字,且在A内惟一”。
这句话不是很好理解,我们会以一种更简单的方式解释这个概念。其中的原理很简单,
用户有一个顶级域,如C O M或E D U。C O M和E D U域是最高的域级,不会有比它们更高的域,
但是有一个例外。实际上,在C O M后有一个句号( C O M . ),那个句号是比C O M更高的域,但
是这个句号没有使用意义,因为它仅仅有表示作用且通常被忽略。顶级域(如C O M、E D U和
O R G )称为通用名,因为它们包含层次在其下面的域和子域,它们非常像树根。从顶级移至中
间级,中间域名的例子包括c o k e . c o m、w h i t e h o u s e . g o v以及d i s n e y. c o m,这些域名可以被注册,
但是这样做通常仅仅是为了覆盖相关域名范围。在一个子域内注册一个完全的域是很常见的,
S U和P o s t e l 称这些域为端域。端域的例子包括
w w w. c o k e . c o m、w w w. w h i t e h o u s e . g o v以及w w w.
d i s n e y. c o m。当然,这些都是I n t e r N I C注册系统中有
代表性的域,美国之外的系统使用不同的方式来指
示位置和国家,如w w w. b b c . c o . u i c,是指B B C的We b
站点是一个商业站点( C O 和C O M相似)位于英国
( U K )。
图6 - 1显示了S u和P o s t e l提出的最初域层次图。
子域可以是任何东西,这样的例子是w w w. netscape.
c o m、h o m e . n e t s c a p e . c o m及www1. netscape. com,所有这图6-1 原始域层次示意图
U:命名空间
I:中间域
E:端域
些可以位于I n t e r n e t上非常不同的地方,并且经常包含不同的信息。当然如果We b管理员愿意,
这些都可以指向一个站点或者一个页面。N e t s c a p e就是这样做的,可以通过所有的U R L列表访
问N e t s c a p e。
注意作为另一个例子,Webopedia选择注册webopedia.com作为子域,这是因为许多人
对古典希腊字母不熟悉。
6.2 授权局
D N S的组织方式允许服务器成为根名字服务器的下属机构控制一个域。一个很好的例子
是为个人或公司驻留We b站点的本地I S P。当X公司向I n t e r N I C注册了域名( w w w. companyx.
c o m )时,就宣布它的I S P的主控和辅助D N S服务器作为其D N S服务器。I n t e r N I C会把相应信息
放进. c o m根服务器上,让其传播。
注意DNS服务器周期性地和其他DNS服务器上的各种数据库同步,并检查其他服务器
上的新表项。这个过程通常称为传播。域名注册过程不是瞬时完成的,但是一个新域
名大约会在3~4天内完成传播,能在世界各地获得相关信息。
为了使这种系统能工作,需要一个方法来决定网络上的一台机器位于何处。这就需要引
入系统层次概念,对机器按功能进行分类。假如要查找的机器位于教育机构,它的顶级域应
是. E D U。假如一个站点是商业机构它就应位于. C O M顶级域中。这个概念形成了D N S层次中
的根,但不是根名服务器。
6.3 DNS分布数据库
D N S分布数据库结构分布相当广泛,功能非常强大。前面已述及为了更好地控制域或子
域内的流量,可以把权力分配给处于更佳位置的其他服务器。这种信息传播到其他服务器的
方式,通过完全的分布计划来完成。
每个域指定一个所有者,定义为域授权开始( S O A )的一部分, S O A将在后面作详细介绍。
顶级域如C O M,为一个域名,如d i s n e y. c o m授权给一个特定D N S服务器作为其基本D N S服务
器。这样减轻了顶级域控制器为每一个I n t e r n e t上的D N S请求作处理的负担。一旦一个S O A与
一个域控制器联系起来,它就能把子域控制授权给其他的D N S服务器,等等。这就是授权从
最顶级分布到最低层的工作方式。
6.4 域和区
域和区经常成对出现,但是二者有些微妙的区别。一个区在名字世界中是一个基本域,
它授权给另一个D N S服务器以便管理。D i s n e y. c o m是一个区,但w w w. d i s n e y. c o m实际上是那
个区内的一个子域。管理的责任授权给一个基本的D N S服务器, D i s n e y站点的基本D N S服务
器是h u e y. d i s n e y. c o m,其I P地址是2 0 4 . 1 2 8 . 1 9 2 . 1 0,因为指定h u e y为D i s n e y的基本D N S,那么
它也是D i s n e y. c o m的基本区。这个服务器的指定所有者是root @ huey. d i s n e y. c o m,在S O A中
为r o o t . h u e y. d i s n e y. c o m。
注意要使用正确格式的SOA,因为SOA会在各个阶段通过去掉所有邮件地址中的@符
号改变管理员的邮件地址,有的公司喜欢在电子邮件地址的@前加一分隔符,这样就
50使用第二部分命名和寻址
下载
第6章DNS:名字服务器使用51
下载
会出现问题,因为如果一个管理员的电子邮件地址是host.admin @ example.com,在
S O A中将成为h o s t . a d m i n . e x a m p l e . c o m。任何要解析那个地址的系统将假设电子邮件地
址为host @ admin.example.com,这样只能收到一个DNS错误(认为那不是有效地址)。
考虑这样一种情形, t h i n g _ 1 . c o m作为用户的域, t h i n g _ 1 . c o m的D N S服务器称为d n s .
t h i n g _ 1 . c o m,它作为t h i n g _ 1 . c o m的授权D N S。
thing_1. com 的一个子域可以是w w w.
t h i n g _ 1 . c o m,也可以是h o m e . t h i n g _ 1 . c o m。
这个子域的基本D N S 服务器是
d n s . t h i n g _ 1 . c o m。如果用户想注册另一个域
名t h i n g _ 2 . c o m , 也可以授权给
d n s . t h i n g _ 1 . c o m,这两个域名将位于双区内,
由t h i n g _ 1和t h i n g _ 2组成。任何数目的子域可
以加入到任何一个区内,只要子域名在它们
的区内惟一。
图6 - 2显示了一种更复杂的情形,图中建立了一个t h i n g . c o m的区,授权给主控D N S:
d n s . t h i n g . c o m和辅助D N S:d n s 2 . t h i n g . c o m,这为用户提供了基准域。
现在,加入一个子域,典型情况下加入w w w. t h i n g . c o m。为了流量均衡目的,用户可以加
入w w 1 . t h i n g . c o m和w w 2 . t h i n g . c o m。流量可以在内部处理,使新的流量调度到最少被使用的
服务器上。现在用户的区如图6 - 3所示。
图6-3 三个新服务器作为区主服务器和两个DNS服务器的下属
注意所有的D N S流量仍将穿过t h i n g . c o m。虽然看起来次级服务器直接访问D N S服务器,
但它们是通过t h i n g . c o m的网关I P来完成访问的。
6.5 Internet顶级域
有大量的顶级域( T L D ),最熟悉的是C O M、E D U、G O V、M I L、N E T和O R G。然而还有
许许多多的T L D。每个国家有自己双字母的T L D,U K是英国的T L D,N Z是新西兰的T L D,J P
是日本的T L D等等。一个使用T L D的例子是w w w. b b c . c o . u k。
注意有许多美国之外的外国地址域使用CO表示商业,CO类似于InterNIC中的COM。
警告没有什么能阻止人们在其他国家注册域,即使服务器与U R L指示的国家距离更远一些。
图6-2 thing.com区和DNS基本示图
I n t e r n e t
t h i n g . c o m
d u s . t h i n g . c o m d u s 2 . t h i n g . c o m
网络流量
网络流量
I n t e r n e t
t h i n g . c o m
d u s . t h i n g . c o m d u s 2 . t h i n g . c o m
网络流量
网络流量
w w w. s o f t . t h i n g . c o m
w w 1 . t h i n g . c o m w w 2 . t h i n g . c o m
6.6 选择一个域名服务器
在今天,选择一个域名服务器有些不必要。Windows NT/2000具有一个内嵌的适合于各
种平台的应用程序。苹果有一个称为M a c D N S的自由软件。U N I X和相关操作系统一直提供一
个可靠的B I N D软件。还有许多功能强大的第三方D N S服务器可用。
寻找服务器的最好地方是D a v a中心( w w w. d a v e c e n t r a l . c o m )和Tu c o w s ( w w w. t u c o w s . c o m,
正准备选择一个本部服务器作为分支机构)。它们会考察每一个软件,并给用户提供建议:哪
个软件流行,哪个软件不流行。流行的更好一些,因为它说明人们愿意使用它,不是所有的
人都能忍受界面不友好的应用程序。
6.7 名字服务解析过程
当一个客户端程序,如浏览器,产生一个U R L请求交给本地D N S服务器时,这个服务器
会尽可能把名字分析成号码。假如解析成功,数据会被向前发送,开始下一段旅程, D N S服
务器处理下一个请求。假如服务器不能定位地址,它有两个选择,这要依赖于服务器的配置
方式,这两个选择是递归( R e c u r s i v e )和叠代( I t e r a t i v e )。
6.7.1 递归查询
递归查询是最典型的。如果到达服务器的查询在C a c h e中找到了一个记录,就不再需要更
进一步的查询。假如没有找到,服务器会请求另一个服务器,这个过程就像爬梯子一样。这
里要引入存活时间( Time to Live, TTL)机制。如果查询费了很多时间也没找到记录,查询过程
会停止,发出请求的D N S服务器会返回一个“ address not found”错误。
6.7.2 叠代查询
叠代查询被强制在局部范围内进行,这其中是有原因的。最主要的原因是另一个D N S服
务器不可得到。递归特性可能在用户访问的服务器上被禁止了,但是这不大可能。服务器会
定位C a c h e中最好的匹配。如果没发现,就说明不在那里, D N S会返回一个错误。
6.8 高速缓存
由于D N S整天都在忙碌,它会挑选资源存储起来。这些资源记录(Resource Record, RR)包
括被查询U R L的信息。T T L机制在这里也起作用,服务器会高速缓存尽可能多的并且有效的
信息。
6.9 反向解析(Pointer)查询
典型的查询是前向的,尽力解析一个U R L的I P地址。反向解析恰恰相反,尽力找到I P对
应的U R L。有一些程序可以为用户做到这一点,但是为Wi n d o w s开发的一个最好程序是L u c
N i e i j e n s的C y b e r K i t。这是个免费网络软件,可以从w w w. p i n g . b e / c y b e r k i t /上下载。
6.10 DNS安全
用户可以升级到动态D N S服务器来保证安全,因为它们的记录可以在没有管理员干预的
52使用第二部分命名和寻址
下载
情况下自动更新。
6.11 资源记录
所有的D N S记录有相似的格式。虽然在D N S文件中可以找到有许多快捷的表示方式,但
是这些例子使用最简单的术语以消除二义性。
D N S记录中的第一个域总是I P地址或主机名。如果此域为空的话,前一个记录的名字或
地址就适用于此记录。注意所有的名字或地址以点结尾( . ),这表明名字或地址是绝对的而不
是相对的。绝对地址,也称为全称域名,是相对于根的,然而相对地址相对于缺省域(可能不
是根),这个域可以跟可选的生存时间( T T L )值,它指出此域中的信息有效的时间长度。
第二个域指出地址类型。在今天的D N S数据库中,串“ I N”指明是I n t e r n e t地址。这个域
的存在有其历史原因,为的是和旧的系统兼容。
第三个域是字符串,指出资源记录的类型。这个域后跟一个可选的与R R相关的参数。
1. 授权开始( S O A)
记录存储D N S系统的名字及其负责人姓名。下面是一个R R顶部S O A的例子:
;Start of Authority (SOA) record
dns.com. IN SOA dns1.dns.com owner.dns.com (
0000001; serial # (counter)
10800; refresh (3小时)
3600; retry(1小时)
604800 ; expire(1星期)
86400); TTL (1天)
这里要注意的一些事情是所有者以o w n e r. d n s . c o m列出,应读作owner @ dns.com,同时后
面跟一个左括号,右括号结束于T T L值之后。这对于方便读记录很重要,用下面的方式显示
仍然有效:
Dns.com. IN SOA dns1.dns.com owner. d n s . c o m .
[ic:ccc] (0000001 10800 3600 604800 86400)
分号(;)在这里是解释符,分号后的语句被忽略。最后要注意的是所有的数字以秒记数,
各项内容在后序节中讨论。
2. 序列号
序列号标明D N S数据库的可用版本。当数据库被更新时,这个数必须加1,这样辅助服务
器知道该用哪一个。本例中的序列号是一个简单的记数器,也可以使用一个数据或其他的记
数系统来满足用户的喜好和需要。
3. 刷新
刷新告诉每一个辅助名字服务器检查和更新信息的频率(10 800秒是3小时)。
4. 重试
如果辅助名字服务器不能和主控名字服务器联系,它就会每隔“ r e t r y (重试)”秒重新试图
联接( 3 6 0 0秒是1小时)。
5. 超时
如果辅助名字服务器经过“ e x p i r e (超时)”秒后未能和主控名字服务器相联系,那么辅助
名字服务器就停止应答任何关于此域的请求。这样做的理由是:在某些时候,一些数据太旧
第6章DNS:名字服务器使用53
下载
了,可能会带来损害,不应答会比应答坏的信息要好一些(604 800是一星期)。
6. TTL
T T L (生存时间)与数据库请求的应答一起返回,告诉请求者(或其他服务器)信息可缓存
( c a c h e )的最长时间(86 400秒是一天)。这个值是文件中所有记录的缺省值,这个值可被一个
R R提供的值所覆盖。
7. 地址资源记录
A记录中包含和域中第一个主机名相关的I P地址。
8. 名字服务( N S)资源记录
N S记录包括名字服务器的地址:在这个例子中,有两个名字服务器具有关于f o o . c o m
D N S的信息。
9. 规则名字记录(C N A M E)
C N A M E记录包含一个主机别名,这个主机别名与记录第一个域中的主机名相联系。虽然
可以给一个系统指定一个A记录和多个C N A M E记录,但是要小心。一些邮件程序解析M X主
机名时,使用C N A M E记录而不是A记录,这样一来会发生一些不可预测的事情。
10. 指针(P T R)记录
指针是容许一个域指向另一个域的记录。在网络上使用多个U R L建立一个新名时,通常
使用这种记录类型。前面提及的N e t s c a p e是个很好的例子,它的三个U R L实际上仅指向一个。
11. 授权域
授权域把一个域的管理责任从一个服务器移向另一个子服务器。I n t e r N I C对. c o m和.有管理
控制权,但是把所有在它们下面注册的域授权给各自的控制域。实际上,大多数站点是驻留
的,这意味着服务器空间卖给了个人,站点的所有者对硬件不需要维护,它的工作是提供驻
留服务,对驻留在站点上域的控制权经常授权给D N S服务器管理员,让其维护主机上的D N S
服务器。有一个免费的D N S 服务器可以为用户提供空间, 其站点是h t t p : / / s o a .
g r a n i t e c a n y o n . c o m。
6.12 小结
在这一章读者了解了I n t e r n e t中域名系统的层次结构和控制。这个系统使名字成为I n t e r n e t
中资源寻址的基本形式成为可能。读者也学到了许多D N S确定域名I P地址的方法。需要重点
记住的是,和其他系统一样,这个系统也会崩溃。如果读者对这些内容还是不清楚或对它的
结构感到迷惑,就让I S P来处理,这毕竟是访问We b站点或在其他协议下定位资源的方式。
54使用第二部分命名和寻址
下载