DNS服务器之理论基础

一、什么是DNS

    DNS全称为Domain Name System,即域名系统,其作用就是将我们经常使用的“网址”解析为IP地址。

    在互联网上通信需要借助于IP地址,但人类对于数字的记忆能力远不如文字,那么将IP地址转换成容易记忆的文字是个好办法,可是计算机只能识别0、1代码,这时就需要一种机制来解决IP地址与主机名的转换问题。

    早期由于网络上的主机数量有限,主机名和IP的解析借助于hosts文件即可完成,Linux中此文件一般存放路径为/etc/hosts,在此文件中手动记录每个主机名与其IP的对应关系;但hosts文件的内容不能自动更新,一旦主机名或IP地址发生变化,需要手动对每一台主机进行更新。

    随着互联网的发展,网络上可供人们访问的网站越来越多,hosts文件已经不能满足需求;为了解决此问题,伯克利大学研究出了一套系统,被称为BIND(Berkeley Internet Name Domain),也就是现在流行的DNS。

    DNS利用树形目录结构,将主机名的管理分配给不同的层级,这样可以实现更加快速的完成主机名的查找,修改主机名解析时也更加方便。

二、相关概念

    1、域

        TLDTop Level Domain (顶级域名)

            组织域:.com, .org, .net, .edu,.gov,.mil,.cc,…

            国家域:.cn, .us, .tw, .iq,…

            反向域: .in-addr-arpa

        上面提到过,DNS采用分级的授权管理机制,其结构如下所示:

            blob.png

        根域与一级域由IANA直接管理。

    2、FQDN

        FQDN全称为Fully Qualified Domain Name,即完全合格域名。

        FQDN由两个部分组成:主机名和域名。因为DNS是逐级管理的,所以在不同的层级中主机名与域名也是不同的;以www.google.com为例,在第二层中,.com就是域名,google就是主机名,而到了第三层中,.google.com就成了域名,www就成了主机名。

        注意:主机名与域名并不是依据"."来划分的,主机名中也可以包含"."号的,主要还是要根据域名的注册情况来划分。

    3、正向解析

        从FQDN转换为IP地址称为正向解析。

    4、反向解析 

        从IP地址转换为FQDN称为反向解析。   

    5、区域

        正向解析或反向解析中,每个域的记录就是一个区域。

三、DNS的解析库

    DNS的主要作用是进行主机名的解析。

    解析:根据用户提供一种名称,去查询解析库,以得到另一种名称。       

    正向解析与反向解析使用不同的解析库。

    正向解析库:

         资源记录:rr(resource record)

                   有类型的概念;用于此记录解析的属性。

         SOAStart of Authority,起始授权记录,一个区域文件只能有一个。

         NSName Server,可以有多个。

         MXMail eXchange,邮件交换器。标明域内的邮件服务器,MX记录有优先级属性(0-99);数字越小,优先级越高。

         AFQDNàIP,专用于正向解析库。

         PTRIPàFQDN,专用于反向解析库。

         AAAAFQDNàIPv6,专用于正向解析库。

         CNAMECanonical Name,正式名称。

    解析库文件同步的过程:区域传送(单方向传送)

            完全区域传送:axfr

                将整个区域传送到各服务器。

            增量区域传送:ixfr

                只将区域有改动的记录传送到各服务器。

四、DNS的查询过程

    DNS采用两种查询机制:递归和迭代。

    blob.png

    客户端向DNS服务器发起查询请求,DNS服务器搜索本地解析库没有结果,于是向根域发起查询请求,根域告诉DNS服务器.com服务器上有它需要的资源,DNS服务器又向.com服务器发起查询请求,结果被告知.google.com服务器上有它想要的结果,最后终于在.google.com服务器上找到了解析记录,并返回给了客户端。

    在上面的查询过程中,客户端只发起了一次请求,并得到了最后的结果,这种查询方式被称为递归。

    而DNS服务器在查询过程中不停的发起请求,直到找到想要的结果,这种查询方式被称为迭代。

    这就好比你想知道某日本微电影女星的健康状况,你去问了小A,虽然小A也不知道,但他好面子想表现,于是他向小B咨询,小B让他问问小C,小C让他利用翻墙软件去日本的网站上去看看,最后终于知道了答案并将告诉了你,在这个求知过程中你向小A发起的询问就是递归的,对于你来说是最省心,而对于小A来说是比较悲催的;小A的发起查询就是迭代的,对于小A来说是比较辛苦的,但对于小B、小C来说是基本上没什么工作量的。

    注意:根不会为任何请求递归。

    DNS服务器并不需要在客户端每次发起请求时都执行迭代查询,DNS服务器会将之前的查询结果在本地存储一份,如果客户端再次请求此资源,可以马上做出响应,这个存储空间称为本地DNS缓存。

    另外我们可能还经常会听到两个概念权威DNS服务器和非权威应答。

    权威DNS服务器说的容易理解一点,就是如果本地DNS的配置文件中写明了FQDN与IP的对应关系的,并授权管理这个域时,那么就称这台DNS服务器是该域的权威DNS服务器。

    客户端得到的DNS查询结果是从本地DNS缓存中获得的,那么称这个解析结果为非权威应答;非权威应答的结果不一定是正确的,有可能权威DNS服务器上记录已修改,而缓存中还是未更新的记录。

