看到有网友在博客中介绍到了“网上邻居”,但内容较少,没有全面分析基工作原理和故障深入分析,所以在此笔者把曾经发表在“天极网”的上的一个专题文章分篇放在博客中花期大家参考。但因为文章中的图片较多,博客中插入图片又比较麻烦,时间有限,所以所有图片均没有插入,敬请谅解!!
我们已经知道,自Windows 2000系统以后,微软就不再用NETBIOS来注册计算机名,也不再靠WINS对计算机名称进行解析,而是全部交付给了DNS。下面我们先来看一下名称解析服务是如何实现从WINS向DNS迁移的。
一、从 WINS 迁移到 DNS
对于纯粹的Windows 2000 Server环境,不可能减少甚至清除网络上的WINS。从网络删除已安装的WINS服务器的过程叫做“退役”。在决定让网络上的WINS退役之前,请考虑以下问题:
(1). 网络上是否有运行较早版本的Windows或WindowsNT的计算机。
(2). 企业中的客户计算机是否运行旧的MS-DOS或仍需要使用NetBIOS名称服务的Windows程序,如NET命令行实用程序。
如果网络存在以上情形中的任何一种,都必须在网络上始终使用WINS以便与旧的客户及程序兼容。如果都没有,则可以让网络上使用的WINS服务器退役。例如,某些BackOffice应用程序仍然需要NetBIOS命名,如使用Microsoft Exchange Server的客户/服务器消息配置。
重新设计网络或者准备让WINS最后退役时,必须首先完全实现将DNS作为网络上已安装的和活动的所有Windows计算机的主命名服务。一旦实施DNS,WINS退役过程遵照以下常规次序:
(1). 重新配置客户计算机,让其不再使用WINS
重新配置WINS客户,让其停止向要删除的WINS服务器注册和更新其名称。客户使用WINS是根据其TCP/IP配置而配置的。通过下面两个方法之一完成:
·对于被手动配置为使用TCP/IP的客户,从客户计算机使用的每个网络连接所配置的TCP/IP属性中删除主WINS或辅WINS服务器的IP地址。
·对于被动态配置为根据DHCP服务器使用TCP/IP的客户,在DHCP服务器上重新配置选项(包括所有的服务器、作用域或客户配置选项),让其不再向客户提供选项代码为44的分配。该选项类型用来向客户提供WINS服务器IP地址列表。
还可以将WINS客户配置为禁用TCP/IP上的NetBIOS,尽管这一步不是从WINS迁移到DNS的必需步骤。
(2). 重新配置客户机时,验证DNS配置和功能
将WINS客户机重新配置为停止注册其名称以及停止使用WINS服务器时,在从网络删除WINS服务器之前,验证所有客户机都配置了DNS。客户机在DNS中的注册以TCP/IP配置为基础。重新配置可以通过以下两种方法之一完成:
·对于被手动配置为使用TCP/IP的客户,从客户计算机使用的每个网络连接所配置的TCP/IP属性中添加主WINS或辅WINS服务器的IP地址。
·对于被动态配置为根据DHCP服务器使用TCP/IP的客户,在DHCP服务器上重新配置选项(包括所有的服务器、作用域或客户配置选项),向客户提供选项代码为6的分配。该选项类型用来向客户提供DNS服务器的IP地址列表。
(3). 关闭WINS服务器并将其从网络上删除。
在将客户机重新配置为使用DNS而停止将WINS用作名称服务之后,可以开始清除WINS服务器。
二、DNS定义
DNS是域名系统(Domain Name System)的缩写,是一种组织成域层次结构的计算机和网络服务命名系统。DNS命名用于TCP/IP网络(如Internet),用来通过用户友好的名称定位计算机和服务。当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与此名称相关的其他信息,如IP地址。
例如,多数用户喜欢使用友好的名称(例如example.microsoft.com)来定位诸如网络上的邮件服务器或Web服务器这样的计算机。友好的名称更容易记住。但是,计算机使用数字地址在网络上通讯。为了更方便地使用网络资源,诸如DNS的名称服务提供了一种方法,将用户友好的计算机或服务名称映射为数字地址。如果您使用过Web浏览器,则应该也使用了DNS。
图1显示了DNS的基本使用方法,DNS根据计算机名称搜索其IP地址。
图1
本例中,客户机查询服务器,请求配置成使用host-a.example.microsoft.com作为其DNS域名的计算机的IP地址。由于服务器能够根据其本地数据库应答查询,因此服务器将以包含所请求信息的应答回复客户机,即包含host-a.example.microsoft.com的IP地址信息的主机(A)资源记录。
此例显示了单个客户机和服务器之间的简单DNS查询。实际上,DNS查询比这更复杂,而且包含此处未显示的其他步骤。下面详细介绍。
三、DNS查询的工作原理
当DNS客户机需要查询程序中使用的名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询消息都包括三条信息,以指定服务器应回答的问题:
·指定的DNS域名,表示为完全合格的域名(FQDN)
·指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。
·DNS域名的指定类别。
对于Windows DNS服务器,它始终应指定为Internet(IN)类别。
DNS查询以各种不同的方式进行解析。客户机有时也可通过使用从以前查询获得的缓存信息就地应答查询。DNS服务器可使用其自身的资源记录信息缓存来应答查询。DNS服务器也可代表请求客户机来查询或联系其他DNS服务器,以完全解析该名称,并随后将应答返回至客户机。这个过程称为递归。
另外,客户机自己也可尝试联系其他的DNS服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询。该过程称作迭代。
总之,DNS查询过程按两部分进行:
·名称查询从客户机开始并传送至解析程序(DNS客户服务)进行解析。
·不能就地解析查询时,可根据需要查询DNS服务器来解析名称。
下面的部分详细解释这两个过程:
图2显示了完整的DNS查询过程。
图2
如查询过程的初始步骤所示,DNS域名由本机的程序使用。该请求随后传送至DNS客户服务,以通过使用就地缓存的信息进行解析。如果可以解析查询的名称,则查询将被应答并且此过程完成。
本地解析程序的缓存可包括从两个可能的来源获取的名称信息:
· 如果主机文件就地配置,则来自该文件的任何主机名称到地址的映射在DNS客户服务启动时预先加载到缓存中。
· 从以前的DNS查询应答的响应中获取的资源记录将被添加至缓存并保留一段时间。
如果此查询不匹配缓存中的项目,则解析过程继续进行,客户机查询DNS服务器来解析名称。
如图2所示,客户机将查询首选DNS服务器。在此过程的初始客户/服务器查询部分中使用的实际服务器从全局列表中选择。当DNS服务器接收到查询时,首先检查它能否根据在服务器的就地配置区域中获取的资源记录信息作出权威性的应答。如果查询的名称与本地区域信息中的相应资源记录匹配,则服务器作出权威性的应答,并且使用该信息来解析查询的名称。
如果查询的名称没有区域信息,则服务器检查它能否通过本地缓存的先前查询信息来解析名称。如果从中发现匹配的信息,则服务器使用它应答查询。接着,如果首选服务器可使用来自其缓存的肯定匹配响应来应答发出请求的客户机,则此次查询完成。
如果查询名称在首选服务器中未发现来自缓存或区域信息的匹配应答,则查询过程可继续进行,使用递归来完全解析名称。包括来自其他DNS服务器的支持,以帮助解析名称。在默认情况下,DNS客户服务要求服务器在返回应答前使用递归过程来代表客户机完全解析名称。在大多数情况下,DNS服务器的默认配置支持递归过程,如图3所示。
图3
为了使DNS服务器正确执行递归过程,首先需要在DNS域名空间内有关于其他DNS服务器的一些有用的联系信息。该信息以根线索的形式提供,它是初步资源记录的一个列表,该记录可被DNS服务用来定位对DNS域名空间树的根具有绝对控制权的其他DNS服务器。根服务器对于DNS域名空间树中的根域和顶级域具有绝对控制权。
DNS服务器可通过使用根线索搜索根服务器,来完成递归过程。理论上,该过程允许任何DNS服务器定位那些对域名空间树中在任何级别使用的任何其他DNS域名具有绝对控制权的服务器。
例如,当客户机查询单个DNS服务器时,考虑使用递归过程来定位名称host-b.example.microsoft.com。此过程在DNS服务器和客户机首次启动并且没有可帮助解析名称查询的当地缓存信息时进行。它假定由客户机查询的名称用于服务器根据其配置的区域不了解的域名。
首先,首选服务器分析全名并确定对于顶级域“com”具有绝对控制权的服务器的位置。随后,对“com”DNS服务器使用迭代查询,以获取“microsoft.com”服务器的参考信息。随后,参考性应答从“microsoft.com”服务器传送到“example.microsoft.com”的DNS服务器。
最后,与服务器example.microsoft.com联系上。因为该服务器包括作为其配置区域一部分的查询名称,所以它向启动递归的源服务器作出权威性地应答。当源服务器接收到表明已获得对请求查询的权威性应答的响应时,它将此应答转发给发出请求的客户机,这样递归查询过程就完成了。
尽管执行上述递归查询过程可能需要占用大量资源,但对于DNS服务器来说它仍然具有一些性能上的优势。例如,在递归过程中,执行递归查询的DNS服务器可获得有关DNS域名称空间的信息。该信息由服务器缓存起来并可再次使用,以提高使用此信息或与之匹配的后续查询的应答速度。随着时间的推移,这些缓存信息会不断增加并占据大量的服务器内存资源,不过在DNS服务关闭或它的一个工作周期结束时这些信息将被清除。
以前对DNS查询的讨论都假定此过程在结束时会向客户机返回一个肯定的响应。但实际上,查询也可返回其他应答。最常见的应答有:
(1). 权威性应答
权威性应答是返回至客户机并随DNS消息中设置的“授权机构”位一同发送的肯定应答,“授权机构”位表明根据查询名称此应答是从带直接授权机构的服务器获取的。
(2). 肯定应答
肯定应答可由查询的RR或RR列表(也称作RRset)组成,它与查询的DNS域名和查询消息中指定的记录类型相符。
(3). 参考性应答
参考性应答包括查询中名称或类型未指定的其他资源记录。如果不支持递归过程,则这类应答返回至客户机。这些记录的作用是为提供一些有用的参考性答案,客户机可使用这种应答继续进行递归查询。参考性应答包含其他的数据,例如不属于查询类型的资源记录(RR)。例如,如果查询主机名称为“www”并且在这个区域未找到该名称的ARR,而是找到了“www”的CNAMERR,则DNS服务器在响应客户机时可包含该信息。
如果客户机能够使用迭代过程,则它可使用这些参考信息为自己进行其他查询,以求完全解析此名称。
(4). 否定应答
来自服务器的否定应答可以表明:当服务器试图彻底而且权威性地处理查询以及采用递归方式分析查询时将遇到两种可能的结果之一:
·权威性服务器报告:DNS名称空间没有查询的名称。
·权威性服务器报告:查询的名称存在,但该名称不存在指定类型的记录。
解析程序以肯定或否定响应的形式将查询结果传回请求程序并把响应消息缓存起来。
迭代是在以下条件生效时DNS客户机和服务器之间使用的名称解析类型:
·客户机申请使用递归过程,但递归在DNS服务器上被禁用。
·查询DNS服务器时客户机不申请使用递归过程。
来自客户机的迭代请求告知DNS服务器:客户机希望直接从DNS服务器那里得到最好的应答,而不需联系其他DNS服务器。
使用迭代时,DNS服务器根据它对名称空间的特定认识来应答客户机,而这个名称空间正与目前查询的名称数据有关。例如,如果您内部网上的DNS服务器接收到来自本地客户机“www.microsoft.com”的查询,则它可能会返回来自其名称缓存的应答。如果查询的名称当前未存储在服务器的名称缓存中,则服务器可能会通过提供一些参考信息对客户机作出响应,这些参考信息就是是接近客户机所查询名称的其他DNS服务器的NS和A资源记录列表。
得到参考信息后,DNS客户机负责向其他配置的DNS服务器继续进行递归查询,以解析名称。例如,在大多数情况下,DNS客户机可能会将其搜索扩展到Internet上的根域服务器,以定位对于“com”域具有绝对控制权的DNS服务器。一旦联系上Internet根服务器,它就会从指向“microsoft.com”域的实际InternetDNS服务器的这些DNS服务器中获得进一步的递归响应。当客户机收到这些DNS服务器的记录时,它可以向Internet上的外部MicrosoftDNS服务器发送其他迭代查询,这个DNS服务器可通过肯定和权威性的应答进行响应。
使用迭代时,除了向客户机提供自己最好的应答外,DNS服务器还可在名称查询解析中提供进一步的帮助。对于大部分迭代查询,如果它的主DNS不能辩识该查询,则客户机使用它在本地配置的DNS服务器列表在整个DNS名称空间中联系其他名称服务器。
5. 缓存的工作原理
DNS服务器采用递归或迭代来处理客户机查询时,它们将发现并获得已存储的有关DNS名称空间的重要信息,然后这些信息由服务器缓存。
缓存为流行名称的后续查询提供了加速DNS解析性能的方法,同时充分减少了网络上与DNS相关的查询通信量。
当DNS服务器代表客户机进行递归查询时,会暂时缓存资源记录(RR)。缓存的RR包含从DNS服务器获得的信息,对于在进行迭代查询以搜索和充分应答代表客户机所执行的递归查询过程中所获知的DNS域名,此信息具有绝对的权威性。稍后,当其他客户机发出新的查询,申请与缓存的RR匹配的RR信息时,DNS服务器可以使用缓存的RR信息来应答它们。
当信息缓存时,生存时间(TTL)值适用于所有缓存的RR。只要缓存RR的TTL没有到期,在通过与这些RR相匹配的客户机来应答查询时,DNS服务器就可继续缓存并再次使用RR。在大部分区域配置中由RR所使用的缓存TTL值被分配了“最小的(默认)TTL”,它被设置用于区域的启动授权机构(SOA)资源记录。在默认情况下,最小的TTL为3600秒(1小时),但是可进行调整,或者根据需要在每个RR上分别设置缓存TTL。
不是所有Windows计算机或应用程序均需要TCP/IP上的WINS或NetBIOS(NetBT)。例如,如果因为在Web浏览器或FTP程序中输入不完整的URL或在Internet电子邮件程序中输入了不完整的地址而出现名称解析失败,这一问题通常与DNS有关。
在纯粹的Windows 2000环境下,DNS可作为替换WINS的命名服务,因此可不需要安装、配置WINS服务。纯粹的Windows 2000环境是指客户端和资源服务器(客户端按照名称定位的计算机)都运行Windows 2000的环境。如果有其他客户端或资源服务器运行Windows早期版本或MS-DOS,则是混合环境。在混合环境中,任何客户在访问未通过Active Directory发布的共享资源时,名称解析都将失败。例如,遗留的文件和打印服务器,或用于完成登录或浏览Windows NT域的域控制器或成员服务器。用户可能使用并需要WINS辅助名称解析的应用程序示例包括“网上邻居”,Windows资源管理器中的“映射网络驱动器”功能、net命令(Net.exe)及其支持选项,如netuse或netview。
查看本文来源