文章正文

新选组_简单谈谈DNS协议

DNS协议也可以称为DNS服务,全称是Domain Name System,即域名系统,和HTTP协议一样,也是一个位于应用层的协议(服务),它是基于运输层的UDP协议的,关于网络协议的分层介绍,见这里(还没有写好,先放这里一个空链接)。
从DNS的名字我们就可以知道,它提供域名映射到IP地址的服务,那么在我们详细说DNS协议之前,先来大致讲讲互联网的域名结构

1. 域名结构

我们都知道,在互联网中,每一台计算机想要访问互联网,都需要一个IP地址来进行网络通信,可以是形如192.168.1.1这样的点分十进制的IPv4地址,也可以是形如[0:0:0:0:0:0:0:1]这样方括号包围的十六进制的IPv6地址,但是这些地址不便于记忆,所以就产生了域名这种方便人们记住的东西(当然你要是记忆力好能记住IP地址,在浏览器地址栏输入URL的时候,也可以直接用IP地址替换掉域名,效果是一样的)。

域名也可以叫做主机名。这里我们先给出一个域名,例如www.abc.com,以这个域名为例,来看一下域名的结构。

域名采用层次化的结构,其中com是顶级域名,abc是二级域名,www是三级域名,从语法上来说,每个域名都是几个不同层级的名字用.连接起来的组合,域名不区分大小写字母,所以www.ABC.comwww.abc.com是一样的,按照规定来说,域名有长度限制,这里就不再细讲。

上面提到,com是一个顶级域名(TLD,Top Level Domain),除了com之外,顶级域名还有好多,一般来说可以分为:

  • 国家顶级域名

    cn表示中国,us表示美国,uk表示英国,当然还有一些特殊地区也有所谓的国家顶级域名,比如hk表示香港

  • 通用顶级域名

    com表示公司企业,net表示网络服务机构,org表示非营利组织,edu表示美国教育机构(中国的教育机构一般来说是xxx.edu.cn),gov表示美国政府部门(中国的政府部门一般来说是xxx.gov.cn)等。

  • 基础结构域名

    不常见,不做叙述。

所以说,在中国,企业的域名一般可以是xxx.comxxx.com.cnxxx.cn

下面这个域名树,清晰地展示了互联网的域名空间:

互联网的域名结构

在图中,edu.cn下面,划分除了很多三级域名,如tsinghuapku等,一旦某个单位有了一个域名,它就可以自己决定是否要进一步划分下属的子域,域名树的树叶节点就是单台计算机的名字,不能再继续划分了,例如mailwww这两台计算机的完整域名分别为mail.tsinghua.edu.cnwww.tsinghua.edu.cn(这里起什么名字都可以,一般来说,人们愿意把用作邮件服务器的计算机叫做mail,把用作网站的服务器叫做www)。

到这里,我们已经知道了为什么要有域名以及域名的结构,域名就是为了便于人们记忆而产生的,但是域名是方便人们记忆了,计算机反而不好处理了,它更善于处理IP地址这种东西,所以这里就用到了我们要讲的DNS协议,用来把域名映射到IP地址,在了解DNS解析域名的过程之前,我们还需要了解一下域名服务器这种东西(怎么这么多东西,写个博客好麻烦啊23333)。

2. 域名服务器(DNS服务器)

上面说到了域名体系的树状结构,为了实现域名系统,我们首先想到的就是在域名树的每个节点都设置一台对应的服务器,这样就可以了,但是这样做的后果就是导致域名服务器太多,域名系统的运行效率太低,所以,通常是将好多个节点划分为一个区,用分区的方式来实现域名系统,如下图:

2. yu ming fu wu qi DNS fu wu qi shang mian shuo dao le yu ming ti xi de shu zhuang jie gou, wei le shi xian yu ming xi tong, wo men shou xian xiang dao de jiu shi zai yu ming shu de mei ge jie dian dou she zhi yi tai dui ying de fu wu qi, zhe yang jiu ke yi le, dan shi zhe yang zuo de hou guo jiu shi dao zhi yu ming fu wu qi tai duo, yu ming xi tong de yun xing xiao lv tai di, suo yi, tong chang shi jiang hao duo ge jie dian hua fen wei yi ge qu, yong fen qu de fang shi lai shi xian yu ming xi tong, ru xia tu:

DNS分区

其中,(a)是abc这个公司只设置了一个分区的样子,(b)是abc公司设置了两个分区的样子,这两个区分别为abc.comy.abc.com,这两个区对应了两个权限域名服务器(后面还会提到)。下图可以看出域名服务器的层次结构:

?域名服务器的层次结构

