在TCP/IP的网络中,网络通信的终点是套接字(Socket),其由目标主机的IP地址和要访问的TCP/UDP端口组成,也就是说,不管是在局域网还是互联网上,计算机在网络上通讯时是通过如“202.115.22.33”之类的数字形式的IP地址来识别目标主机。但当我们在访问Internet或Intranet时,我们打开浏览器,在地址栏中输入如“www.sina.com.cn”的域名后,就能看到我们所需要的页面。这给了人们一个困惑,难道计算机通讯时也能根据对方域名来直接找到目标主机么?
其实,当我们在浏览器的地址栏中输入要访问的网页的域名时,计算机系统会为我们做一个“翻译”工作,即将我们输入域名解析为目标主机的IP地址。而这种“翻译”记录的建立,在早期是通过一个hosts文件来完成的,但随着网络规模的扩大,通过管理员手动建立并分发的hosts文件已不适应网络中越来越多的名字解析的需求,此时,则需要一种能够动态地为客户机进行域名注册,同时能动态的为用户要访问的域名进行名字解析的服务,而DNS(Domain Name System)服务为我们提供了这个解决方案。
域名系统 (DNS) 是用于 TCP/IP 网络(例如,Internet)的名称解析协议,在IP的网络里,它是客户机/服务器通信的一个集成部分。
DNS是一个分布式数据库系统,它用来将用户容易记住的友好的名称FQDN(Full Qualified Domain Name:完全限定域名,其描述了主机到它域的精确关系,比如
www.gocean.com.cn)解析为难记的IP地址(比如“202.186.250.41),并将这个映射存放在其数据库系统中,以定位计算机和服务。
因此,不管是在局域网还是广域网中,只要你将要用到如“www.gocean.com.cn”之类域名的时候,你都得首先确保已为此名字在DNS服务器中作好了相应的和IP地址的映射工作。而在互联网中,这个工作则由专门的服务器进行完成。
DNS查询的工作原理
当 DNS 客户端需要查询程序中使用的名称时,它会查询 DNS 服务器来解析该名称。客户端发送的每条查询消息都包括三条信息,指定服务器回答的问题:
1、指定的 DNS 域名,规定为完全合格的域名 (FQDN)
2、指定的查询类型,可根据类型指定资源记录,或者指定为查询操作的专门类型。
3、DNS 域名的指定类别。对于 Windows DNS 服务器,它始终应指定为 Internet (IN) 类别。
例如,指定的名称可以是计算机的 FQDN,例如,“host-a.example.microsoft.com”,而指定的查询类型可以是通过该名称搜索地址 (A) 资源记录。将 DNS 查询看作客户端向服务器询问由两部分组成的问题,例如“您是否拥有名为 ‘hostname.example.microsoft.com’ 的计算机的 A 资源记录?”当客户端收到来自服务器的应答时,它将读取并解译应答的 A 资源记录,获取根据名称询问的计算机的 IP 地址。
在DNS中,通常可执行两类的查询。这两种类型如下:
1、递归查询(Recursive)。DNS 服务器承担全部的工作量和责任,为该查询提供完全的答案。它可使用其自身的资源记录信息缓存来应答客户查询,也可代表请求客户端查询或联系其他 DNS 服务器,以便完全解析该名称,并随后将应答返回至客户端。这个过程如上图中的第1和第10步,称为递归。
2、迭代查询(Iterative)。如果DNS服务器的高速缓存内或区域中没有需要的数据记录,则DNS服务器会向客户端提供去查询其它DNS服务器的指针让client去继续查询,直到出现了正确答案或超时、错误等为止。或第一台DNS服务器在向第二台DNS服务器提出查询要求后,如果第二个DNS服务器内没有所需数据,则它会提供第三台DNS服务器的IP地址给第一台DNS服务器让第一台DNS服务器向第三台DNS服务器查询。该过程这个过程如上图中的第2至第9步,称作迭代。
DNS的查找类型
区域查找类型确定DNS服务器将执行的任务。在你创建区域时,你要通过指定区域类型,来确定该区域将被用来解决正向查找查询还是逆向查找查询。而迭代查询和递归查询可以与下述查找类型相关联:
1、正向查找(Forward Lookup)。这种请求将FQDN映射为IP地址,为最常用的查找类型。
2、逆向查找(Reverse Lookup)。这种请求将IP地址映射为FQDN,当你只知道目标的IP地址,而不知其域名时,可以采用这种查找类型。
DNS创建的区域类型
域名系统 (DNS) 允许 DNS 名称空间分成几个区域(Zone),这些区域存储有关一个或多个 DNS 域的名称信息。对于包括在区域中的每个 DNS 域名,该区域成为该域的有关信息的权威性信息源。
区域是域名称空间中的一个连续部分,通过区域,可以让我们在域中精确的定位某一台主机。
为了创建区域,我们必须先要理解下面这些概念:
1、区域类型(Zone types)。DNS服务器上可以驻留不同类型的区域,你可以配置单个DNS服务器,使之支持或驻留多个区域。也可以配置多个服务器,让它们驻留一个或多个区域,用于提供容错和负载平衡的功能。
2、区域文件(Zone file)。资源记录存储于区域文件中。区域文件中存储的停息用于将FQDN解析为IP,或将IP解析为FQDN。每一个zone都有一个区域文件,文件位于:%systemroot%\system32\dns中。(%systemroot%表示当前系统的安装目录)。
识别区域类型
在DNS中,你可以创建并配置以下四种类型的区域:即主要区域(Primary zone)、辅助区域(Secondary zone)、存根区域(Stub zone)、活动目录集成区域(Active Directory interated zone)。
主要区域(Primary zone)
区域的主 DNS 服务器作为区域的更新点。新创建的区域通常是这种类型。可以按以下列两种方法之一使用主要区域:作为标准的主要区域或集成 Active Directory 的主要区域。
对于标准主要类型区域,只有一个 DNS 服务器能主持和加载区域的主副本。如果创建了一个区域并将其作为标准主要区域,则不允许区域有其他主服务器。只允许一个服务器接受动态更新和处理区域更改。
标准主区域包含区域文件的一个读/写版本,该文件存储为标准的文本文件,区域的任何变化都被记录在该文件中。
辅助区域(Secondary zone)
标准主模式隐含了一个故障点。例如,如果因为某种原因区域的主服务器对于网络不可用,则对区域无法做动态更新,无法为DNS客户进行正常的域名解析。这时候,如果我们为事先为主区域创建了辅助区域服务器,则该服务器可用于应答,则区域中名称的查询不受影响并能不受干扰地继续进行。
辅助区域包含了主区域的的只读副本,其通过区域复制得到主区域信息的变化。辅助区域能通过响应client查询请求来减少主zone的负担,从而实现容错和负载平衡。
辅助区域的区域文件被存储为一个标准的只读文本文件,该区域的任何的变化都被记录在相应主区域文件中,并被复制到辅助区域的区域文件中。
存根区域(Stub zone)
存根区域是一个区域副本,只包含标识该区域的权威域名系统 (DNS) 服务器所需的那些资源记录。存根区域用于使主持父区域的 DNS 服务器知道其子区域的权威 DNS 服务器,从而保持 DNS 名称解析效率。
存根区域由以下部分组成:
1、委派区域的起始授权机构 (SOA) 资源记录、名称服务器 (NS) 资源记录和粘附 A 资源记录。
2、可用来更新存根区域的一个或多个主服务器的 IP 地址。
存根区域的主服务器是对于子区域具有权威性的一个或多个 DNS 服务器,通常 DNS 服务器主持委派域名的主要区域。
使用存根区域可执行以下操作:
1、
使委派的区域信息保持最新。 通过定期更新它的一个子区域的存根区域,主持父区域和存根区域的 DNS 服务器将维护该子区域的权威 DNS 服务器的当前列表。
2、
改进名称解析。 存根区域使 DNS 服务器能够使用存根区域的名称服务器列表执行递归,而无需查询 Internet 或 DNS 名称空间的内部根服务器。
3、
简化 DNS 管理。 在整个 DNS 结构中使用存根区域可为区域分发权威 DNS 服务器的列表,而不用使用辅助区域。但是,存根区域与辅助区域的用途不同,考虑冗余和负载共享时,存根区域不是备用区域。
3.3.1.4 活动目录集成区域(AD integrated zone)
可通过使用 DNS 服务器服务的目录集成存储和复制功能为区域添加更多的主服务器。为此,您需要更改区域并将它集成到 Active Directory。
与AD集成的DNS区域中只能创建于域控制器上,其区域数据库也保存在活动目录中,并随AD的复制而在整个域中复制。因为活动目录维护区域信息,所以你无需为了指定怎样更新与何时更新而配置DNS服务器。
本文转自legendfu51CTO博客,原文链接:http://blog.51cto.com/legendfu/1074326 ,如需转载请自行联系原作者