DNS服务器类型及查询过程

什么是DNS

  DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

DNS域名称

  域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,包括主机名和域名。DNS数据库中的名称形成一个分层树状结构称为域命名空间。域名包含单个标签分隔点,例如:im.qq.com。

d1.jpg

  • FQDN:(Fully Qualified Domain Name)完全合格域名/全称域名,唯一地标识在 DNS 分层树中的主机的位置,通过指定的路径中点分隔从根引用的主机的名称列表。

下图显示与主机称为 im 内 qq.com DNS 树的示例。 主机的 FQDN 是 im.qq.com。

DNS域的名称层次结构

d2.jpg

  • 根域:dns域名中使用时,规定有尾部句点(.)来指定名称位于根或更高级别的域层次结构

  • 顶级域:用来指示某个国家/地区或组织使用的名称的类型名称,例如:.com

  • 二级域:个人或组织在Internet上使用的注册名称,例如:qq.com

  • 子域:已注册的二级域名衍生的域名,通俗的讲就是网站名,例如:www.qq.com

  • 主机名:通常情况下,DNS域名的最左侧的标签标识网络上的特定计算机,例如:h1.www.qq.com

DNS服务器的类型:

  DNS域名服务器是用来存储主机-域名映射信息的,这些服务器具体又可以分为以下几类:

1、主域名服务器(primary name server)

  它是特定域所有信息的权威性信息源。它从域管理员构造的本地磁盘文件中加载域信息,该文件(区文件)包含着该服务器具有管理权的一部分域结构的最精确信息。主服务器是一种权威性服务器,因为它以绝对的权威去回答对其管辖域的任何查询。

2、从域名服务器(secondary name server)

  它可从主服务器中复制一整套域信息。区文件是从主服务器中复制出来的,并作为本地磁盘文件存储在辅助服务器中。这种复制称为"区文件复制"。在辅助域名服务器中有一个所有域信息的完整拷贝,可以有权威地回答对该域的查询。因此,辅助域名服务器也称作权威性服务器。配置辅助域名服务器不需要生成本地区文件,因为可以从主服务器中下载该区文件。

3、缓存名称服务器(caching-only server)

  可运行域名服务器软件,但是没有域名数据库软件。它从某个远程服务器取得每次域名服务器查询的结果,一旦取得一个,就将它放在高速缓存中,以后查询相同的信息时就用它予以回答。高速缓存服务器不是权威性服务器,因为它提供的所有信息都是间接信息。对于高速缓存服务器只需要配置一个高速缓存文件,但最常见的配置还包括一个回送文件,这或许是最常见的域名服务器配置。

4、转发域名服务器

  负责所有非本地域名的本地查询。转发域名服务器接到查询请求时,在其缓存中查找,如找不到把请求依次转发到指定的域名服务器,直到查询到结果为止,否则返回无法映射的结果。

DNS查询过程

  当客户端程序要通过一个主机名称来访问网络中的一台主机时,它首先要得到这个主机名称所对应的IP地址,因为IP数据报中允许放置的是目地主机的IP地址,而不是主机名称。可以从本机的hosts文件中得到主机名称所对应的IP地址,但如果hosts文件不能解析该主机名称时,只能通过向客户机所设定DNS服务器进行查询了。

可以以不同的方式对DNS查询进行解析:

  • 第一种是本地解析,就是客户端可以使用缓存信息就地应答,这些缓存信息是通过以前的查询获得的。

  • 第二种是直接解析,就是直接由所设定的DNS服务器解析,使用的是该DNS服务器的资源记录缓存或者其权威回答(如果所查询的域名是该服务器管辖的)。

  • 第三种是递归查询,即设定的DNS服务器代表客户端向其他DNS服务器查询,以便完全解析该名称,并将结果返回至客户端。

  • 第四种是迭代查询,即设定的DNS服务器向客户端返回一个可以解析该域名的其他DNS服务器,客户端再继续向其他DNS服务器查询。

