读书人

DNS 的根由

发布时间: 2012-09-07 10:38:15 作者: rapoo

DNS 的来由
DNS 的来由
  如果您为您的机器设定过 internet 连线那么您一定接触过 DNS 了但 DNS 又是什么东东呢说穿了DNS 是用来帮助记忆网路位址的完全是为了迁就人类的记忆思维而设的。
  DNS 的全称是 Domain Name System(或 Service) 当您连上一个网址在URL打上www.google.com 的时候可以说就是使用了 DNS 的服务了。但如果您知道这个 www.google.com 的 IP 位址直接输入 216.239.53.101 也同样可以到达这个网址。其实电脑使用的只是 IP 位址而已(最终也是 0 和 1 啦)这个 www.google.com 只是让人们容易记忆而设的。因为我们人类对一些比较有意义的文字记忆(如www.google.com)比记忆那些毫无头绪的号码(如216.239.53.101)往往容易得多。DNS 的作用就是为我们在文字和 IP 之间担当了翻译而免除了强记号码的痛苦。
  假如您的电话有名字记忆功能您只需知道对方的名字就可以拨号给友人了我们可以说这电话也具备如 DNS 的功能了呢但是我们在网路中使用的 DNS 系统就是这么简单吗非也复杂得很呢下面就让我们一起去探索一下 DNS 的奥秘
  在早期的 IP 网路世界里面每台电脑都只用 IP 位址来表示不久人们就发现这样很难记忆于是一些 UNIX 的管理者就建立一个 HOSTS 对应表将 IP 和主机名字对应起来这样用户只需输入电脑名字就可以代替 IP 来进行沟通了。如果你安装了 Linux 系统在 /etc 下面就可以找到这个 hosts 档案在 NT 的系统里你也可以在 \winnt\system32\drivers\etc 下面找到它。不过这个 HOSTS 档是要由管理者手工维护的最大的问题是无法适用于大型网路而且更新也是件非常头痛的事情。这就是 DNS 大派用场的时候了。
  DNS 的结构
  DNS 是一个分层级的分散式名称对应系统有点像电脑的目录树结构在最顶端的是一个“root”然后其下分为好几个基本类别名称如comorgedu 等再下面是组织名称如ibmmicrosoftintel 等继而是主机名称如wwwmailftp 等。因为当初 internet 是从美国发展起的所以当时并没有国域名称但随着后来 internet 的蓬勃发展DNS 也加进了诸如 twhkcn 等国域名称。所以一个完整的 dns 名称就好象是这样的www.xyz.com.tw而整个名称对应的就是一个(或多个) IP 位址了。
  在早期的设计下root 下面只有六个组织类别
   
  不过自从组织类别名称开放以后各种各样五花八门的名称也相继涌现出来了但无论如何取名的规则最好尽量适合网站性质。除了原来的类别资料由美国本土的 NIC(Network Information Center) 管理之外其它在国域以下的类别分别由该国的 NIC 管理(比方说台湾的 DNS 将授权给 twnic 来管理)。这样的结构看起来就像这样
   
  在结构中各组织的 DNS 经过申请后由该组织或其委托主机管理(通常当您申请注册一个 domain 域名称的时候都要指定两台 DNS 主机负责该域名的 DNS 管理)。
  DNS 的运作
  在我们设定 IP 网路环境的时候都要告诉每台主机关于 DNS 伺服器的位址(我们可以手动的在每一台主机上面设置也可以使用 DHCP 来指定)。但这设定的义意何在呢?从前面的介绍我们或可知道:其目的就是请 DNS 帮忙解析主机名称与 IP 位址啦。在这个设定过程中,DNS 被称为 resolver (也就是负责解析的 DNS Server),而被设定主机,则只是单纯的 DNS Client 了,也就是提出解析请求的主机。
  下面让我们看看 DNS 是怎样运作的
  1.当被询问到有关本域名之内的主机名称的时候DNS 伺服器会直接做出回答
  2.客户端向伺服器提出查询项目
  3.当被询问到有关本域名之内的主机名称的时候DNS 伺服器会直接做出回答
  4.如果所查询的主机名称属于其它域名的话会检查快取记忆体(Cache)看看有没有相关资料
  5.如果没有发现则会转向 root 伺服器查询
  6.然后 root 伺服器会将该域名之下一层授权(authoritative)伺服器的位址告知(可能会超过一台)
  7.本地伺服器然后会向其中的一台伺服器查询并将这些伺服器名单存到记忆体中以备将来之需(省却再向 root 查询的步骤)
  8.远方伺服器回应查询
  9.若该回应并非最后一层的答案,则继续往下一层查询,直到获的客户端所查询的结果为止
  10.将查询结果回应给客户端并同时将结果储存一个备份在自己的快取记忆里面
  11.如果在存放时间尚未过时之前再接到相同的查询则以存放于快取记忆里面的资料来做回应。
  从这个过程我们可以看出没有任何一台 DNS 主机会包含所有域名的 DNS 资料资料都是分散在全部的 DNS 伺服器中而 NIC 只需知道各 DNS 伺服器位址就可以了。
  为了更好地理解一下 DNS 的运作让我们用下图看看查询 www.home.netman.com.tw 这台主机位址的过程
   
  在这个例子中www.home.netman.com.tw 台主机的 DNS 对应资料是由负责 home.netman.com.tw 这个域名的 DNS 伺服器管理的。(在 DNS 术语中我们称一个域名为“zone”这个 zone 可以是您从 NIC 申请回来的域名也可以是从该域名之下延伸出来的“sub-zone”)。在这台 DNS 伺服器上面必须有一个关于 home.netman.com.tw 这个 zone 的档案而这档案里面必须有一笔关于 www 的记录(任何主机都是以“记录”来表示,称为 Resource Record)。这个记录可以为一个 IP 位址也可以以别名形式来对应一台主机名称但无论如何所对应的主机名称最终是要被一个 IP 位址所对应着就是了。
  同时DNS 还能提供“反查询”(reverse lookup) 功能也就是以 IP 来查询主机名称。网路上面的许多服务如FTP, SMTP等等都需要到这个功能。其实DNS 服务本身就必须要使用反查询功能而且在设定上也必须要为每个网路建立起 reverse zone。虽然有些人发觉即使没有 reverse zone 也可以使用到 DNS 服务但其中弊端却不容易被察觉到在这个(中文)网页http://dnsrd.nctu.edu.tw/Basic/WhenToUse-Rev.html 上面您可以看到忽略 revers zone 所致一些问题。
  DNS 的名称记录
  事实上DNS 不仅仅是用来解释位址用的而且还可以回答更多关于网路和主机的其它信息其中很重要的一个功能就是可以供邮件系统进行路由。这些资料通常会以不同的“记录”名称出现在DNS的资料档案中。下面让我们参考一个 Linux 的 DNS 档案看看这些记录是如何表示的
  ;
  ; Zone file for siyongc.domain
  ;
  ; Then full zone file
  ;
  $TTL 86400
  @ INSOAredhat52.siyongc.domain. netman.siyongc.domain. (
   1999092801; serial
   8H ; refresh
   2H ; retry
   1W ; expire
   1D ) ; minimun
  ;
  INTXT"A test domain, created by Netman"
  INNSredhat52
  INNSdebian.home
  INMX10redhat52.siyongc.domain.
  INMX20debian.home
  ;
  localhostINA127.0.0.1
  
  gwINA192.168.0.17
  INHINFO"Redhat" "MASQ"
  INTXT"The masquerade gateway to internet"
  
  redhat52INA192.168.0.17
  INMX10redhat52
  INMX20debian.home
  INHINFO"Dell PII 266" "Linux RedHat"
  wwwINCNAMEredhat52
  mailINCNAMEredhat52
  ftpINCNAMEredhat52
  newsINCNAMEredhat52
  smtpINCNAMEredhat52
  
  pii266INA192.168.0.15
  INMX10redhat52.siyongc.domain.
  INMX20debian.home.
  
  slware36INA192.168.0.18
  INMX10redhat52.siyongc.domain.
  INMX20debian.home.
  
  rhrouteINA192.168.0.4
  INMX10redhat52.siyongc.domain.
  INMX20debian.home.
  
  homeINnsdebian.home.siyongc.domain.
  debian.homeINA10.0.2.101
  我们姑且不理会开头那几行的意思那是给 DNS 系统本身使用的(我将会在“学习 Linux”文章里面再详细讨论)这里我们只是看看几个记录名称而已
   
  分 DNS 工作
  
  由於 DNS 的重要性日益著,提高其容能力及查效能,我在架某一一 zone 的侯,常以多台伺服器 zone 的服。其中,我必需指定一台 Primary(master) DNS 伺服器,它是架在某一域下被主要授控制所有名的主控伺服器管著域的所有料些料只有 primary(master) 可以修改。
  
  但如果在一比大型的路中DNS 伺服器就得很繁忙所以您可以定多 DNS 分 master 的工作但您或不意到每一 DNS 伺服器去更新料吧而且就算您意做也容易出或料不同步的情形。您可以定其它的伺服器 secondary (slave) DNS master 上面的料其它的可以被分派到不同的 DNS 做查既可以分 master 的工作而且料也可以自行同步工作。保料的一致性,master 每次更新料後以 notify 制主通知 slave 前同步。此外,您可以定 DNS 料同步的隔在 dns 案中的 Refresh 定就是了。在案中,您看到 Serial slave 的上面的 serial

读书人网 >互联网

热点推荐