五、DNS的查询顺序

    1、本地hosts文件

    2、本地DNS缓存

    3、本地DNS服务器

    4、发起迭代查询

六、DNS使用的端口号

    DNS协议使用udp/tcp的53端口提供服务,客户端向DNS服务发起请求时,使用udp的53端口;DNS服务器间进行区域传送的时候使用TCP的53端口。

七、DNS服务器类型

    1、DNS服务器

        为客户端提供域名解析的主要区域,主DNS服务器宕机,会启用从DNS服务器提供服务。

    2、DNS服务器

        主服务器DNS长期无应答,从服务器也会停止提供服务。

        主从区域之间的同步采用周期性检查+通知的机制,从服务器周期性的检查主服务器上的记录情况,一旦发现修改就会同步,另外主服务器上如果有数据被修改了,会立即通知从服务器更新记录。

    3、缓存服务器

        服务器本身不提供解析区域,只提供非权威应答。

    4、转发服务器

        当DNS服务器的解析区域(包括缓存)中无法为当前的请求提供权威应答时,将请求转发至其它的DNS服务器,此时本地DNS服务器就是转发服务器。

       

       

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

(0)
petmasterpetmaster
上一篇 2015-04-28 19:18
下一篇 2015-04-29 16:52

相关推荐

  • 12.http学习与应用实现

    1、请描述一次完整的http请求处理过程; 1)建立或处理连接:客户端发送http请求报文,服务器端接收或拒绝请求; 2)接收请求:服务器端接收来自客户端对某些资源的请求; 3)处理请求:服务器端解析客户端请求报文,获取客户端请求的资源及请求方法等信息; 4)访问资源:服务器端获取客户端请求的资源; 5)构建响应报文; 6)发送响应报文; 7)日志记录; 2…

    2017-09-20
  • 初识Linux基础

    一:计算机的组成及其基本功能 计算机主要由五大基础部件组成:控制器,运算器,存储器,输入设备,输出设备. 控制器:计算机的核心组件,协调各程序的运行,对计算机的各项资源进行控制分配; 运算器:计算机实现算术运算以及逻辑运算的部件; 存储器:计算机用来存放数据和程序的基本部件。 存储器由若干存储单元组成,每个存储单元都有一个地址,计算机通过地址对存储单元进行读…

    Linux干货 2018-03-04
  • 浅谈Openssl与私有CA搭建

        随着网络技术的发展、internet的全球化,信息共享程度被进一步提高,各种基于互联网的应用如电子政务、电子商务日益增多并愈加被人们工作和生活依赖。但是,由于互联网的开放性和通用性,网络上的信息是对所有人公开的,这就使网络上的数据传输过程中存在被窃听、篡改等安全隐患,并极有可能给用户带来不可估量的损失。为此,各种保证数据在互联网上…

    Linux干货 2015-06-04
  • sed命令使用

    一、sed简介    sed是一种在线编辑器,一次处理一行内容。处理时,把当前处理的行存储在历史缓冲区,传给“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非使用重定向存储输出。sed主要用来自动编辑一个或…

    Linux干货 2016-08-12
  • lvs——特殊的lvs-dr模型

    lvs-dr模型中:vip与dip/rip不在同一网段的实验环境设计及配置实现 实验拓扑: 提示:在路由器的内网IP接口上配置一个别名IP,此IP同VIP在同一网段 设计要点: VS上的VIP地址可以直接配置在DIP地址所在的网卡上,Linux主机上,一块网卡可以配置多个地址 RS上的VIP地址必须配置在lo接口上,并且还要关闭arp的响应和通告功能 外网接…

    Linux干货 2016-10-26
  • iptables基础概念

    iptables基本概念梳理 前言 netfilter/Iptables (其中包括netfilter和Iptables两个组件)组 成了Linux平台下的包过滤防火墙,它与大多数的Linux自带软 件一样,这个防火墙是免费提供的,它可以代替昂贵的企业级 防火墙来解决实际问题与实际方案,完成封包过滤,封包重定 向和网络地址转换等功能。 一、工作原理 数据包从…

    Linux干货 2016-12-19