DNS域名系统

来源:互联网 发布:淘宝免单真的假的 编辑:程序博客网 时间:2024/06/15 21:18


前言

        学过计算机网络的我们知道,整个Internet网络就是一个单一的、抽象的网络,各个主机通过全世界范围内唯一的32位标识符---IP地址来标识唯一性,很显然,在互联网中它们只能通过IP地址来识别对方的身份。所以,当我们在浏览器地址栏中输入目标网站的IP地址后,按下回车,我们就可以访问到目标网站,例如:在地址栏输入百度的IP地址:202.108.22.5,按下回车,我们就可以访问到百度主页。

        然而,当我们想要访问的网站变多,我们就不得不记住一串又一串长达32位的难以记忆的IP地址。所以,为了方便记忆,人类开发出了一套名字系统,为每一个IP地址取一个便于人类记忆的名字。比如我想访问百度主页,我们可以在地址栏输入百度主页的“名字”:www.baidu.com,按下回车,这样同样可以网页的实现访问。

        那么,问题就来了,标识主机的唯一方式是IP地址,但我输入的是“名字”而非IP地址,计算机如何知道我想访问的是哪儿呢?这就引出我们接下来要讲到的域名系统了。


域名系统定义

        域名系统是因特网的一项核心服务,负责管理“名字”和IP地址之间的映射关系。如下图,所以,很显然,当我们输入“名字”时,有人悄悄地把我们输入的“名字”转换为了IP地址。

        


域名系统的层次结构

        从理论上讲,整个Internet可以只使用一个域名系统,使它装入Internet上的所有的主机名,并回答所有对IP地址的查询。然而这种做法并不可取。因为因特网规模很大,这样的域名系统肯定会因为负荷过大而无法正常工作。所以,早在1983年开始,它就采用了层次树状结构的命名方法,并使用分布式的域名系统,如下图。这样即使单个计算机出现了故障,也不会妨碍整个域名系统的正常运行。
        

域名空间

        早期的因特网使用了非等级的名字空间,其优点是名字简短,但当因特网上的用户数急剧增加时,用非等级的名字空间来管理一个很大的而且是经常变化的名字集合是非常困难的,所以,因特网后来就采用了层次树状结构的命名方法,就像全球邮政系统和电话系统那样,采用这种命名方法,任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名,这里“域”是名字空间中一个可被管理的划分。域还可以划分为子域,而子域还可以继续划分为子域的子域,这样就形成了顶级域、二级域、三级域等。例如下图所示的域名:

        这就是中央电视台用于收发电子邮件的计算机的域名,它由三个标号组成,其中标号com是顶级域名,标号cctv是二级域名,标号mail是三级域名。这种方法可使每一个域名在整个因特网范围内是唯一的,并且也容易设计出一种查找域名的机制。


域名服务器

        上面讲述的域名体系是抽象的,但具体实现域名系统则是使用分布在各地的域名服务器。从理论上讲,可以让每一级的每个域名都有一个相对应的域名服务器,使所有的域名服务器构成如下图的结构:

 

        但这样会使域名服务器的数量太多,使域名系统的运行效率降低,所以域名系统就采用划分区的办法来解决这个问题。

        一个服务器所负责管辖的范围叫做区,一个区中所有的节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射,总之,DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位,区可能小于或等于域,但不可能大于域。如下图,公司abc划分的两个区为例,给出了DNS域名服务器树状结构图,不难看出,区是域的子集。


各级域名服务器

        下面我们来简要介绍各级域名服务器。

  • 根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器和IP地址。如果所有的根域名服务器都瘫痪了,那么整个DNS系统就会瘫痪。统计到20125月,全世界已经在312个地方安装了根域名服务器,其中有些地方还是保密的,下面是一些已知根域名服务器的分布情况:

        

  • 顶级域名服务器:这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。
  • 权限域名服务器:就是前面讲过的负责一个区的域名服务器。
  • 本地域名服务器:对域名系统非常重要,当一个主机发出DNS查询请求时,这个查询请求报文就先发送给本地域名服务器。查询未果,才会询问其他的域名服务器。

 

域名解析过程

        首先注意两点:

  • 主机向本地域名服务器查询一般采用递归查询
  • 本地域名服务器向根域名服务器查询一般采用迭代查询,也可采用递归查询
        
        假定域名为m.xyz.com的主机打算发送邮件给主机y.abc.com,这时就必须知道主机y.abc.com的IP地址。下面演示两种查询过程:
        (1)主机向本地域名服务器查询采用递归查询,本地域名服务器向根域名服务器采用迭代查询
        

  1. 主机m.xyz.com先向本地域名服务器dns.xyz.com进行递归查询
  2. 本地域名服务器采用迭代查询。它先向一个根域名服务器查询
  3. 根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器dns.com的IP地址
  4. 本地域名服务器向顶级域名服务器dns.com查询
  5. 顶级域名服务器dns.com告诉本地域名服务器,下一次应查询的权限域名服务器dns.abc.com的IP地址
  6. 本地域名服务器向权限域名服务器dns.abc.com进行查询
  7. 权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址
  8. 本地域名服务器最后把查询结果告诉主机m.xyz.com

       (2) 主机向本地域名服务器查询采用递归查询,本地域名服务器向根域名服务器采用递归查询

        

  1. 主机m.xyz.com先向本地域名服务器dns.xyz.com进行递归查询
  2. 本地域名服务器采用递归查询。它先向一个根域名服务器查询
  3. 根域名服务器以DNS客户的身份向顶级域名服务器dns.com查询
  4. 顶级域名服务器dns.com以DNS客户的身份向权限域名服务器查询
  5. 权限域名服务器dns.abc.com以DNS客户的身份进行IP地址的查询
  6. 查询到IP地址后逐级向上一层返回结果,直到根域名服务器
  7. 最后本地域名服务器从根域名服务器得到了所需的IP地址
  8. 本地域名服务器最后把查询结果告诉主机m.xyz.com

       


1 0
原创粉丝点击