1 DNS原理

1.1 DNS简介

DNS(Domain Name system)域名系统,在TCP/IP网络中有非常重要的的地位,能够提供域名与IP地址的解析服务。

1.2 域名空间

DNS是一个分布式数据库,命令系统采用了层次的逻辑结构,如同一颗倒置的树,这个逻辑的树形结构成为域名空间,由于DNS划分了域名空间,所以各机构可以使用自己的域名空间创建DNS信息

注:DNS域名空间中,树的最大深度不得超过127层,树中每个节点最长可存储63个字符。

 

(1) 域和域名

DNS树的每个节点代表一个域,通过这些节点,对整个域名空间进行划分,成为一个层次结构,域名空间的每个域的名字,通过域名进行表示,域名通常由一个完全正式域名(FQDN)标识,FQDN能准确表示出其相对于DNS域树根的位置,也就是节点到DNS域根的完整表述方式,从节点到树根采用方向书写,并将每个节点采用“.”分隔,对于DNS域itchenyi来说,其完全正式域名FQDN为itchenyi.com。

一个DNS域可以包括主机和其他域(子域),每个机构都拥有名称空间的某一部分的授权,负责该部分名称空间的管理和划分,并用它来命名DNS域和计算机,例如,itchenyi为com域的子域,其表示方式为itchenyi.com,而www为itchenyi域中的WEB,可以使用www.itchenyi.com表示!

DNS bind_DNS bind

注意:通常,FQDN有严格的命名限制,长度不可超过256个字节, 只允许是用字符a-z,0-9,A-Z和减号(-)。点号(.)只允许在域名标志之间,(例如“itchenyi.com”)或者FQDN的结尾使用。域名不区分大小写。

2:Internet域名空间

internet域名空间结构为一颗倒置的树,并进行层次划分。由树根到树枝,也就是从DNS根到下面的节点,按照不同的层次,进行了统一的命令,域名空间最顶层,DNS根成为根域(root)。根域的下一层为顶级域,又成为一级域,其下层为二级域,再下层为二级域的子域。按照需要进行规划,可以为多级,所以对域名空间整体进行划分,由最顶层到下层,可以划分:根域、顶级域、二级域、子域。并且域中能够包含主机和子域。主机www的FQDN从最下层到最顶层根域进行反写,表示为www.bbs.itchenyi.com

DNS bind_DNS bind_02
Internet域名空间的最顶层是根域(root),其记录着Internet的重要DNS信息,由Internet域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给连接到Internet的各个组织。

DNS根域下面是顶级域,也由Internet域名注册授权机构管理,共有三种类型的顶级域。

组织域:采用3个字符的代号,表示DNS域中所包含的组织的主要功能或活动,比如com为商业机构组织,edu为教育机构组织,gov为政府机构组织,mil为军事机构组织,net为网络机构组织,org为非营利机构组织,int为国际组织机构。

地址域:采用两个字符的国家或地区代号,如cn为中国,kr为韩国,us为美国。

方向域:这是个特殊域,名字为in-addr.arpa,用于将IP地址映射到名字(反向查询)。

对于顶级域的下级域,Internet域名注册授权机构授权给Internet的各种组织,当一个组织获得了对域名空间的某一部分的授权后,该组织就负责命名所分配的域及其子域,包括域中的计算机和其他设备,并管理分配的域中主机名与IP地址的映射信息。

