篇1:域名的概念与机制DNS服务器
3.3.2. 算法
名字服务器使用的算法和本地操作系统和数据结构相关,下面的算法假设RR以几个树型结构组织,一个树就是区,有一个树是用于缓冲的:
是不是支持循环查询要看服务器,如果支持,而且需要循环查询,转到第5步;
查询最靠近QNAME祖先的结点所在的区,如果未找到这个区,转第4步;
开始在区内从上到下进行匹配,匹配过程的结束条件有以下几个:
如果整个QNAME匹配了,我们就找到了,
域名的概念与机制(3)DNS服务器
。如果数据所在结果是CNAME,QTYPE不匹配CNAME,复制CNAME RR到响应的应答区,将QNAME改变为CNAME RR中的标准形式后返回第1步;否则复制所有匹配QTYPE的RR到响应的应答区,然后转第6步;
如果匹配的结果使我们离开了认证权威,我们就获得一个参照(referral),我们这时会碰到一个带有NS RR的结点,复制NS RR到响应的认证区内,在其它区域随便放上什么地址,如果从认证数据或缓冲内没有获得地址,可以使用关联RR。然后转到第4步;
如果在一些标记上不可能有匹配,看看是不是有“*”标记存在,如果“*”标记不存在,检查我们要查找的名字是不是QNAME,如果名字就是原来的QNAME,在响应中设置错误,否则退出。如果“*”存在,以RR和QTYPE匹配,如果匹配成功,将它们复制到响应中,但设置RR的拥有者(owner)为QNAME,不是带有“*”的结点,然后转到第6步;
在缓冲中进行匹配,如果在缓冲中找到QNAME,将所有和它关联的而且匹配QTYPE的RR复制到响应区,如果没有从认证权威来的授权,可以在缓冲中寻找最好的一个,将它放在认证区内,然后转到第6步;
使用本地resolver响应请求。保存包括中间CNAME在内的结果到应答中。
仅使用本地数据,试着加入其它有用的RR到查询的附加部分。然后退出。
3.3.3. Wildcard
在前面的算法中,我们对其拥有者以*开始的RR进行了特殊处理,这类的RR称为wildcards。Wildcard RR可以看成合成RR的指令,在有合适的条件时,服务器创建RR,这个RR的拥有者名和查询名相同,而内容是从wildcard RR获得的。这种机制经常用于创建一个区,这个区可用于在网络上从一个邮件系统向另一个邮件系统转发邮件。这种情况下,通常的假设是区中的所有名字都存在,只要没有说不存在,都认为有。
wildcard RR的内容遵守通常RR的格式,区中的wildcard有一个拥有者名,它控制者可以进行匹配的查询名。wildcard RR的拥有者名是以下的形式:“*.”,其中是任何域名,不应该再包括其它*标记,而且它应该在区的认证数据之中。我们可以把wildcard看成是通配符的作用。wildcard RR在以下情况中不适用:
查询在应该在别的区中;
如果区中已经存在了它所代表的某个域。例如,如果wildcard RR有“*.X”,区中包括了B.X,那么wildcard就不代表B.X,A.B.X或X,而只能代表Z.X了。
在查询名中的*没有什么特殊作用,它只用于在认证权威区中检测wildcard,这样的查询是唯一可以在响应中获得包括拥有者名中包含*的查询请求,其它请求的响应都不能包含*。这样查询的结果不能缓冲。在合成RR时,wildcard RR的内容不应该被改变。
下面是一个例子,我们假设一个大公司有一个大型的非TCP/IP网络,它要创建一个邮件网关。如果公司是X.COM,而TCP/IP网关为A.X.COM,下面的RR可能会在COM区中:
X.COM
MX
10
A.X.COM
*.X.COM
MX
关 键 字:DNS 服务器
篇2:域名的概念与机制DNS服务器
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内的其它数据。
2.6.1. RR的文本表示
RR在DNS中是以二进制形式表示的,而在名字服务器或resolver中保存的时是经过压缩编码处理的。本文中我们采用相同于主文件中表示的表示方法,也就是不压缩的方法,以便显示RR的内容。行开始时给出谁拥有RR,如果这一位置空出,就表示本行RR的拥有者和上面RR的拥有者是一个。其后是TTL,type和RR的class。RR的RDATA部分是在当前数据的表示类型的基础上得到的。下面是一些RR的例子:
ISI.EDU. MX 10 VENERA.ISI.EDU.
MX 10 VAXA.ISI.EDU.
VENERA.ISI.EDU. A 128.9.0.32
A 10.1.0.52
VAXA.ISI.EDU. A 10.2.0.27
A 128.9.0.33
其中我们注意到MX那一部分,它的RDATA部分有是一个16位数后面跟一个域名组成。其它的也就不说了。本例子显示了6个RR,第三个域名有两个RR。下面是一个例子,它显示在不同的class下如何表示:
XX.LCS.MIT.EDU. IN A 10.0.0.44
CH A MIT.EDU. 2420
2.6.2. 别名和统一命名
现存的系统中有时会对相同的资源有不同的命名,不但主机是这样,邮箱也是这样,不同的名字指向的是同一个位置。大部分系统都能够对多个名字指定一个是统一命名的结果,另外的是别名。域名系统提供使用统一命名的机制(CNAME RR),CNAME RR标记它的owner名为别名,并指出在RDATA部分的相应统一命名。如果一个结点存在CNAME RR,不应该有其它的数据,这保证了统一命名和它的别名不能不同。这也使得缓冲的CNAME可以不用检索认证权威服务器就可以提供服务。在有CNAME RR时,DNS软件如果查询不到与域名相关的资源,它会检查资源集中是不是有一个有匹配class的CNAME,如果有,名字服务器返回的应答中包括这个CNAME记录,并根据在CNAME中指定的数据开始新的查询。下面我们看一个例子,假设名字服务器处理对USC-ISIC.ARPA的查询,它要求查询A信息,下面是RR的
关 键 字:DNS 服务器
篇3:域名的概念与机制服务器教程
3.3.2. 算法
名字服务器使用的算法和本地操作系统和数据结构相关,下面的算法假设RR以几个树型结构组织,一个树就是区,有一个树是用于缓冲的:
是不是支持循环查询要看服务器,如果支持,而且需要循环查询,转到第5步;
查询最靠近QNAME祖先的结点所在的区,如果未找到这个区,转第4步;
开始在区内从上到下进行匹配,匹配过程的结束条件有以下几个:
如果整个QNAME匹配了,我们就找到了,
域名的概念与机制(3)服务器教程
。如果数据所在结果是CNAME,QTYPE不匹配CNAME,复制CNAME RR到响应的应答区,将QNAME改变为CNAME RR中的标准形式后返回第1步;否则复制所有匹配QTYPE的RR到响应的应答区,然后转第6步;
如果匹配的结果使我们离开了认证权威,我们就获得一个参照(referral),我们这时会碰到一个带有NS RR的结点,复制NS RR到响应的认证区内,在其它区域随便放上什么地址,如果从认证数据或缓冲内没有获得地址,可以使用关联RR。然后转到第4步;
如果在一些标记上不可能有匹配,看看是不是有“*”标记存在,如果“*”标记不存在,检查我们要查找的名字是不是QNAME,如果名字就是原来的QNAME,在响应中设置错误,否则退出。如果“*”存在,以RR和QTYPE匹配,如果匹配成功,将它们复制到响应中,但设置RR的拥有者(owner)为QNAME,不是带有“*”的结点,然后转到第6步;
在缓冲中进行匹配,如果在缓冲中找到QNAME,将所有和它关联的而且匹配QTYPE的RR复制到响应区,如果没有从认证权威来的授权,可以在缓冲中寻找最好的一个,将它放在认证区内,然后转到第6步;
使用本地resolver响应请求。保存包括中间CNAME在内的结果到应答中。
仅使用本地数据,试着加入其它有用的RR到查询的附加部分。然后退出。
3.3.3. Wildcard
在前面的算法中,我们对其拥有者以*开始的RR进行了特殊处理,这类的RR称为wildcards。Wildcard RR可以看成合成RR的指令,在有合适的条件时,服务器创建RR,这个RR的拥有者名和查询名相同,而内容是从wildcard RR获得的。这种机制经常用于创建一个区,这个区可用于在网络上从一个邮件系统向另一个邮件系统转发邮件。这种情况下,通常的假设是区中的所有名字都存在,只要没有说不存在,都认为有。
wildcard RR的内容遵守通常RR的格式,区中的wildcard有一个拥有者名,它控制者可以进行匹配的查询名。wildcard RR的拥有者名是以下的形式:“*.”,其中是任何域名,不应该再包括其它*标记,而且它应该在区的认证数据之中。我们可以把wildcard看成是通配符的作用。wildcard RR在以下情况中不适用:
查询在应该在别的区中;
如果区中已经存在了它所代表的某个域。例如,如果wildcard RR有“*.X”,区中包括了B.X,那么wildcard就不代表B.X,A.B.X或X,而只能代表Z.X了。