由上图可以看出,根据域名服务器起的作用,可以把域名服务器分为四种不同的类型:

  • 根域名服务器

    根域名服务器对应的是域名树中的根节点,是最高层次的域名服务器,但是并不是只有一台,而是有好多台,总共有13个不同IP地址的根域名服务器,用a到m来表示,如a.rootservers.net,每个IP地址对应一套装置,一套装置在世界不同地点安装了服务器,总之,数量很多,当访问根域名服务器时,往往就是由路由器找到最近的根域名服务器访问。

    一般来说,每台根域名服务器都知道所有的顶级域名服务器的域名以及IP地址,但往往也只知道这些,所以访问根域名服务器一般只能得到顶级域名服务器的IP地址,而不能直接知晓你要找的具体服务器的IP。一般来讲,如果要通过互联网解析域名,本地域名服务器首先访问的就是根域名服务器,下面还会讲到。

  • 顶级域名服务器

    顶级域名服务器负责管理在顶级域名下的所有二级域名,例如cn是顶级域名服务器,管理edugov等二级域名,当接收到查询请求时,要么给出最终结果(即具体IP地址),要么给出下一步应该访问的权限域名服务器的IP地址。

  • 权限域名服务器

    权限域名服务器上面已经提到过一次了,就是每个域名分区对应一个服务器就叫做权限域名服务器。当接收到DNS查询请求时,如果可以给出具体的IP地址就给出(例如前面的abc.com可以给出v.x.abc.com的IP地址,所以直接返回),如果不可以,就把下一步要访问的权限域名服务器的IP地址返回(如abc.com不能给出t.y.abc.com的IP,就会把y.abc.com这个权限域名服务器的IP地址返回)。

  • 本地域名服务器

    可能有人已经发现了,上面的图中并没有本地域名服务器这一层级结构,这是因为本地域名服务器(有时候也叫作首选域名服务器或者默认域名服务器)不属于域名树的层次结构,但是相当重要。当一台计算机要进行DNS查询的时候,就会将查询的请求发给本地域名服务器。

    一般来说,一个互联网服务提供商(ISP)或者是一个大学(甚至是一个系)都有一个本地域名服务器,也就是说,当你再学校内使用校园网时,你的本地域名服务器并不是指你自己的电脑,因为你的系或者你的学校,都共用一个本地域名服务器。

3. 域名解析过程

在了解了上面的域名结构以及域名服务器之后,我们来看一下域名的解析过程,总的来讲,主机向本地域名服务器的域名查询一般采用递归查询,而本地域名服务器向根域名服务器的查询一般采用迭代查询。

概念其实很简单,递归查询就是如果主机向本地域名服务器查询IP,本地域名服务器不知道IP地址,这是本地域名服务器就代替主机称为DNS客户,向根域名服务器进行下一步查询。而迭代查询就是,在本地域名服务器向根域名服务器查询时,根域名服务器要么给出最终的IP地址,要么给出下一步本地域名服务器要访问的顶级域名服务器的IP地址,之后本地域名服务器再去访问相应的顶级域名服务器(而不是让根域名服务器代替本地域名服务器去进行下一步查询)。简单来说,递归查询返回具体IP地址或者报错没找到,迭代查询返回具体IP地址或者返回下一步的IP地址。如下图:

?域名查询方式1

当然,我们也可以指定查询方式让查询过程全程使用递归查询,如下图:

域名查询方式2

下面以一个例子说说明在无缓存的情况下(下面会谈到缓存),通过DNS来查询域名的步骤,假设域名为m.xyz.com的主机想要查询y.abc.com这个域名对应的IP地址,那么他就会按照域名查询方式1(上图)中的方式进行查询:

?

  1. 主机m.xyz.com先向本地域名服务器dns.xyz.com进行递归查询。
  2. 本地域名服务器无法给出IP地址,所以本地域名服务器向(离自己最近的)根域名服务器查询,这是的查询已经变为了迭代查询。
  3. 根域名服务器根据本地域名服务器发送的报文,知道了下一步应该查询的是哪个顶级域名服务器,这时根域名服务器告诉本地域名服务器,下一步应该查询的顶级域名服务器dns.com的IP地址。
  4. 本地域名服务器向顶级域名服务器dns.com发送请求查询。
  5. 顶级域名服务器dns.com告诉本地域名服务器,下一步应该查询的权限域名服务器dns.abc.com的IP地址。
  6. 本地域名服务器向权限域名服务器dns.abc.com发送请求查询。
  7. 权限域名服务器dns.abc.com告诉本地域名服务器想要查询的域名y.abc.com的IP地址。
  8. 本地域名服务器在拿到IP地址后,将IP地址返回给主机m.xyz.com
    这就是域名查询的具体过程,因为DNS协议的基于UDP协议,所以上述8个步骤中,总共使用了8个UDP报文。

上面提到,这是在没有缓存的情况下的DNS查询,实际上,为了提高查询的效率以及降低根域名服务器的负荷,一般来说域名服务器中都有高速缓存,用来记录最近查询过的域名的缓存,如果在查询域名时,有想要的域名到IP的映射缓存,并且缓存没有过期,那么就直接将缓存中域名映射的IP地址返回,省去了接下来的查询。只有在没有缓存或者缓存过期了才会进行下一步的查询。实际上,不知域名服务器有缓存,每台计算机甚至浏览器都会对域名到IP的映射进行缓存,这样一来大大加快的DNS的查询速度。

上面这些就是DNS协议的大概了,如果觉得有哪里写的不对的,还请多多指教。

参考书籍:《计算机网络》谢希仁

当前文章:http://www.phil-pro.com/wkvx/609435-1304744-90043.html

发布时间:01:41:49

管家婆??58008开奖结果??上期开码结果??马会特供资料站??www-63kj.com??香港彩现场开奖直播??736736钱多多论坛??www.132022.com??六开彩开奖现??www.33648.com??

管家婆??58008开奖结果??上期开码结果??马会特供资料站??www-63kj.com??香港彩现场开奖直播??736736钱多多论坛??www.132022.com??六开彩开奖现??www.33648.com?? |