WINS服务器全攻略
在Windows系统中具有Netbios和DNS这两种名字解析方式。Netbios协议是基于本地局域网的UDP广播,具有速度快、无需额外配置的好处,而带来的缺点就是广播不能跨越网段和增加了网络流量,因此微软推出了WINS(Windows Internet Name Service)服务器。当客户计算机配置为使用WINS服务器时,它直接和WINS服务器进行单播通讯,这样可以避开NetBIOS协议使用广播时的这两大缺陷。
可能大家觉得,既然是已经被淘汰的技术了,为什么还需要讲解呢?Netbios名字解析方式虽然已经不在作为主要的名字解析方式了,但是在非活动目录环境中,仍然在广泛的使用。Netbios名字解析所带来的广播网络流量是非常大的,而WINS服务器最大的作用就是可以消除Netbios名字解析方式所带来的大量广播流量,并且它部署简单方便,是我最喜欢的服务器之一。
WINS服务器工作方式
WINS协议采用UDP/TCP 42端口进行通讯:WINS服务器侦听UDP/TCP 42端口,客户端计算机连接WINS服务器的这两个端口进行名字服务通讯。其中UDP 42端口用于答复客户端计算机的名字解析请求,而TCP 42端口用于WINS数据库复制。
对于WINS服务器而言,它的主要功能有名字注册、名字刷新、名字注销和名字解析这四方面,它们的工作方式分别为:
名字注册
和DNS服务器一样,你需要配置客户端计算机使用此WINS服务器(你同样需要配置WINS服务器使用自己的WINS服务)。当WINS客户端计算机启动时,会在配置使用的WINS服务器中注册自己的Netbios名字和对应的IP地址、服务类型。如果WINS服务器正常运行并且此Netbios名字没有被其他WINS客户端注册,则WINS服务器向WINS客户端计算机返回一个成功注册的消息,其中包括此名字注册的生存时间(TTL)。
如果在WINS服务器上此Netbios名字已被其他WINS客户端注册,则WINS服务器向注册此名字的现有WINS客户端按照500毫秒的间隔发起三次名字解析请求,如果现有WINS客户端向WINS服务器成功进行回复,则WINS服务器向请求注册此名字的WINS客户端回复拒绝注册消息;如果现有WINS客户端没有向WINS服务器进行回复,则WINS服务器向请求注册此名字的WINS客户端回复成功注册消息。
如果WINS服务器不在线,则WINS客户端向配置的主WINS服务器和备份WINS服务器各发起三次名字注册请求,如果均未收到WINS服务器的回复,则WINS客户端发送本地广播来注册自己的Netbios名字。
名字刷新
WINS客户端必须在WINS服务器定义的生存时间前对自己的名字进行刷新,生存时间定义了WINS服务器将此Netbios名字作为活动记录存储在WINS数据库中的时间。名字刷新消息中包含了客户端请求进行刷新的IP地址和Netbios名字,WINS服务器以包含新生存时间的名字刷新响应消息进行回复。当WINS客户端刷新它的名字时,执行以下步骤:
1、当生存时间已经过了一半时,WINS客户端向自己的主WINS服务器发送名字刷新请求;
2、如果主WINS服务器没有进行响应,则WINS客户端将在1小时内每隔10分钟向主WINS服务器发送名字刷新请求;如果主WINS服务器仍然没有进行响应,则WINS客户端向备份WINS服务器发起名字刷新请求;
3、如果备份WINS服务器没有进行响应,则WINS客户端将在1小时内每隔10分钟向备份WINS服务器发送名字刷新请求;如果备份WINS服务器仍然没有进行响应,则WINS客户端向又向主WINS服务器发起名字刷新请求。WINS客户端重复这种行为直到生存时间结束;
4、如果WINS客户端成功刷新它的名字,则复位WINS服务器上的更新间隔;
5、如果WINS客户端不能在主WINS服务器或者备份WINS服务器上刷新名字,则名字被释放。
名字释放
如果WINS客户端正常关机,它将向WINS服务器对自己注册的每个Netbios名字发送名字释放请求,其中包含自己的IP地址和需要释放的Netbios名字。当收到名字释放请求后,WINS服务器检查自己的数据库是否具有匹配的名字注册,如果WINS服务器遇到数据库错误或者此Netbios名字注册到不同的IP地址上,则向WINS客户端发起拒绝名字释放消息,否则向WINS客户端发起接受名字释放消息,在数据库中将指定的Netbios名字标记为不活动的。
如果WINS客户端非正常关闭,则不会向WINS服务器发送名字释放请求,WINS服务器会保留此名字直到名字注册的生存时间过期。
名字解析
对于NetBIOS名字的解析,默认过程如下:
· 检查本地的NetBIOS名字缓存;
· (由节点类型决定)查询WINS服务器;如果主WINS服务器不可用,则WINS客户端在向主WINS服务器发送三次解析请求后,切换到备份WINS服务器;
· (由节点类型决定)NetBIOS广播查询本地网络;
· 查询Lmhosts文件,如果配置为这样做,此文件位于%systemroot%System32DriversEtc目录下。
是否查询WINS服务器和执行Netbios广播查询以及它们之间的优先级,会根据Windows网络客户的节点类型的不同而不同。对于每个Windows网络客户,它的节点类型决定了它处理Netbios名字解析时的方式,你可以运行ipconfig/all来观看自己的节点类型,如下图所示中的Node Type:
节点类型具有以下四种:
0x1 Broadcast(B节点):只使用NetBIOS广播查询本地网络,不查询WINS服务器;
0x2 Peer-Peer (P节点):只向WINS服务器发起查询请求,不使用Netbios广播;
0x4 Mixed (M节点):先使用Netbios广播,解析失败后再向WINS服务器发起查询;
0x8 Hybird (H节点):先向WINS服务器发起查询,解析失败后再发起Netbios广播解析;
默认情况下客户端计算机配置为B节点,在配置WINS服务器后,会将节点类型修改为H节点。你可以手动修改节点类型:
· 对于自动获取IP地址的客户端计算机,你可以通过修改DHCP服务器中的046项WINS/NBT节点类型来进行修改;
· 而对于具有静态IP地址的客户端计算机,你可以通过在注册表中修改
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNetBTParametersDhcpNodeType
DWORD键值的值来进行。
数据库复制
单个WINS服务器可以为10000个客户端计算机提供Netbios名字服务,不过从负载均衡和容错的角度,微软建议你将WINS服务器成对使用。此时,你需要配置WINS服务器之间的复制。
WINS服务器具有两种复制伙伴模式:推和拉。当WINS服务器配置为推模式时,当WINS数据库产生更新时,会通知自己的配置为拉伙伴模式的WINS服务器;而当WINS服务器配置为拉模式时,会定期联系配置为推伙伴模式的WINS服务器,比较WINS数据库版本号从而决定是否需要进行复制。
推模式和拉模式的区别在于:推伙伴模式下的WINS服务器会在数据库修改时通知自己的复制伙伴,而拉伙伴模式下的WINS服务器会在计划的时间周期联系自己的复制伙伴。所以,当两台WINS服务器之间具有较为快速的链路连接时,应使用推模式;反之则使用拉模式。
安装WINS服务器
安装WINS服务器的过程非常简单,过程如下:
· 点击开始,控制面板,再点击添加/删除程序,然后在弹出的添加/删除程序对话框上点击添加/删除Windows组件;
· 在弹出的Windows组件向导对话框,勾选网络服务下的Windows Internet名称服务(WINS),点击确定,然后点击下一步;此时,Windows组件向导会安装WINS服务器,安装过程中可能会提示你插入安装光盘。
安装好后,你需要在客户端计算机的TCP/IP高级属性中配置客户使用此WINS服务器,如下图所示:
管理WINS服务器
点击管理工具下的WINS进入WINS服务器管理控制台,如下图所示:
如果显示为无法找到该WINS服务器的错误(如下图所示),则需要先在服务中启动Remote Registry服务。
WINS服务器的管理非常简单,它的管理任务主要分为管理记录和管理数据库复制这两部分,我在下面分别给大家介绍:
管理记录
默认情况下WINS服务器中不会显示已有的注册记录,你可以右击活动注册,然后选择显示记录来显示已注册的记录,
在弹出的显示记录对话框上,你可以根据记录名称、记录IP地址、记录的所有者、记录类型来对记录进行筛选,默认情况下即为显示所有记录,在此我显示所有记录,直接点击立即查找按钮,
此时,右侧窗口出现了已注册的记录。
右击其中的某条记录,你可以点击属性查看记录属性或者点击删除来删除注册的记录,
对于删除记录操作,具有以下两种方式,如图所示:
· 只从此服务器上删除记录:只是从本地WINS服务器上删除此记录,通常在单个WINS服务器场景下使用;
· 复制删除的记录到别的服务器(逻辑删除):主要应用在具有多个WINS服务器作为复制伙伴的场景,选择此操作后此记录被标记为已逻辑删除,然后复制到其他的WINS服务器。此选项主要是防止此记录在本地WINS服务器删除后,从其他WINS服务器复制而生效。
此外,你可以在WINS服务器上创建静态映射,如下图所示,从而将某个Netbios名字固定指向某个IP地址。
管理数据库复制
首先,我们需要创建复制伙伴。右击复制伙伴,点击新建复制伙伴,
在弹出的新建复制伙伴对话框,输入伙伴WINS服务器地址,点击确定。此时,WINS服务器会向输入的IP地址发起Netbios会话和RPC连接,
如果通讯成功则会在复制伙伴中列出此WINS服务器的名字和IP地址,默认情况下复制伙伴均为推/拉类型,你可以进行修改。右击此WINS服务器,点击属性;
然后在高级属性中配置复制伙伴类型和复制参数,如下图所示:
通过WINS服务器,你就可以实现减少Netbios广播流量和跨网段解析Netbios名字这两大优点,下图给大家展示一下跨网段解析Netbios名字:
这台客户计算机的IP地址为10.2.1.9,和WINS服务器(10.1.1.5)并不位于相同的子网,但是通过WINS服务器,可以解析和自己不同网段的WINS服务器的Netbios名字(munich)。
理解Windows网络中的名字解析
TCP/IP协议通信是基于IP地址的,但是,谁会记住那一串单调的数字呢?因此,大家基本上都是通过访问计算机名字,然后通过某种机制将计算机名字解析为IP地址来实现。此时,名字解析机制就变得特别重要。在Windows Server 2003中,提供了两种名字解析方式:NetBIOS和DNS,它们具有各自不同的解析机制。
注:无论是NetBIOS名字还是DNS名字,都是计算机名字,只是使用不同的格式而已。
首先,给大家介绍一下Windows系统中的名字组成。当你安装Windows系统的时候,你必须为计算机输入一个长度不超过15个字符的名字,这个计算机名字将作为NetBIOS名字,同时也作为DNS名称的主机名。NetBIOS名字是平面性的,最大长度为15个字符(完整的NetBIOS服务名称是16个字符,其中最后一个字符用户不可配置,用于定义NetBIOS服务类型),在任何一个NetBIOS广播域中,某个确定的NetBIOS名字必须是唯一的,即只能有某一个确定的计算机拥有此NetBIOS名字。和NetBIOS名称不同,DNS名称是具有层次性的,主机名只是完整的DNS名称-称为完全限定域名(fully qualified domain name,FQDN)的一部分而已。FQDN除包括主机名外,还包含主机所在的域名,例如DNS名称 www.winsvr.org,则www是主机名,winsvr.org则是这台主机所存在的域的域名。
在名字组成中,涉及了以下术语:
· NetBIOS名字:一个NetBIOS名字用于唯一识别绑定到某个网络适配器主要IP上的NetBIOS服务,可以通过广播、WINS服务器或Lmhosts文件来进行解析。NetBIOS名字为15个字符,和计算机名字相同;如果计算机名字长度超过15个字符则为前15个字符,如果不足15个字符则使用0进行填充。完整的NetBIOS服务名称为16个字符,其中第16个字符用于定义服务类型,用户不可配置。
· 主机名:通常代表FQDN的第一部分,例如,FQDN www.winsvr.org的主机名是 www。一般情况下,计算机名称也作为主机名。当你在安装时指定计算机名称或者在系统属性的计算机名标签中修改时,则同时指定了NetBIOS名字和主机名。
· 主域名后缀:主域名后缀指定计算机在名字注册和名字解析时所使用的域名后缀,你可以在系统属性的计算机名标签中修改。通常主域名后缀也称为主域名或者域名,例如,www.winsvr.org的主域名后缀是winsvr.org。
· 连接指定后缀:连接指定后缀指分配给某个网络适配器的DNS后缀,例如,一个连接指定后缀通常是subnet2.winsvr.org。当计算机具有连接到不同子网的多个网络适配器时,通过连接指定后缀,可以实现让不同子网中的客户通过不同的FQDN来访问这台主机上连接对应子网的网络适配器。
· 完全限定域名(FQDN):完全限定域名是完全标识网络上一台计算机的DNS名字。一个FQDN由“.”连接主机名和主域名后缀而产生,例如,www.winsvr.org。通常完全限定域名又称为DNS名字。
对于NetBIOS名字和DNS名字,主要区别如下:
| NetBIOS名字 | DNS名字 |
类型 | 平面 | 层次 |
组成字符限制 | Unicode字符,数字 | A~Z,a~z,0~9,和连字符“-” |
最大长度 | 15个字符 | DNS域名的每一节最大长度为63字节,FQDN长度最大为255字节 |
名字解析方式 | 广播 WINS服务器 Lmhosts文件 | DNS服务器 Hosts文件 |
通讯协议端口 | UDP 137 | UDP 53 |
那么,NetBIOS名字和DNS名字各自的作用和使用范围是什么呢?
NetBIOS实际上不是一个命名系统,而是一个使用在Windows网络中的应用程序编程接口,它允许计算机相互进行连接和通讯。NetBIOS名字是微软在Windows 2000之前的Windows系统中采用的标准名称解析方式;在Windows 2000之后,采用DNS协议作为首选名称解析方式,但是仍然保留了对Netbios协议的支持,称之为Netbios over TCP/IP。当你在使用计算机名字进行访问,例如,使用server1share1来访问网络共享时,则是通过NetBIOS来进行名字解析。同时,网上邻居和计算机浏览器服务依赖于NetBIOS协议。
注:计算机如何区别用户输入的名字是NetBIOS名字还是DNS名字呢?这是通过判断用户输入的名字中是否包含“.”来决定。如果包含则认为是DNS名字,如果不包含则认为是NetBIOS名字。
注意我在前面关于名字组成的时候,对于NetBIOS名字,提到一个NetBIOS广播域的概念,这是因为NetBIOS协议的广播特性。默认情况下NetBIOS协议基于本地局域网中的UDP广播,这样的好处是速度快、无需额外配置,缺点是广播不能跨越网段和增加了网络流量,因此微软推出了WINS(Windows Internet Name Service)服务器,当计算机配置为使用WINS服务器时,它直接和WINS服务器进行单播通讯,这样可以避开NetBIOS协议使用广播时的这两大缺陷。
对于NetBIOS名字的解析,默认过程如下:
· 检查本地的NetBIOS名字缓存;
· 查询WINS服务器;
· NetBIOS广播查询本地网络;
· 查询Lmhosts文件,如果配置为这样做,此文件位于%systemroot%System32DriversEtc目录下
DNS是Windows 2000及其后Windows系统的首选名字解析方式,它也是TCP/IP协议族中的标准名字解析机制。计算机通过和配置的DNS服务器进行通讯来解析域名。和NetBIOS相比,DNS提供了更好的扩展性、安全性以及和Internet的兼容性,同时DNS服务也是活动目录的基础服务。
对于DNS名字的解析,过程如下:
· 检查本地的DNS缓存(Hosts文件中的配置已经加载到DNS缓存中);
· 检查DNS服务器;
在Windows 2000及以后的Windows系统中,首选使用DNS方式进行名字解析,但是这两种名字解析机制是可以共用的。并且从用户惯性的角度,建议保留NetBIOS名字解析。不过,从网络性能的角度,当部署使用NetBIOS名字解析时并且计算机超过15台时,建议部署WINS服务器。
本文PDF档