域名的概念与机制
域名的概念与机制
1. 介绍
本文重要介绍域名(DNS)的一些机制及实现方法,下面我们就具体看一下它的情况。
1.1. 域名的历史
产生域名的的根本动机在于管理方便,本来的主机名与IP地址映射是保存在NIC的hosts.txt文件中的,当时因为主机数量少,这个文件也不经常变更,因此其它主机几天一次从NIC的主机高低载这个文件进行主机名和IP地址映射就可以了。但随着网络的发展,这种方法变得无法利用,因为经常会有主机恳求下载,对NIC的主机造成宏大的压力,而且也不能保证服务的质量。许多局域网用户渴望自己管理自己的主机名,而不渴望等NIC许多天把自己的主机名加在hosts.txt文件中,有些组织也渴望有自己的名字空间配置。是需要一个能够简略管理的方法了。最后决定利用层次式的名字空间组织方案,以.为分隔标准不同的层次。全部名字空间以散布式数据库管理。请看浏览前不要把平常的域名和这里的域名系统混在一起。最好的方法就是把本来的观念忘记了,看现在的新东西。
1.2. DNS设计目标
DNS的设置目标影响了它的结构,重要目标是对资源有一个一致的名字空间,为了避免不同编码带来的问题,需要包含网络标记,地址,路由或其它信息作为名字的一部分。出于对实验数据的分析,看来散布式的存储条件是必须的。要在获取数据的代价和数据正确性之间有一个平衡。需要对名字所代表的资源类型有一个标记。要支撑多协议访问。名字服务器操作独立于通信系统。应当能够利用不同的机器都能够利用这一系统,利用的方法可能不同,但是都要能够利用。
1.3. 基于利用的一些假设
设计系统时是基于下面假设进行的:数据库的初始大小和利用系统的主机成正比,但最后数据库的大小会和用户的数目成正比,这一过程会产生在一些资源(如邮箱和其它一些要参加到域名系统中的信息)进入系统开始;大部分的数据转变比较慢,但系统能够对转变有一些快速的适应。由相应的组织负责散布式数据库的掩护。域名系统的用户可以选择自己爱好的主机。因为其中的数据十分敏感而且重要,因此必定要保证正确性,如果因为主机或网络失败而造成无法为用户服务,用户要以本来的数据为准,不要自己胡乱想一个数据就用。在查询的时候要避免循环查询,一种方法是将未找到这一信息返回给用户,让用户再找新的主机寻找相应的地址,一种是由主机找别的主机寻找相应的地址,找到后由相应的主机返回地址给用户,这两个方法各有利益。域名系统假设所有的数据是在一个主文件中保存,这个主文件的内容散布存储于系统中的各台主机上。用户通过标准的查询程序resolover查询。主文件的标准情势使得它可以在不同主机间进行传输(利用FTP,电子邮件等方法)。本地可以利用文本编辑器进行管理,然后将这个文件传输到名字服务器那里,然后通著名字服务器的管理员加载这个文件就是了。对于resolver来说,配置好的名字服务器是地址信息的重要起源。域名系统定义了访问数据的过程和访问其它名字服务器的方法,它还定义了缓冲的大小和更新缓冲的时间等配置信息。
系统管理员需要供给:
区域(zone)边界定义
主文件数据
主文件的更新
更新策略描写
域名系统需要供给:
源数据的标准格式
查询数据库的标准方法
多其它名字服务器上更新数据的标准方法
1.4. DNS组成
DNS由下面三个部分组成:
-
域名空间和资源记载,域名空间是一个树状结构,资源记载是与名字相干的一些数据。从概念上说,每个结点和域名空间树的叶子结点都有必定的信息,而查询是要查询出一些与之相干的特定信息。
-
名字服务器是服务器程序,它保存域名树结构和相应的信息,它可以缓冲各种数据,保存域名树中的任何部分,但是通常它保存域名空间的一个子集,如果需要查询其它信息可以通过指向其它名字服务器的地址寻找。这个名字服务器是这一部分的认证权威,所有的认证信息组成一个单元称为区,这些区可以散布于不同的服务器上以保证数据的冗余。
-
resolver是向名字服务器提出查询恳求并将成果返回给客户的程序,它必须可以访问至少一个名字服务器,并将成果直接返回给用户或向别的名字服务器查询。它通常是用户可以访问的系统方法,在resolver和用户程序之间不需要协议。
下面我们通过三个不同的角度来看看它们的相互关系:
-
从用户的角度,域名系统可以通过简略的过程或操作系统调用来调用本地resolver进行查询。域名空间包含一个单独的树,用户可以从树中的任何一个部分查询信息。
-
从resolver的角度,域名系统由一些名字服务器组成,每个服务器有域树的全部或部分数据,resolver将这些数据库视为基础是静态的。
-
从名字服务器的角度,域名系统由称为区(zone)的本地数据集组成,名字服务器必须定期从主备份上更新自己区内的数据,它还必须处理从resovler传送来的查询恳求。
2. 域名空间和资源记载
2.1. 定义和名词
域名空间是树状结构,每个结点和资源集相对应(这个资源集可能为空),域名系统不差别树内结点和叶子结点,统称为结点。每个结点有一个标记,这个标记的长度为0到63个字节。不同的结点可以利用雷同的标记。0长度的标记(空标记)为根记载保存。结点的域名是从结点到根的标记组成的。这些标记对大小写不敏感,这就是说,A和a对域名是等效的。但是你在收到域名时最好保存它的大小写状态以便以后的服务扩大便于利用。
用户需要输入域名时,每个节点的标记长度不管多长,总要以点分隔。绝对域名的最后总以点结束,例如"poneria.ISI.EDU.",而相对域名则不这样,它由本地区指明地位即可。相对域名相对于一个公认的域名或相对于用作搜索列的一串域名。相对名通常在用户接口涌现,在用户接口,表现方法因实现不同而不同,相对域名也涌现在主文件中,主文件相对于一个源域名而设立。为了简化实现,全部域名的长度不得大于255个字节。域由域名标记,它由其下的域组成。如果一个域包含在另一域中,则称它为这个域的子域。我们可能通过表现很直观的看出。如A.B.C.D是B.C.D,C.D,D和" "的子域。
2.2. 管理规范
作为策略,DNS技术阐明未阐明一个特定的树结构或什么规矩来选择标记,此阐明渴望达到的目标是越简略越好。利用程序的开发可以不管名字空间的边界和名字服务器的存在。这不是说没有规矩地乱来,而是把规矩制定得开放以便于处理问题,树的不同部分可以有不同的规矩。例如IN-ADDR.ARPA散布在网络各处,用于将网络或主机号转换为主机名,而NetBIOS域是平面式的,原因很简略,这样便于利用。但是,对于名字空间的通常部分,我们还是有规定的,目标是为了利用起来比较方便。低层域名最终被分为多个区,这样的域应当在顶层域上供给一个标记使最终的解析可能不必重名字就可以完成。在管理的时候,老的软件可能不支撑结点标记中的数字,特别字符。
2.3. 技术规范
在DNS能够被用来为某些种类的结点保存名字信息前,必须满足下面两个条件:
要有在对象名和域之间映射的规矩,这个规矩描写了关于对象的信息如何被访问
需要有描写对象的RR类型和数据格式
这些规矩可烦可简,规矩者要考虑到对现在格式和以后格式的兼容问题。多映射或映射分层是必须的。对于主机,映射取决于主机名的现有格式,它是通常文本表现域名的子集,加上描写主机地址的RR格式。因为我们需要从地址到主机的可靠映射,所以定义了将地址映射到IN-ADDR.ARPA域的方法。
对了邮箱,映射会复杂一些。通常的邮件地址
2.4. 例子
下图是现在域名系统的一个部分,它在本文中还会经常被用到。请注意,这个树只是实际树的一个小小的子树。
| +---------------------+------------------+ | | | MIL EDU ARPA | | | +-----+-----+ | +------+-----+-----+ | | | | | | | BRL NOSC DARPA | IN-ADDR SRI-NIC ACC | +--------+------------------+---------------+--------+ | | | | | UCI MIT | UDEL YALE | ISI | | +---+---+ | | | | LCS ACHILLES +--+-----+-----+--------+ | | | | | | XX A C VAXA VENERA Mockapetris
在此例中,根域有三个子域:MIL,EDU和ARPA,而LCS.MIT.EDU域有一个子域XX.LCS.MIT.EDU,其它的节点也是域。
2.5. 命名规矩
DNS的命名规矩是为了使对域名的命名比较统一。也就是要将任何现存的对象都可以在最小修正的情况下变为域名。谨慎的利用者会选择域名合适域名系统和利用程序。例如在命名邮件域名时,利用者会同时遵守相应的邮件协议。这就使对老软件的兼容性进步了。下面的规矩是一个较少引起问题的规矩:
请注意:域名内不分大小写。标记必须遵守ARPANET主机名规矩,它恳求主机名必须以字母开始,以字母或数字结束,中间的可以是数字字母或连字符,长度没有限制。但标记必须少于63个字符。下面的字符串就表现了APARNET中的主机:
A.ISI.EDU XX.LCS.MIT.EDU SRI-NIC.ARPA
2.6. 资源记载
域名标记结点,每个结点都有资源信息集,些集可认为空。资源信息集和由分辨资源集(RR)的特别名字相干联。在集中的RR次序没有关系,标记有这东西就是了,它不用由名字服务器,resovler或DNS的其它部分保存,只在这儿有。特定的RR我们认为有以下几个:
owner |
RR能够被找到的域名 | |
它是一个16位值,指定RR内的资源类型,它指一个抽象资源,具体的标记有以下几个: | ||
A |
主机地址 | |
CNAME |
一个拟名的统一命名 | |
HINFO |
标记由主机利用折CPU和OS | |
MX |
标记用于域的邮件交换资源 | |
NS |
此域的权威认证名字服务器 | |
PTR |
指向其它域名空间的指针 | |
SOA |
标记区认证权威的开始 | |
class |
它是一个16位值,标记协议族或某一个协议实例,本文中利用IN代表internet系统,CH代表Chaos系统 | |
TTL |
它是RR的生存时间,它是32位整数,单位是秒,它重要用于resolver缓存RR多长时间 | |
它是一种类型,有时是依附于数据的类,它描写了以下资源: | ||
A |
对于class是IN的,它是一个32位IP地址,对于CH,它是后面跟一个16位八进制Chaos地址的域名 | |
CNAME |
域名 | |
MX |
作为一个域的邮件服务资源的主机名,主机名后有一个16位的配置值 | |
NS |
主机名 | |
PTR |
域名 | |
SOA |
一些域 |
拥有资源的名字通常是隐式的,不构成RR的一部分。TTL时间只影响缓冲内的数据,不影响区内的已经保存的认证数据。TTL通常由管理员设置,TTL=0表现禁止缓冲。RDATA内的数据是二进制串和域名的混杂。域名通常利用指针指向DNS内的其它数据。
本消息共4页,当前在第1页 1 2 3 4