服务器 频道

Liunx架站之架设DNS服务器2:DNS 的查询过程

  【IT168 服务器学院】DNS 的查询过程:

  接下来我们要谈一谈,那么 DNS 的 (1)架构是怎样? (2)查询原理是怎样?总是要先知道架构才能知道如何查询的吶!所以底下我们先来介绍一下整体的架构。

· DNS 的架构:




  上面就是一个简单的 DNS 阶层架构啰,最上方一定是 . 这个 root 的 DNS 主机,他底下管理的就只有 com, edu, gov, mil, org 与以国家为分类的第二层的主机名称了!例如台湾地区最上层的领域名称是以 .tw 为开头,管理这个领域名称的这部机器的 IP 是在台湾,但是他的记录则是记录在 . (root)那部机器里面的!还有其它的国家的最上层如 .cn 指的是大陆,.de 指的是德国一样!那么每个国家之下记录的主要的下层有哪些领域呢?呵呵!主要就是有这六大类: 



  其实最早之前在 . (root)之下只有这六大类的 domain name ,但是网络成长的速度太快了,因此后来又多出这些以国码来分的 domain name ,如此一来,在该国家之内,只要向该国家申请 domain name 即可,不需要再到最上层去申请啰!也因此,在这些国码之下,还是有这六大类的 domain name 为主的哩!当然啦,在目前,由于网际网络持续的发烧,说实在的 domain name 实在是有点不太够用,所以又有相当多的领域名称被设计出来,例如本小站的 .idv.tw 的个人网站啦!

  好了,再强调一次, DNS 系统是以所谓的阶层式的管理,所以,请注意喔!那个 .tw 只记录底下那一层的这六个主要的 domain 的主机而已!至于例如 edu.tw 底下还有个 ncku.edu.tw 这部机器,那就直接授权交给 edu.tw 那部机器去管理了!也就是说『每个上一层的 DNS 主机,所记录的信息,其实只有其下一层的主机名称而已!』至于再下一层,则直接『授权』给下层的某部主机来管理啰!呵呵!所以您就应该会知道 DNS 到底是如何管理的吧! ^_^ 会这样设定的原因不是没有道理的!这样设计的好处就是:每部机器管理的只有下一层的 hostname 对应 IP 而已,所以减少了管理上的困扰!而下层 Client 端如果有问题,只要询问上一层的 DNS server 即可!不需要跨越上层,除错上面也会比较简单呢!

· DNS 的搜寻流程:

  刚刚说过 DNS 是以类似『树状目录』的型态来进行名称的管理的!所以每一部 DNS 主机都『仅管理下一层 DNS 主机的名称转译』而已,至于下层的下层,则『授权』给下层的 DNS 主机来管理啦!这样说好象很绕口,好吧!我们就以下图来说一说原理啰:



  首先,当你在网址列输入 http://aerosol.ev.ncku.edu.tw 时,你的计算机就会依据 /etc/resolv.conf 所提供的 DNS 的 IP 去进行联机查询,好了,由于目前最常见的 DNS 主机就属 Hinet 的 168.95.1.1 这个 DNS 了,所以我们就拿他来做例子吧!嗯!这个时候, hinet 的这部主机会这样工作:
 
1. 先查看本身有没有纪录:刚刚说过啦,由于 DNS 是层阶式的架构,任何一部 DNS 都仅记录下一层里面的主机名称对应的 IP 而已,由于 hinet 并非学术网络里面的主机,所以自然也就没有办法直接提供给 client 端关于 aerosol.ev.ncku.edu.tw 这部机器的 IP 了,所以啦,一般而言,这个时候 168.95.1.1 就会向最顶层,也就是 . (root) 的主机查询 .tw 这部机器的地址;
 
2. 向最顶层 ( root )查询:由于 168.95.1.1 没有纪录我们主机的 IP ,这个时候他就会向『最顶层』的 . (root) 这部主机来查询 . (root) 的下一层,也就是 .tw 这部机器的资料了!这个时候, . (root) 就会告诉 168.95.1.1 说『嘿!你要查 .tw 这个网域的管理者呀!?喝!我这里有 .tw 这个网域的管理的主机之 IP 信息,妳可以直接去找他!』;
 