1、本地解析
  本地解析的过程如图所示。客户机平时得到的DNS查询记录都保留在DNS缓存中,客户机操作系统上都运行着一个DNS客户端程序。当其他程序提出DNS查询请求时,这个查询请求要传送至DNS客户端程序。DNS客户端程序首先使用本地缓存信息进行解析,如果可以解析所要查询的名称,则DNS客户端程序就直接应答该查询,而不需要向DNS服务器查询,该DNS查询处理过程也就结束了。

d4.png

2、直接解析
  如果DNS客户端程序不能从本地DNS缓存回答客户机的DNS查询,它就向客户机所设定的局部DNS服务器发一个查询请求,要求局部DNS服务器进行解析。如图所示,局部DNS服务器得到这个查询请求,首先查看一下所要求查询的域名是不是自己能回答的,如果能回答,则直接给予回答,如是不能回答,再查看自己的DNS缓存,如果可以从缓存中解析,则也是直接给予回应。

d5.png

3、递归解析
       当局部DNS服务器自己不能回答客户机的DNS查询时,它就需要向其他DNS服务器进行查询。此时有两种方式,如图所示的是递归方式。局部DNS服务器自己负责向其他DNS服务器进行查询,一般是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询。最后得到的查询结果返回给局部DNS服务器,再由局部DNS服务器返回给客户端。

d6.png

4、迭代解析
       当局部DNS服务器自己不能回答客户机的DNS查询时,也可以通过迭代查询的方式进行解析,如图所示。局部DNS服务器不是自己向其他DNS服务器进行查询,而是把能解析该域名的其他DNS服务器的IP地址返回给客户端DNS程序,客户端DNS程序再继续向这些DNS服务器进行查询,直到得到查询结果为止。

d7.png

一次完整的DNS解析过程图解

DNS域名解析过程.gif 

原创文章,作者:641348038@qq.com,如若转载,请注明出处:http://www.178linux.com/67736

(6)
641348038@qq.com641348038@qq.com
上一篇 2017-02-08
下一篇 2017-02-08

相关推荐

  • ​文本编辑器nano

    新建/打开文件     nano 路径+文件名,文件存在则为打开,否则新建;(未输入文件名,编辑完成后,保存退出会提示输入文件名); nano     note:nano中,黑底白字表示快捷键操作。其中“^”表示Ctrl键,则Ctrl+G就表示成“^G”。“M”表示 Alt键,则Alt+W表示为“M…

    Linux干货 2016-05-05
  • linux bash环境变量简单总结

    一.环境变量简介Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都 是相同的,这个默认环境实际上就是一组环境变量的定义。 环境变量是全局的,设置好的环境变量可以被所有当前用户所运行的程序所使用。 用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。 …

    Linux干货 2015-09-14
  • 小东北Eric的学习宣言

      大家好,我是网络班24期新加入的学员,之前工作了几年,一直没有找到一个很明确的工作方向,现在终于可以有一个很明确的努力方向啦,那就是跟着马哥,成为技术大牛,听马哥说过,键盘敲烂,月薪两万,为了这个目标,并且努力超越它,加油!冲!冲!冲!

    Linux干货 2016-10-19
  • 如何在CentOS上构架一个简易的局域网web服务器

    首先,要取得适用你系统版本的http源码包,这里推荐两个网站: httpd.apache.org www.kernel.org 根据自己系统的版本下载相应的源码包; CentOS7 下载 httpd-2.4.25.tar CentOS6 下载 httpd-2.2.32.tar 以CentOS 6 示例: 首先,我们先来为http…

    2017-03-09
  • 计算机基础

    计算机系统 计算机系统由两大部分组成硬件系统(Hartware)和软件系统(Software) 硬件系统:主要由中央处理器、存储器、输入输出控制系统和各种外部设备组成。中央处理器是对信息进行高速运算处理的主要部件,其处理速度可达每秒几亿次以上操作。存储器用于存储程序、数据和文件,常由快速的主存储器(容量可达数百兆字节,甚至数G字节)和慢速海量辅助存储器(容量…

    Linux干货 2017-05-20
  • Linux运维基础2

    shell编程

    Linux干货 2018-03-19

评论列表(1条)

  • luoweiro
    luoweiro 2017-02-23 07:22

    对dns原理和解析过程整理的非常详细