DNS名字服务器概念和操作

avatar
作者
筋斗云
阅读量:0

DNS名字服务器概念和操作

1、DNS一般操作

​ 名字系统的三个主要的功能分别是创建名字空间、执行名字注册和提供名字解析。支持名字解析主要负责完成其要求的功能的设备是名字服务器,这些服务器被安排成一种与名字系统权威机构结构密切相关的层次结构。

1.1、DNS名字服务器体系结构和分布式名字数据库

​ 在大型的DNS实现中,关于域的信息不是集中在某个权威机构运行的单一数据库中,相反,它分布在很多负责管理特定的顶级域(TLD)、二级域或更低级别子域的不同权威机构中。

​ 每个DNS权威机构地区都要求拥有一台或多台负责管理有关该地区信息的DNS服务器,这些服务器称为该地区的权威服务器。有关地区中域、子域和对象信息的存储是通过把数据记录在专门的资源记录中完成的,这些资源记录可以从管理员维护的DNS主列表中读取。存储之后服务器就可以响应这些信息的请求。而DNS公共名字信息存储在DNS的一个分布式数据库中。

1.2、DNS服务器支持功能

​ 存储和提供(通过响应来自DNS解析器的请求)名字数据是DNS服务器的主要功能。不过,通常还要要求DNS服务器完成其他一些支持性的一些工作。

与服务器进行交互。由于DNS解析的过程常常需要涉及多台服务器,因此服务器不仅必须维护名字信息,还必须维护有关其他服务器存在性的信息。根据DNS请求的类型而定,服务器可能变成客户机并产生请求发送到其他服务器。

地区管理和传输。服务器必须提供一种可以管理地区内DNS信息的方法。此外还存在一个允许在某个地区的主(主要)服务器和从(次要)服务器之间执行地区传送的程序。

性能增强功能。由于服务器需要处理大量的请求,所以需要采取各种技术来减少响应查询所需要的时间,其中最重要的技术是对名字信息进行高速缓存。一种常规高速缓存的变体,称为负缓存,也可以用来改善性能,并且负载均衡也是一种可以用来改善在DNS系统内注册的繁忙设备工作效率的特色。

管理。名字服务器还被要求执行各种各样的其他管理细节工作。

​ 其实并非所有的服务器都要执行上述全部任务,某些服务器只执行其中一部分任务。

1.3、DNS服务器层次结构的逻辑性

​ 像其他层次结构一样名字层次结构本质上是一种逻辑结构。前面已经提到过它往往和权威机构层次结构并不完全相同。一方面,单个DNS名字服务器常常可以作为很多个域的权威服务器。即使某个特定团体拥有某个特殊域的一个子域的权限,它也可以和其父域的权威机构共享DNS服务器以提高效率。另一个关于名字层次结构逻辑特性的重要方面使,在名字服务器和名字服务器的位置之间不存在必然的联系。

2、DNS名字服务器数据存储

​ 名字服务器所作的最重要的一项工作是存储名字数据。本质上,每个DNS服务器都是一种数据服务器,数据库中含有该服务器负责维护的域或地区内子域和单个设备的各种信息。在DNS种,含有这种名字信息的数据库记录被称为资源记录(RR)。地区内每个节点都与一组特定的资源记录相关联。

2.1资源记录的二进制的文本表示

​ DNS的全部意义在于使人们能够使用名字,同时又能使计算机能够使用数字地址。这一原则进一步体现在DNS资源记录本身所采用的两种完全不同的表达形式上,如下图。

在这里插入图片描述

RR字段格式(二进制)表示。名字服务器被要求通过在DNS报文内发送RR来响应对名字信息的查询,显然我们希望以尽可能高效的方法来完成也已操作,因此使用了一种与其他协议报文所用的多字段格式类似的特殊字段格式,在内部存储每一个RR。所有RR均采用一种通用的字段格式存储它们中的某些手段,因而每个RR都有一个与特定RR类型相对应的特殊部分。