3. 向第二层查询:168.95.1.1 接着又到 .tw 去查询,而该部机器管理的又仅有 .edu.tw, .com.tw, gov.tw... 那几部主机,经过比对后发现我们要的是 .edu.tw 的网域,所以这个时候 .tw 又告诉 168.95.1.1 说:『你要去管理 .edu.tw 这个网域的主机那里查询,我有他的 IP !』;
 
4. 向下层持续查询:好了,一步一步下来, .edu.tw 可以查到管理 .ncku.edu.tw 的主机 IP ; .ncku.edu.tw 可以查到管理 .ev.ncku.edu.tw 的主机 IP ,而最后我们 aerosol.ev.ncku.edu.tw 就可在管理 .ev.ncku.edu.tw 网域的那部主机的设定纪录当中查询到啦!
 
5. 记录暂存内存:查到了 IP 之后,这部 168.95.1.1 的 DNS 机器总不会在下次有人查询 aerosol.ev.ncku.edu.tw 的时候再跑一次这样的流程吧!粉远粉累ㄋㄟ~而且也很耗系统的资源与网络的频宽,所以呢, 168.95.1.1 这个 DNS 很聪明的会先记录一份 aerosol.ev.ncku.edu.tw 对应 IP 的信息在自己的暂存内存当中,以方便下一次又有人对同一个主机名称的要求之查询!最后则将结果回报给 client 端!当然啦,那个记忆在 cache 当中的资料,其实是有时间性的,当过了 DNS 设定记忆的时间(通常可能是 24 小时),那么该记录就会被释放喔!
 
  由这样的分层负责你发现了什么?嗯!那就是:
 
o 当一个『合法』的 DNS 主机里面的设定修改了之后,来自世界各地任何一个 DNS 的要求,都会正确无误的显示正确的主机名称对应 IP 的信息,因为他们会一层一层的寻找下来,所以,要找你的主机名称对应的 IP 就一定得要透过你的上层 DNS 主机的纪录才行!所以只要你的主机名字是经过上层『合法的 DNS』主机的设定的,那么就可以在 Internet 上面被查询到啦!呵呵!很简单维护吧,机动性也很高。
 
o 在主机的暂存内存记录当中,由于是有时间性的,所以当你的主机名称在 DNS 当中被修改了之后,但是由于之前的旧信息还记忆在其它的 DNS 主机的暂存内存里面,所以啦,可能在别人以非你的 DNS 主机来查询你的主机名称时,就会得到先前的旧信息,这个时间差不多可能是 10 分钟到 2 天左右,这也是为什么我们常说当你修改了一个 domain name 之后,可能要 2 ~ 3 天候才能全面的启用的缘故啦!
 
  好啦!哇!既然 DNS 这么棒,然后我们又需要架站,所以需要一个主机的名称,因此,那么我们需要架设 DNS 了吗?!哈哈!当然不是,为什么呢?刚刚鸟哥提到了很多次的『合法』的字眼,因为他就牵涉到『授权』的问题了!

· DNS 使用的 port number :

  好了,既然 DNS 系统使用的是网络的查询,那么自然需要有开 Listen 的 port 啰 ( 监听的埠号 )!没错!很合理!那么 DNS 使用的是那一个 port 呢?那就是 53 这个 port 啦!你可以到你的 Linux 底下的 /etc/services 这个档案看看!搜寻一下 domain 这个关键词,就可以查到 53 这个 port 啦!但是这里需要跟大家报告的是,通常, DNS 查询的时候,是以 udp 这个较快速的数据传输协议 ( protocol ) 来查询的,但是万一没有办法查询到完整的信息时,就会再次的以 TCP 这个协议来重新查询的!所以激活 DNS 的 daemon (就是 named 啦) 时,会同时激活 TCP 及 udp 的 53 这个 port number 喔!
0
相关文章