DNS:Domain Name Service,应用层协议;

   基于C/S架构

   UDP协议和TCP协议都监听于53号端口,但各自应用的场景不相同。


FQDN(Full Qualified Domain Name):主机名



名称解析:简单来讲就是名称转换

早些时候主机只有几十台,主机之间通信时候的名称转换通过主机本地的hosts文件进行名称解析,我们可以把hosts文件当成一个数据库,存放了主机的ip地址和hostname以及它们的别名(alias),但要想基于主机名来进行通信,还需要一个通用的应用层来实现主机名解析,所以就需要在主机的标准库中定义库文件,这就是getipbyhostname()库和gethostnamebyip()库,当主机想要进行网络间通信时都可以调用这两个库,库文件会通过当前的主机名调或者ip为键来查找hosts文件中与之对应的ip地址或者是主机名,从而就达到了通信的目的。但当主机数量越来越多的时候,再使用这种机制就会很慢,而且这个hosts文件也会太过庞大。后来IANA就通过设置一个DNS服务器来统一完成这些机制,从而解决了这些时效性等问题,但hosts文件这种机制并没有被抛弃,库调用会首先查找当前主机本地的hosts文件如果查找不到就去DNS服务器中查找。



DNS服务器中采用了倒置的树结构,首先在DNS服务器中会有有一个根域(类似于文件系统中的根文件系统),而后在根域后又划分出多个顶级域(TLD),这些顶级域是:.com , .net, .org, .gov, .edu, .mil等,这些在顶级域中被称作组织域,后来IANA又为各个国家设置了国家域,国家域也属于顶级域,国家域:.iq, .tw, .hk, .jp,.cn等等,在顶级域后个人或组织可以自己申请二级域来使用。

wKioL1aQyWyzcUpRAAI-gH-cWqw536.jpg




  DNS查询类型:递归,迭代

  DNS名称解析方式:名称——>IP:正向解析   

             IP——>名称:反向解析

           (两种解析方式有不同的树状结构,即不是一个名称空间也不是同一个解析库)


 DNS服务器类型

       (1)负责解析至少一个域:①主名称服务器;②辅助名称服务器;

       (2)不负责域:缓存名称服务器;

一次完整的查询请求经过流程:

Client-->hosts文件-->DNS Local Cache-->DNS Server(recursion)-->

                             ①直接查询数据库并返回答案(自己负责解析的域)

                             ②Server Cache-->literation(迭代)(不是自己负责                                解析的域)

wKioL1aQySmTYlvhAANB6MhLv9o777.jpg


解析答案: 肯定答案;

       否定答案:不存在查询的键,因此,不存在与其查询键对应的值;


       权威答案:直接负责解析的DNS服务器所返回的答案;

       非权威答案:由缓存服务器返回的答案;


主-辅DNS服务器:

       主DNS服务器:维护所负责解析的域数据库的那台服务器,读写操作均可进行。

       从DNS服务器:从主服务器那里或其他的从DNS服务器那里“复制”一份解析库。


     

“复制”操作的实施方法:

       ①序列号:也即是数据库的版本号;主服务器数据库内容发生变化时,其版本号递增;

       ②刷新时间间隔:refresh,从服务器每多久到主服务器检查序列号更新情况;

       ③重试时间间隔:retry,从服务器从主服务器请求同步失败时,再次发起尝试请求的时间          间隔;

       ④过期时长:expire,从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数          据,停止提供服务;

       ⑤否定答案的缓存时长    

 但主服务器不会只等待刷新时间到来时去同步从服务器,当主服务器数据更新后但并没有到达刷新时间时,它也会自动“通知”从服务器随时更新数据。


主服务器同步方式:区域传送:(1)全量传送 axfr 传送整个数据库

                  (2)增量传送 lxfr 仅传送变量的数据



区域(zone)和域(domain)的区别

        区域:FQDN-->IP(正向解析库)

            IP-->FQDN(反向解析库)

    区域是一个物理概念,每一个方向就是一个区域,基于正向解析库和反向解析库进行,区域和域并没有直接的关系,域是一个逻辑关系的感念。


我们要想真正配置一台DNS服务器,我们还需要了解区域数据库文件的配置。