注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

谷搜互联网应用www.iguso.com

谷搜专注企业邮箱十二年

 
 
 

日志

 
 

DNS 的主机名称对应 IP 的查询流程  

2015-01-16 09:03:38|  分类: Linux技术文章 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

接下来我们要谈一谈这个 DNS 的: (1)阶层架构是怎样? (2)查询原理是怎样?总是要先知道架构才能知道如何查询主机名称的呐!所以底下我们先来介绍一下整体的 DNS 阶层架构。

  DNS 的阶层架构与 TLD

  我们依旧使用台湾学术网络的 DNS 服务器所管理的各 domain 为例,将最上层到崑山科大 (ksu) 时,之间的各层绘制如下图:

  在整个 DNS 系统的最上方一定是 . (小数点) 这个 DNS 服务器 (称为 root),企业邮箱最早以前它底下管理的就只有 (1)com, edu, gov, mil, org, .net 这种特殊领域以及 (2)以国家为分类的第二层的主机名称了!这两者称为 Top Level Domains (TLDs) 哦!

  一般最上层领域名称 (Generic TLDs, gTLD):例如 .com, .org, .gov 等等

  国码最上层领域名称 (Country code TLDs, ccTLD):例如 .tw, .uk, .jp, .cn 等

  先来谈谈一般最上层领域 (gTLD) 好了,最早 root 仅管理六大领域名称,分别如下:

  名称代表意义

  com公司、行号、企业

  org组织、机构

  edu教育单位

  gov政府单位

  net网络、通讯

  mil军事单位

  但是网际网络成长的速度太快了,因此后来除了上述的六大类别之外,还有诸如 .asia, .info, .jobs (注1) 等领域名称的开放。此外,为了让某些国家也能够有自己的最上层领域名称,因此, 就有所谓的 ccTLD 了。这样做有什么好处呢?因为自己的国家内有最上层 ccTLD ,所以如果有 domain name 的需求,则只要向自己的国家申请即可,不需要再到最上层去申请了!

  授权与分层负责

  既然 TLD 这么好,那么是否我们可以自己设定 TLD 呢?当然不行!因为我们得向上层 ISP 申请领域名称的授权才行。例如台湾地区最上层的领域名称是以 .tw 为开头,管理这个领域名称的机器 IP 是在台湾,但是 .tw 这部服务器必须向 root (.) 注册领域名称查询授权才行 (如上图 19.1-3 所示)。

  那么每个国家之下记录的主要下层有哪些领域呢?基本上就是原先 root 管理的那六大类。 不过,由于各层 DNS 都能管理自己辖下的主机名称或子领域,因此,我们的 .tw 可以自行规划自己的子领域名称哦! 例如目前台湾 ISP 常提供的 .idv.tw 的个人网站就是一例啊!

  再强调一次,DNS 系统是以所谓的阶层式的管理,所以,请注意哦!那个 .tw 只记录底下那一层的这数个主要的 domain 的主机而已!至于例如 edu.tw 底下还有个 ksu.edu.tw 这部机器,那就直接授权交给 edu.tw 那部机器去管理了!也就是说『 每个上一层的 DNS 服务器所记录的资讯,其实只有其下一层的主机名称而已! 』至于再下一层,则直接『授权』给下层的某部主机来管理了!呵呵!所以你就应该会知道 DNS 到底是如何管理的吧!

  会这样设定的原因不是没有道理的!这样设计的好处就是:每部机器管理的只有下一层的 hostname 对应 IP 而已,所以减少了管理上的困扰!而下层 Client 端如果有问题,只要询问上一层的 DNS server 即可!不需要跨越上层,除错上面也会比较简单呢!

  透过 DNS 查询主机名称 IP 的流程

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

  首先,当你在浏览器的网址列输入 http://www.ksu.edu.tw 时,你的电脑就会依据相关设定 (在 Linux 底下就是利用 /etc/resolv.conf 这个档案) 所提供的 DNS 的 IP 去进行连线查询了。由于目前最常见的 DNS 服务器就属 Hinet 的 168.95.1.1 这个 DNS,所以我们就拿他来做例子吧!嗯!这个时候,hinet 的这部服务器会这样工作:

  收到用户的查询要求,先查看本身有没有纪录,若无则向 . 查询:

  由于 DNS 是阶层式的架构,每部主机都会管理自己辖下的主机名称解译而已。美国空间因为 hinet 并没有管理台湾学术网络的权力, 因此就无法直接回报给用户端。此时 168.95.1.1 就会向最顶层,也就是 . (root) 的服务器查询相关 IP 资讯。

  向最顶层的 . (root) 查询:

  168.95.1.1 会主动的向 . 询问 www.ksu.edu.tw 在哪里呢?但是由于 . 只记录了 .tw 的资讯 (因为台湾只有 .tw 向 . 注册而已),此时 . 会告知『我是不知道这部主机的 IP 啦,不过,你应该向 .tw 去询问才对,我这里不管! 我跟你说 .tw 在哪里吧!』

  向第二层的 .tw 服务器查询:

  168.95.1.1 接着又到 .tw 去查询,而该部机器管理的又仅有 .edu.tw, .com.tw, gov.tw... 那几部主机,经过比对后发现我们要的是 .edu.tw 的网域,所以这个时候 .tw 又告诉 168.95.1.1 说:『你要去管理 .edu.tw 这个网域的主机那里查询,我有他的 IP !』

  向第三层的 .edu.tw 服务器查询:

  同理可证, .edu.tw 只会告诉 168.95.1.1 ,应该要去 .ksu.edu.tw 进行查询,这里只能告知 .ksu.edu.tw 的 IP 而已。

  向第四层的 .ksu.edu.tw 服务器查询:

  等到 168.95.1.1 找到 .ksu.edu.tw 之后, Bingo !.ksu.edu.tw 说:『没错!这部主机名称是我管理的~ 我跟你说他的 IP 是...所以此时 168.95.1.1 就能够查到 www.ksu.edu.tw 的 IP 了!

  记录暂存记忆体并回报用户:

  查到了正确的 IP 后,168.95.1.1 的 DNS 机器总不会在下次有人查询 www.ksu.edu.tw 的时候再跑一次这样的流程吧! 粉远粉累的呐!而且也很耗系统的资源与网络的频宽,所以呢,168.95.1.1 这个 DNS 会很聪明的先记录一份查询的结果在自己的暂存记忆体当中,以方便回应下一次的相同要求啊! 最后则将结果回报给 client 端!当然啦,那个记忆在 cache 当中的资料,其实是有时间性的,当过了 DNS 设定记忆的时间 (通常可能是 24 小时),那么该记录就会被释放哦!

  整个分层查询的流程就是这样,总是得要先经过 . 来向下一层进行查询,最终总是能得到答案的。这样分层的好处是:

  主机名称修改的仅需自己的 DNS 更动即可,不需通知其他人:

  当一个『合法』的 DNS 服务器里面的设定修改了之后,来自世界各地任何一个 DNS 的要求,都会正确无误的显示正确的主机名称对应 IP 的资讯,因为他们会一层一层的寻找下来。所以,要找你的主机名称对应的 IP 就一定得要透过你的上层 DNS 服务器的纪录才行!因此,只要你的主机名字是经过上层『合法的 DNS』服务器设定的,那么就可以在 Internet 上面被查询到啦!呵呵!很简单维护吧,机动性也很高。

  DNS 服务器对主机名称解析结果的快取时间:

  由于每次查询到的结果都会储存在 DNS 服务器的快取记忆体中,以方便若下次有相同需求的解析时,能够快速的回应。 不过,查询结果已经被快取了,但是原始 DNS 的主机名称与 IP 对应却修改了,此时若有人再次查询, 系统可能会回报旧的 IP 哦!所以,在快取内的答案是有时间性的!通常是数十分钟到三天之内。 这也是为什么我们常说当你修改了一个 domain name 之后,可能要 2 ~ 3 天后才能全面的启用的缘故啦!

  可持续向下授权 (子领域名称授权):

  每一部可以记录主机名称与 IP 对应的 DNS 服务器都可以随意更动他自己的资料库对应, 因此主机名称与网域名称在各个主机底下都不相同。举例来说, idv.tw 是仅有台湾才有这个 idv 的网域~ 因为这个 idv 是由 .tw 所管理的,所以只要台湾 .tw 维护小组同意,就能够建立该网域哦!

  好啦!既然 DNS 这么棒,然后我们又需要架站,所以需要一个主机的名称,那么我们需要架设 DNS 了吗?当然不是,为什么呢?刚刚我提到了很多次的『合法』的字眼,因为他就牵涉到『授权』的问题了! 我们在第十章当中也提到,只要主机名称合法即可,不见得需要架设 DNS 的啦!

  例题:

  透过 dig 实作出本小节谈到的 . --> .tw --> .edu.tw --> .ksu.edu.tw --> www.ksu.edu.tw 的查询流程,并分析每个查询阶段的 DNS 服务器有几部?

  答:

  事实上,我们可以透过第四章约略谈过的 dig 这个指令来实作出哦!使用追踪功能 (+trace) 就能够达到这个目的了。使用方式如下:[root@www ~]# dig +trace www.ksu.edu.tw

  ; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>>+trace www.ksu.edu.tw

  ;; global options: printcmd

  . 486278 IN NS a.root-servers.net.

  . 486278 IN NS b.root-servers.net.

  ....(底下省略)....

  # 上面的部分在追踪 . 的服务器,可从 a ~ m.root-servers.net.

  ;; Received 500 bytes from 168.95.1.1#53(168.95.1.1) in 22 ms

  tw. 172800 IN NS ns.twnic.net.

  tw. 172800 IN NS a.dns.tw.

  tw. 172800 IN NS b.dns.tw.

  ....(底下省略)....

  # 上面的部分在追踪 .tw. 的服务器,可从 a ~ h.dns.tw. 包括 ns.twnic.net.

  ;; Received 474 bytes from 192.33.4.12#53(c.root-servers.net) in 168 ms

  edu.tw. 86400 IN NS a.twnic.net.tw.

  edu.tw. 86400 IN NS b.twnic.net.tw.

  # 追踪 .edu.tw. 的则有 7 部服务器

  ;; Received 395 bytes from 192.83.166.11#53(ns.twnic.net) in 22 ms

  ksu.edu.tw. 86400 IN NS dns2.ksu.edu.tw.

  ksu.edu.tw. 86400 IN NS dns3.twaren.net.

  ksu.edu.tw. 86400 IN NS dns1.ksu.edu.tw.

  ;; Received 131 bytes from 192.83.166.9#53(a.twnic.net.tw) in 22 ms

  www.ksu.edu.tw. 3600 IN A 120.114.100.101

  ksu.edu.tw. 3600 IN NS dns2.ksu.edu.tw.

  ksu.edu.tw. 3600 IN NS dns1.ksu.edu.tw.

  ksu.edu.tw. 3600 IN NS dns3.twaren.net.

  ;; Received 147 bytes from 120.114.150.1#53(dns2.ksu.edu.tw) in 14 ms

  最终的结果有找到 A (Address) 是 120.114.100.101,不过这个例题的重点是,外贸企业邮箱要让大家看一看整个 DNS 的搜寻过程! 在 dig 加上 +trace 的选项后,就能够达到这个目的。至于其他的都是服务器 (NS) 的设定值与追踪过程哦! 有没有很清楚啊?。至于 A 与 NS 等相关的资料,我们在后续的 DNS 资料库介绍中,再分别介绍了。

  DNS 使用的 port number

  好了,既然 DNS 系统使用的是网络的查询,那么自然需要有监听的 port 了!没错!很合理!那么 DNS 使用的是那一个 port 呢?那就是 53 这个 port 啦!你可以到你的 Linux 底下的 /etc/services 这个档案看看!搜寻一下 domain 这个关键字,就可以查到 53 这个 port 啦!

  但是这里需要跟大家报告的是,通常 DNS 查询的时候,是以 udp 这个较快速的资料传输协定来查询的, 但是万一没有办法查询到完整的资讯时,就会再次的以 tcp 这个协定来重新查询的!所以启动 DNS 的 daemon (就是 named 啦) 时,会同时启动 tcp 及 udp 的 port 53 哦!所以,记得防火墙也要同时放行 tcp, udp port 53 呢!

  评论这张
 
阅读(46)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017