WINS

Windows网际网路名称服务（Windows Internet Name Service，缩写WINS），是由微软公司所发展出来的一种网路名称转换服务，与DNS类似，WINS可以将NetBIOS电脑名称转换为对应的IP位址。

**概述**
WINS的主要功能如下：- 可让伺服器电脑变成 NetBIOS 的名称伺服器，并且在网路上登录并解析 WINS 的用户端电脑名称，则在TCP/IP上的 NetBIOS 标准协定中加以说明。- WINS 主要是一种动态的复写资料库服务，在主机上所使用的 NetBIOS 名称并解析成网路上使用的 IP 位址- 其目的用来解决在路由环境中解析 NetBIOS 名称的问题，WINS 是 NetBIOS 名称解析最好的解决方式。- WINS 在 Microsoft Windows Server 系列中提供这项元件服务的安装来实行。- 与DNS服务执行的功能类似，不过DNS是将全称域名(FQDN)（例如 www.abc.com）转换为IP位址 。

**解析过程**
虽然 WINS 的作用是解析 NetBIOS 名称，但为了有效地解析名称，用户端需能够动态地新增、移除或更新它们在 WINS 中的名称。特别是 WINS 网路上的用户端名称要如何登录、更新、释放及解析。
较旧版的 Microsoft Windows 作业系统，会使用 NetBIOS 名称来识别及寻找网路上登录或解析名称时，所需要的电脑及其他共用或分组的资源。在 Microsoft 作业系统的旧版中建立网路服务，NetBIOS 名称是必要需求。虽然 NetBIOS 命名通讯协定可与 TCP/IP 之外的网路通讯协定搭配使用，但 WINS 是专为支援「经由 TCP/IP 的 NetBIOS」(NetBT) 而设计的。
WINS 简化了 TCP/IP 型网路中的 NetBIOS 命名空间的管理。
下列说明 WINS 用户端及伺服器相关的一系列典型事件。
WINS 的范例：
# WINS 用户端（主机 A）=> 在WINS 登记 自己的主机名称及IP
# WINS 用户端（主机 B）=> 去寻问 A 主机所在位址（IP）
# WINS-伺服器回应给（B主机）A 的 IP 位址 (192.168.100.20) 回复。
此范例中，会发生下列情况：- 一般情况下在本机若找不到所对应的NetBIOS名称与IP位址时，会发布广播封包来通知邻近的主机，并且回报该寻问的IP。这个动作如果太过频繁，会造成内部网路之间封包的碰撞，因此使用WINS 即可减少这类的问题。每次用户端启动并加入网路时，都会自动进行 WINS 登录，所以动态位址设定变更时，WINS 资料库会自动更新。例如，DHCP 伺服器将一个新增或变更的IP 位址发布到拥有 WINS 功能的用户端电脑上时，此用户端的 WINS 资讯就会更新。- 这不需要使用者或网路系统管理员手动进行变更，让使用者可以直接利用电脑名称来存取网路资源，而不用记忆IP 位址。一般用在Windows的网路环境内使用，并可也减少DNS的负担。WINS SERVER 并不会做广播，而是WINS Client向WINS SERVER注册而WINS SERVER记录下来这段动作为 WINS CLIENT 用广播方式找WINS SERVER来注册，WINS SERVER接受注册之后，再把自己的位置IP传给CLIENT端。
WINS 通讯协定根据为 RFC 1001 及 1002 中指定的 NetBIOS 名称服务所定义的通讯协定，并与其相容，所以它可以与这些 RFC 的其他执行方式一起使用。在 WINS 中复写 NetBIOS 名称资料是 Microsoft 私有技术，并且不能与其他 NetBIOS 名称伺服器一起使用。如Samba Server。

**WINS 的运作方式**
当执行 Microsoft 作业系统的电脑已设定 WINS 伺服器位址（手动或透过 DHCP）来进行其名称解析时，则预设会使用交互式节点（h-node）作为 NetBIOS 名称登录的节点类型，除非已设定另一种 NetBIOS 节点类型。若是 NetBIOS 名称查询及解析，它也会使用 h-node 操作，但会稍有不同。
若是 NetBIOS 名称解析，WINS 用户端通常会执行下列一般操作步骤来解析名称：
# 用户端会检查受查询的名称是否是它所拥有的本机 NetBIOS 电脑名称，若查询远端名称的在本机 NetBIOS名称快取。远端用户端的任何已解析的名称都放置在此快取中，并在其中保留 10 分钟。
# 用户端将 NetBIOS 查询转寄到其已设定的主要 WINS 伺服器中。如果主要 WINS 伺服器无法使用或是没有名称的资料项目而无法回答此查询，用户端就会依照所列出及设定的顺序尝试连络其他已设定的 WINS 伺服器。
# 用户端将 NetBIOS 查询广播到本机子网路中。
# 如果设定使用 Lmhost 档案，用户端就会检查该 Lmhost 档案以对应此查询。
# 用户端会尝试到本机的 Hosts 档案寻找
# 接着到DNS的Cache中的查询
# 最后再到 DNS 伺服器
如果欲解析的电脑名称字元数超过15个字元，或是电脑名称之中有句点存在，则会自动改用DNS主机名称解析方法。步骤2和3动作决定，使用何种 Node Type。

