域名的概念与机制(4)
来源:asp之家 发布时间:2010-02-05 19:24:00
4.3.3. 算法
大体上,算法有四步:
检查结果是否在本地,如果是则直接返回;
向最合适的服务器查询;
向多个服务器发出请求,直到得到响应;
分析结果:
如果响应给出了结果或包含名字错误,缓冲并返回结果给用户;
如果响应指出更合适的服务器,缓冲这个结果,转第2步;
如果响应显示CNAME,但并不是答案,缓冲CNAME,将SNAME改为CNAME RR中的统一名称,然后转第1步;
如果响应显示服务器失败或其它不可识别的内容,从SLIST中删除此服务器,然后转第3步。
第1步在缓冲内查找,如果找到了,那就返回给用户。有些resolver可以设置不使用缓冲内的数据,但并不推荐把它做为默认情况。如果resolver能够直接访问服务器的区,而且能够找到数据的认证形式,则不要使用缓冲内的数据。
第2步向服务器查询需要的数据,通常的办法是寻找本地提供的服务器RR,提供SNAME,然后给出SNAME的父域名,父域名的父域名,以此类推,直到根。因此,如果SNAME=Mockapetris.ISI.EDU,查询NS RR的顺序为Mockapetris.ISI.EDU,ISI.EDU,EDU,最后是.(根)。NS RR列出了此区的或在SNAME之上的主机名,复制名字到SLIST,使用本地信息设置它们的地址,可能地址不可用,此时resolver有几种不同的选择,最好是进行并行搜索,一个搜索现在可用的,一个去寻找新的,当然实现起来就有麻烦了,我们把实现的一些规则列于下面:
加入一些限制,让请求不会进入无限循环,也不会造成对链式请求和对其它服务的链式请求,即使在有人错误配置的情况下也不能造成上述情况
尽一切可以获得响应
避免不必要的传输
尽快获得响应
如果查询NS RR失败,resolver从SBELT中初始化SLIST,基本的思想是当resolver不知道哪个服务器在工作时,它会从一个配置文件中取得相应的信息。虽然是特殊情况,但基本上要有两个根服务器地址存在于这种配置文件中。有两个是为了冗余,根服务器可以对所有的域空间进行探索,两个本地服务器将允许resolver继续尝试利用本地资源解析域名。除了名字的名字和地址,SLIST中可以保存服务器的优先查询顺序,保证高优先级在前,本地服务器在远程服务器前,也可能是由成功的统计结果得到,算法不尽相同。
第3步发出请求,直到收到响应。算法基本思想是对所有列出的服务器以循环方式进行发送。实际上,要重视多穴(multihomed)主机的多个地址,在使用多个resolver的时候要注意对相同主机进行重新传输对时间的影响。SLIST通常包括一个值,用于控制和监视传输的超时。
第4步涉及分析结果,resovler应该检查响应的ID域看是不是和请求的ID一致。理想的响应是从认证权威那里收到的数据,它要么给出需要的数据,要么给出名字错误。在TTL大于0的时候,结果保存于缓冲,同时结果返回给用户。如果结果指出其它服务器A,要对这个服务器A和SLIST中的主机进行比较,看是不是更合适,这可以通过比较SLIST中的匹配计数完成,这个匹配计数是通过SNAME和服务器A中的NS RR计算得到。如果不合适,这个响应会被忽略,如果合适,结果会被缓冲,相应的服务器会进入SLIST,新的查询开始。如果响应包括CNAME,新查询将从CNAME开始,除非响应有标准格式的数据,或CNAME就中结果。
5.例子
在我们的例子空间中,假设我们希望将根管理权分散到MIL,EDU,MIT.EDU和ISI.EDU区,我们可以按下图分配名字服务器:(认证权威将被加上括号)
|(C.ISI.EDU,SRI-NIC.ARPA | A.ISI.EDU) +---------------------+------------------+ | | | MIL EDU ARPA |(SRI-NIC.ARPA, |(SRI-NIC.ARPA, | | A.ISI.EDU | C.ISI.EDU) | +-----+-----+ | +------+-----+-----+ | | | | | | | BRL NOSC DARPA | IN-ADDR SRI-NIC ACC | +--------+------------------+---------------+--------+ | | | | | UCI MIT | UDEL YALE |(XX.LCS.MIT.EDU, ISI |ACHILLES.MIT.EDU) |(VAXA.ISI.EDU,VENERA.ISI.EDU, +---+---+ | A.ISI.EDU) | | | LCS ACHILLES +--+-----+-----+--------+ | | | | | | XX A C VAXA VENERA Mockapetris
根名字服务器在C.ISI.EDU,SRI-NIC.ARPA和A.ISI.EDU,MIL域由SRI-NIC.ARPA和A.ISI.EDU支撑;EDU域由SRI-NIC.ARPA和C.ISI.EDU,服务器拥有的区可以连接也可以不连接,本例中,C.ISI.EDU和根及EDU域连接,A.ISI.EDU和根及MIL域有连接,但和ISI.EDU有一个不连接的区。


猜你喜欢
- 你的服务器上是否存有一些不能随意公开的重要数据呢?当然有吧?而最近,偏偏服务器遭受的风险又特别大,越来越多的病毒、心怀不轨的黑客,以及那些商
- 1. pv 命令有时候我们在电影屏幕上看到一些字幕一个个匀速显示出来,像有人在边敲键盘,边显示一样。Linux上的pv命令可以实现这种效果。
- IIS6.0由于运行机制的不同,出现了应用程序池的概念。一般建议10个左右的站点共用一个应用程序池,应用程序池对于一般站点可以采用默认设置,
- rewrite规则学习 我们新建一个.htaccess文件之后,就在里面写入以下内容: RewriteEngine on #rewritee
- 又有机会爆料国内 Web 2.0 网站的架构了。这次是 Yupoo! 。非正式的采访了一下 Yupoo!(又拍网) 的创建人之一的 阿华(沈
- SEO标题的最佳下标法:质量保证,由于网页的标题都会出现在搜寻引擎的结果显示页面,所以在每个网页的标题都请用心下!最好使用您网站的标题,或者
- 10月15日,微软在中国市场正式推出最新的手机操作系统Windows Mobile 6.5。全新的手机界面、更人性的用户体验,得到了大批手机
- 经过这些天的观察,发现大家对SEO技术类文章比较感兴趣,其实可以想象的到来此的大多数是想学到一些技术性的东西。而ZeYa前面没有分析到这一点
- 本文实例讲述了Linux环境(CentOS6.7 64位)下安装subversion1.9.5的方法。分享给大家供大家参考,具体如下:安装环
- 1. 后台执行一般运行linux上的程序都是执行 .sh 文件(./sh文件),那如果不影响当前CMD窗口的操作,需要后台运行怎么办呢?这时
- 首先说一下,漏洞是t00ls核心群传出去的,xhming 先去读的,然后我后来读的,读出来的都是代码执行,1月5日夜里11点多钟,在核心群的
- 微软发布了针对Windows家庭服务器平台的,一个应用软件接口程序(API)和一个软件开发工具包。应用软件接口程序和开发工具包允许用户为Wi
- 博客已成为很多站长的首选,它可以聚集一群有着共同好的朋友,而且,还不用像网站那样的费神。wordpress是目前比较流行的博客系统之一,wo
- Linux已受到越来越多的用户喜爱,为什么它能发展如此之快,而且还广受欢迎呢?安全、方便维护、易使用、免费......这些都是证明Linux
- ftp匿名用户设置完成之后任何人都可以访问服务器端文件,目录,甚至可以修改删除文件和目录,,那如何存放私密文件并保证文件或者目录
- 导读:互联网给小公司带来了在世界范围内拥有海量用户的机会。这造就了一些公司和组织,即使只有相对较少数量的员工,但是仍然可以为大量用户提供服务
- 对于专有软件使用者来说,当需要升级到一个新版本的时候,并没有多少激动的感觉。因为这种升级通常是为一些补丁修复或微小的功能升级来掏钱买单。即使
- 我现在遇到的问题是这样的,用ftp账号上传了wordpress系统。我用的FTP工具是:FileZilla在删除这个文件的时候,基本所有文件
- 一个良好的站内结构可以帮助Google快速的分析站点,尽快的摆脱沙盒。而且好的整站优化可以让页面间的权重有效的传递,是整站的排名得到提升。下
- 作为一个刚刚接触linux系统的小白来说,VMware虚拟机安装好CentOS6.5系统后,纯净的系统多克隆几份出来方便后期做试验。克隆步骤