主文件(文本)表示。计算机乐意交换二进制编码的字段格式,并且可以轻易地记住它们。举个例子说,RR类型15就对应着一条邮件交换(MX)记录。可是,管理人员却希望能够在不需要记住含义不明的代码或使用二进制数值的情况下,快速方便的维护DNS信息,为此,DNS为其人机接口使用了一种主文件格式,该文件格式允许按照文本的形式指定RR,方便维护。

2.2、RR和主文件的使用

​ 根据节点类型和为其保存的信息内容,每个节点可以拥有数量不定的资源记录。当DNS信息发生改变时,管理员通过在服务器计算机上对文件格式的主文件做出修改来添加、更改或删除RR。DNS服务器软件随后把这些软件读取到内存,对其进行语法分析(解释)并将其转换为二进制格式。然后这些信息就可以用于解析DNS名字请求和其他一些查询。

2.3、常见RR类型

在这里插入图片描述

​ DNS标准的最初制定目标是允许DNS与多种协议一起工作,其方法是指定每个RR所属的类。当前,唯一常用的类是用于TCP/IP的类。叫做IN(指因特网)。

3、DNS名字服务器类型和作用

3.1主(主要)/从(次要)服务器

​ 每个地区都需要至少一台DNS名字服务器为其负责。这些DNS名字服务器称为该地区的权威服务器,因为他们包含了描述该地区的完整RR集合。当因特网上的任意一台设备希望了解有关某个地区的信息时,他就查询这个地区的权威服务器。

​ 从严格的理论角度来讲,每个地区后区域拥有一台名字服务器就已经足以为整个DNS名字结构提供名字解析服务,但是从现实的角度来看,让名字空间的每个部分都只有一台名字服务器不是一种明智的做法。相反,通常每个地区至少有两台名字服务器与其关联:一台主要(或主)名字服务器,另一台次要(或从)名字服务器。某些地区可能还不止一台次要服务器。

​ 显然主名字服务器是最基本的名字服务器,正是这台名字服务器上维护者地区RR的主文件,因此主名字服务器对地区信息有最终解释权。但是,由于一下多种原因,从服务器同样也是很重要的。

冗余。当主名字服务器失效时,从服务器可以保证业务的正常进行。

维护。当多余一台服务器的时候,我们可以在需要的时候方便地关闭主服务器进行维护而不中断名字解析服务。

负载处理。繁忙的地区可以使用多台服务器来分摊名字解析请求的负载,提高性能。

效率。蒋名字服务器放在不同的地方也可以提高效率。

3.2、唯高速缓存名字服务器

​ 为了提高效率起见,包括主和从服务器的所有DNS服务器,均对DNS信息进行高速缓存,以便在不久的将来再次收到请求时可以在重复使用。高速缓存的作用是如此显著,以至于某些服务器的放置目的只是为了高速缓存源自其他DNS服务器的信息。这些服务器被称为唯高速缓存名字服务处理器也就不足为奇了。

​ 这些名字服务器不是任何地区或域的权威服务器,它们也不维护属于自己的任何RR。它们只能通过联系其他权威名字服务器然后对信息作中继来应答名字解析请求,其后它们就把者些信息储存起来用于今后的解析请求。通过战略上的合理部署,一台唯高速缓存服务器可以通过减少到权威服务器的请求大大的改善某些网络中的DNS解析性能。

4、DNS名字服务器高速缓存

​ 高速缓存是一种基本的效率增强特色,它通过消除对最近解析过的名字的不必要解析请求来减少DNS流量,无论何时,一个名字一经解析,所得到的DNS信息系统就会缓存起来,以便可以将其用于随后很快出现的请求。

​ 当然,事情并非完全这么简单,每个高速缓存系统,包括DNS中所使用的缓存系统,都存在的一个非常重要的问题是缓存的新鲜度问题 。

4.1、高速缓存数据的持久性和寿命的使用时间间隔

​ 假设本地DNS服务器对名字www,baidu.com作了解析后缓存了它的地址。在这个例子里,百度的主页加载几秒后你就点击了一个链接,所以你可能不会太关注DNS的新鲜程度,但是假设说你关掉了计算机,两个星期后在回来工作,并再一次访问www.baidu.com,情况又会怎么样呢?如果高速缓存服务器里仍然有这个名字,你又如何知道其ip地址没有发生变化呢?