**DNS 与 WINS 的整合**
DNS的Clinet向DNS查询时，DNS找不到相关的资料就去问WINS，让Client端以为DNS知道该名称的位址。
另外有可能遇到Client的电脑不会去DNS注册资料，则有两种情况需要做整合：
# 旧版Windows（95、98）是不会跑去DNS登记的，也不能支援DNS的动态更新
# Stand Alone的电脑无法向DNS注册，原因是DNS可能有设定安全性验证，只能接受加入网域的电脑
因此WINS需要帮忙回答这些Client端的电脑所在的位址。

**WINS 与DNS的差异**
WINS的作用跟DNS的作用有相似的地方，都在做名称解析，但也有不同之处：
事实上Windows NT系统上既有的WINS就是设计用来支援DHCP的运作的，且已成为Microsoft 企业网路整体架构中的一个重要的部份。WINS的作用与DNS类似，都是用来提供多种管理名称的系统服务，例如：将名称转换成IP地址，但是WINS只负责管理NetBIOS所使用的命名空间，而此命名空间与一般DNS所管理的阶层式领域名称并不相同。
此外WINS还能够与DHCP配合在一起使用，也就是说可以先用DHCP指定系统所需要的IP地址，然后再自动地在WINS伺服中注册一个机动的NetBIOS名称。由于WINS的架构并非阶层式的，因此若某一个NetBIOS名称未在WINS伺服中注册，就可以将之视为在网路上根本不存在。由此可知：在所有采用NetBIOS over TCP的网路上WINS可以算是一项必备的工具，其详细的规格请参阅RFC 1001与RFC 1002。

**尖峰处理方式**
WINS 伺服器立即可以处理大量的（传送）伺服器负载。在同时使用大量的 WINS 用户端并尝试在 WINS 中登录其本端名称时（如电源中断），会发生传送处理。当电源供应稍后恢复时，许多使用者启动及同时在网路上登录名称，此时产生了高度的 WINS 流量。具有传送模式支援，WINS 伺服器可以在处理及实际输入更新到 WINS 伺服器资料库之前，先回应这些用户端要求。
在传送处理中，其他用户端的要求是 WINS 伺服器立即回答回应。回应也包含到用户端的各种存留时间（TTL），这可帮助调节用户端登录负载及分配超时要求的处理。这会减慢新的 WINS 用户端重新整理及重试率且调节传送的 WINS 用户端流量。

**使用 WINS 的好处**
为管理 TCP/IP 型网路，WINS 提供了下列好处：
# 支援电脑名称登录及解析的动态名称至IP位址的资料库，进而有效降低NETBIOS的广播风暴。
# 名称及IP位址的资料集中管理减轻对管理 Lmhost 档案的需求。
# 借由许可用户端查询 WINS 伺服器以直接寻找远端系统，可以降低子网路上的 NetBIOS 造成的广播流量。
# 支援网路上早期的 Microsoft Windows 及 NetBIOS 用户端，即使到今天，只要网路上还有旧版本的 Windows 或使用 NetBIOS 的应用程式在，WINS 就有存在的必要允许此类型用户端在每个子网路上，不需本机网域控制站的存在即可浏览远端 Windows 网域的清单。
# 当执行 WINS 对应整合时，可借由启用 DNS 用户端寻找 NetBIOS 资源，以支援 DNS 用户端

**参考资料**
Well-Know Port：
137/tcp Netbios-ns NETBIOS Name Service
138/tcp Netbios-dgm NETBIOS Datagram Service
139/tcp Netbios-ssn NETBIOS Session Service
1512/tcp (WINS) Microsoft's Windows Internet Name Service
1512/udp(WINS) Microsoft's Windows Internet Name Service
 RFC1001 date=20210324034852 、  RFC1002 date=20210324181637 -  NetBIOS over TCP/IP -  Port Assignments for Commonly-Used Services -  Windows Server 2003 Windows Internet Name Service (WINS) -  WINS defined date=20160311073305