1.3区(Zone

区是DNS名称空间的一个连续部分,其包含了一组存储在DNS服务器上的资源记录,每个区都位于一个特殊的域节点,但区并不是域,DNS域是名称空间的一个分支,而区一般是存储在文件中的DNS名称空间的某一部分,可以包含多个域,一个域可以再分成几个部分,每个部分或区可以由一台DNS服务器控制,使用区的概念,DNS服务器回答关于自己区中主机的查询,它是哪个区的授权服务器

1.4主域名服务器和辅助域名服务器

DNS服务器可以不存储任何区的信息或者存储一个或多个区的信息,当DNS服务器接收到DNS查询时,他检索它的本地区以定位所请求的信息,如果因为服务器不是所DNS域的授权服务器,从而没有所请求域的数据,而使用检索失败,服务器就检查它的高速缓存并与其他DNS服务器通信以解析该请求,或者把客户端提交给另一个可能知道答案的DNS服务器。

 

DNS服务器可以管理主区和辅助区,用户可以把服务器配置成管理多个不同的主区和辅助区,以尽量接近管理主区和辅助区,这意味着服务器可能管理一个区的主拷贝和另一个区的辅助拷贝,或只管理一个区的主拷贝和辅助拷贝,对每个区,管理其主区的计算机是该区的主服务器,管理其辅助区的服务器是该区的辅助服务器。

 

主区的辅助服务器启动时,它与该区的主控服务器进行连接并启动一次区传输,区辅助服务器定期与主控服务器进行通信,查看区数据是否更改,如果改变了,它就启动一次区传输。

 

每个区必须有主服务器,另外每个区至少要有一台辅助服务器,否则如果该区的主服务器崩溃了,就无法解析该区的名称。

 

辅助服务器的优点:

(1) 容错能力

配置辅助服务器后,在该主服务器崩溃的情况下,客户机仍能解析该区的名称,一般把区的主服务器和区的辅助服务器安装在不同的子网上,这样如果到了一个子网的连接中断,DNS客户机还能直接查询另一个子网上的名称服务器。

(2) 减少广域链路上的通信量

如果某个区在远程有大量客户机,用户就可以在远程服务器添加该区的辅助服务器,并把远程的客户机配置成先查询这些服务器,这样就能防止远程客户机通过慢速链路通信来进行DNS查询。

(3)减轻主服务器的负载

辅助服务器能回答该区的查询,从而减少该区主服务器必须回答的查询数。

1.6 DNS查询原理及流程

(1)DNS相关概念

运行DNS服务程序的计算机,存储DNS数据库的信息,DNS服务器会尝试解析客户机的查询请求,在解答查询前,如果DNS服务器能够提供所请求的信息,就直接回应解析结果,如果该DNS服务器没有相应的域名信息,则为客户机提供另一个能帮助解析查询的服务器地址,如果以上两种方式均失败,则回应客户机没有所请求的信息或请求的信息不存在。

(2)DNS缓存

DNS服务器在解析客户机请求时,如果本地没有该DNS信息,则会询问其他DNS服务器,当其他域名服务器返回查询结果时,该DNS服务器会将结果记录在本地的缓存中,成为DNS缓存,当下一次客户机提交相同请求时,DNS服务器能够直接使用缓存中的DNS信息进行解析。

(3) 资源记录

DNS服务器的信息数据,按照分类进行存储,能够解析客户端的DNS请求

(4) 区文件

包含区资源记录的文件,选择DNS服务器为授权服务器,管理该区域,在大部分DNS实现中,用文本文件实现区

 

递归查询和迭代查询

(1) 递归查询

递归查询是一种DNS服务器的查询模式,在该模式下的DNS服务器接收到客户机的请求后,必须使用一个准确的查询结果回复客户机,如果DNS服务器本地没有存储查询DNS信息,那么该服务器会查询其他服务器,并将返回的查询结果交给客户机。

(2) 迭代查询

DNS服务器另一种查询方式为迭代查询,DNS服务器会向客户机提供其他能够解析查询请求的DNS服务器地址,当客户机发送查询请求时,DNS服务器并不会直接回复查询结果,而是告诉客户机另一台DNS服务器的地址,客户机再向这台DNS服务器提交请求,依次循环,直到返回查询的结果为止。

2 .DNS查询流程

(1) DNS域名解析工作原理

DNS bind_DNS bind_03

<1>客户机提交域名解析请求,并将该请求发送给本地的域名服务器

<2>当本地的域名服务器收到请求后,就先查询本地缓存。如果有查询的DNS记录,则直接返回查询结果,如果没有该记录,本地域名服务器就把请求发给根域名服务器

<3>根域名服务器再返回给本地域名服务器一个所查询域的顶级域名服务器地址

<4>本地服务器再向返回的顶级域名服务器发送请求

<5>接收到该查询请求的域名服务器查询其缓存和记录,如果有相关信息则直接返回客户机查询结果,否则,通知客户机下级域名服务器的地址

<6>本地域名服务器将查询请求发送返回的域名服务器

<7>域名服务器返回本地服务器查询结果,(如果该域名服务器不包含查询的DNS信息,查询过程将重复<6><7>步骤,直到返回解析信息或解析失败的回应)

<8>本地域名服务器将返回的结果保存到缓存,并且将结果返回给客户机

(2) 域名解析实例

DNS bind_DNS bind_04

<1>客户机向本地的域名服务器发送解析www.itchenyi.com请求

<2>当本地的域名服务器收到请求后,就先查询本地的缓存,如果有查询的DNS信息记录,则直接返回查询的结果,如果没有该记录,本地服务器就把解析www.itchenyi.com请求发给根域名服务器

<3>根域名服务器收到请求后,根据完全正式域名FQDN,判断该域名为com域,查询所有的con域DNS服务器的信息,并返回给本地域名服务器

<4>本地域名服务器收到回应后,先保存返回的结果,再选择一台com域名服务器,向其提交解析域名www.itchenyi.com的请求。

<5>com域名服务器接收到查询请求后,判断该域名属于itchenyi.com域,通过查询本地的记录,列出管理itchenyi域名服务器信息,然后将查询结果先返回给本地的域名服务器

<6>本地域名服务器收到回应后,先缓存返回的结果,再向itchenyi.com域的服务器发出请求解析www.itchenyi.com的数据包

<7>域名服务器itchenyi.com收到请求后,查询 DNS记录中的www主机的信息,并将结果返回给本地域名服务器

<8>本地域名服务器将返回的查询结果保存到DNS高速缓存,并且将结果返回给客户机!

 

正向解析和反向解析

(1) 正向解析

正向解析是指域名到IP地址的解析过程。

(2) 反向解析

反向解析是从IP地址到域名的解析过程,反向解析的作用为服务器的身份验证。

 

资源记录

为了将名字解析成IP地址,服务器查询他们的区,(又叫DNS数据库文件或简单数据库文件)。

区中包含组成相关DNS域资源信息的资源记录(RP)。例如,某些资源记录把友好名字映射成IP地址,另一些则把IP地址映射到友好名字。

某些资源记录不仅包括DNS域中服务器的信息,还可以定义域,即指定每台服务器授权了哪些域,这些资源记录就是SOA和NS资源记录。

(SOA资源记录)

每个区在区的开始处都包含了一个起始授权记录(Start Authorrity Record)简称SOA记录,SOA定义了域的全局参数,进行整个域的管理设置,一个区域文件只允许存在唯一的SOA记录。

(NS资源记录)

名称服务器(NS)资源记录表示该区的授权服务器,他们表示SOA资源记录中指定的该区的主和辅助服务器,也表示了任何授权的服务器,没个区在区根处至少包含一个NS记录。

(A资源记录)

地址(A)资源记录把FQDN映射到IP地址,因而解析器能查询FQDN对应的IP地址。

(PTR资源记录)

相对于A资源记录,指针(PTR)记录把IP地址映射到了FQDN。

(CNAME资源记录)

规范名字(CNAME)资源记录创建特定FQDN的别名。用户可以使用CNAME记录来隐藏用户网络的实现细节,使连接的客户机无法知道。

(MX资源记录)

邮件交换(MX)资源记录为DNS域名指定邮件交换服务器,邮件交换服务器是为DNS域名处理或转发邮件的主机,处理邮件指把邮件投递到目的或转交另一个不同类型的邮件传送者,转发邮件指把邮件发送到目的服务器,用简单邮件传输SMTP把邮件发送离最终目的最近的邮件交换服务器,或使邮件经过一定时间的排队。