​ 有两种不同的机制来解决这个问题。第一种机制是缓存数据时,高速缓存服务器还要同时记下这些数据来至哪一个权威服务器。当一个解析器(客户机)请求执行名字解析而且解析的地址取自高速缓存时,服务器就把自己的应答标记为非权威的以明确的告诉客户机该名字解析来自于高速缓存。另外,该服务器还要给出最初提供数据的那个权威服务器的名字。客户机于是就有了选择的余地:它既可以使用非权威的答案也可以向权威服务器发出请求以获取最新的名字解析。

​ 第二种确保缓存数据不会变得过于陈旧的技术是采用一种过程来限制DNS缓存数据的持久性,每个RR都关联一个称为寿命(TTL)的时间间隔。无论何时从服务器中读取一个RR,该资源记录的TTL也会被同时读取出来,缓存这条记录的任意一台服务器在此时间间隔过期后都应该丢弃这条记录。

​ 当然TTL受控于RR的所有者,TTL的值必须要经过深思熟虑,TTL值越大,越能减少获取缓存数据的查询次数,性能也越优化。

4.2、负高速缓存

​ 典型的高速缓存只存储成功的名字解析结果。但是也是可以让DNS服务器高速缓存那些不成功的名字解析尝试的结果,这称为负高速缓存。

​ 加入,我现在在浏览器中第一次输入jb.com(这是错误的京东域名)这样的化DNS解析器就无法正确的解析它,它会宣称:“这个名字无法解析。”,然后它会蒋这个名字记录下来当作一条负缓存记录。当你再次搜索jb.com时他会返回:”我已经知道这是个错误的名字。不会再次解析它,因为解析也浪费性能。”这就是负高速缓存。当然这个记录记录多久是由DNS服务器自己决定的,记录在SOA字段中,这个字段以前用来规定默认的TTL值。

5、DNS名字服务器负载均衡

5.1、用多条地址记录分摊对某个域的请求

​ 并非只能为一个DNS域名创建一条地址RR,而是可以创建一条或多条这样的RR。这样就可以把多个IP地址与一个名字相关联,从而可以把针对一个域名的大量请求分散到多台物理IP上,这种做法使得DNS能够为繁忙的因特尔服务器实现负载均衡。

5.2、使用多台DNS服务器分摊DNS请求

​ DNS负载均衡既可以指用DNS来分散发到某台用DNS命名的设备的请求负载(如web页面请求),又可以指分散DSN请求自身的负载。

6、DNS名字服务增强

6.1、自动执行地区传输:DNS通知

​ DNS传输就是:当一条RR做了更改时,主服务器就会自动发送一个通知报文给它的从服务器,然后从服务器就像自己刷新定时器以过期的那样采取行动。这样做一是减少了从服务器为了了解DNS信息是否发生了变化而发生的不必要的查询次数,二是缩减了从名字服务器持有过时记录的时间。

6.2、提高地区传输效率效率:递增传输

​ RFC 1995中提出:每当一台从服务器确定已经发生了变化需要更新从服务器数据库时,它就向主服务器发送一个LXFR(递增传输)查询,其中包含了从服务器持有的数据库当前副本的序列号。主服务器然后查看自从查询中的序列号等于当前序列号以来都有那些RR发生变化,只有那些更新过的RR才会发送给从服务器。

6.3、处理动态IP地址:DNS更新/动态DNS

​ 常规DNS假定一台主机的IP地址几乎时不变的,但是现代网络技术利用了诸如动态主机配置协议(DHCP,将在后面讲到)之类的主机技术向设备动态的分配IP地址。显然这不可能指望用人和文本编辑器来更上这一变化速率。

:DNS更新/动态DNS

​ 常规DNS假定一台主机的IP地址几乎时不变的,但是现代网络技术利用了诸如动态主机配置协议(DHCP,将在后面讲到)之类的主机技术向设备动态的分配IP地址。显然这不可能指望用人和文本编辑器来更上这一变化速率。

​ 于是DNS将其与HDCP集成起来,支持地址和名字的自动分配,同时支持主机IP地址改变时自动更新DNS记录。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!