WINS服务的作用及工作原理
WINS 服务的作用及工作原理 我们在理解 Windows 网络中的名字解析一文中已经介绍过了,在 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: 节点类型具有以下四种: 0 x1 Broadcast (B 节点) : 只使用 NetBIOS 广播查询本地网络, 不查询 WINS 服务器; 0 x2 Peer-Peer (P 节点):只向 WINS 服务器发起查询请求,不使用 Netbios 广播; 0 x4 Mixed (M 节点):先使用 Netbios 广播,解析失败后再向 WINS 服务器 发起查询; 0 x8 Hybird (H 节点) : 先向 WINS 服务器发起查询, 解析失败后再发起 Netbios 广播解析; 默认情况下客户端计算机配置为 B 节点,在配置 WINS 服务器后,会将节点类 型修改为 H 节点。你可以手动修改节点类型: 对于自动获取 IP 地址的客户端计算机,你可以通过修改 DHCP 服务器中的 046 项 WINS/NBT 节点类型来进行修改; 而对于具有静态 IP 地址的客户端计算机,你可以通过在注册表中修