网站运营
位置:首页>> 网站运营>> 域名的概念与机制(3)

域名的概念与机制(3)

 来源:asp之家 发布时间:2010-02-05 18:56:00 

标签:域名,服务器

3.3.2. 算法

名字服务器使用的算法和本地操作系统和数据结构相关,下面的算法假设RR以几个树型结构组织,一个树就是区,有一个树是用于缓冲的:

  1. 是不是支持循环查询要看服务器,如果支持,而且需要循环查询,转到第5步;

  2. 查询最靠近QNAME祖先的结点所在的区,如果未找到这个区,转第4步;

  3. 开始在区内从上到下进行匹配,匹配过程的结束条件有以下几个:

  • 如果整个QNAME匹配了,我们就找到了。如果数据所在结果是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步;

  1. 在缓冲中进行匹配,如果在缓冲中找到QNAME,将所有和它关联的而且匹配QTYPE的RR复制到响应区,如果没有从认证权威来的授权,可以在缓冲中寻找最好的一个,将它放在认证区内,然后转到第6步;

  2. 使用本地resolver响应请求。保存包括中间CNAME在内的结果到应答中。

  3. 仅使用本地数据,试着加入其它有用的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

10

A.X.COM

A.X.COM

A

1.2.3.4

A.X.COM

MX

10

A.X.COM

*.A.X.COM

MX

10

A.X.COM

对于所有X.COM中的MX查询,都会得到A.X.COM。存在两个wildcard RR是必须的,因为有A.X.COM,就必须要有*.A.X.COM,否则W.A.X.COM就查询不出来,原因请在本节中的wildcard RR不适用的情况中寻找。

0
投稿

猜你喜欢

手机版 网站运营 asp之家 www.aspxhome.com