在回答这个问题之前,我们需要知道什么是NetBIOS名称?NetBIOS名称是NetBIOS协议中所定义的一种和IP地址进行动态绑定从而实现通信和资源共享的标识,它由16个字符组成,其中前15个字符是计算机名(就是下图的计算机全名)+1个由NetBIOS提供的后缀名。
WINS(Windows Internet NameServer)即Windows网际名称服务,它和DNS一样,用来解析IP地址的,只不过WINS是把NetBIOS名转解析IP地址。WINS为NetBIOS名称提供名字注册、更新、释放和解析四个服务。这些服务允许WINS服务器维护一个将NetBIOS名链接到IP地址的动态数据库,大大减轻了对网络交通的负担。
在默认状态中,网络上的每一台计算机的NetBIOS名字是通过广播的方式来提供更新的,也就是说,假如网络上有n台计算机,那么每一台计算机就要广播n-1次,对于小型网络来说,这似乎并不影响网络交通,但是当大型网络来说,加重了网络的负担。因此WINS对大中型企业来说尤其重要。
1.注册
客户机A一按启动,就向TCP/IP配置中指定的WINS服务器发送一个名称查询请求(请求签订合同),要求注册其NetBIOS名和IP地址,如果WINS在线,它首先检查自己的数据库中是否已有该NetBIOS名,如客户机B与该名同名,则WINS以500毫秒为间隔向B发送三次名称查询请求,用以确定B是否仍然还在上班,如收到响应,则向A发出一个负的名称注册(negative name registration)。A注册失败;如果没有响应,则A注册成功,该WINS服务器会将这一对应关系(重新)记录在自己的数据库中,并向该客户机返回一个注册成功的消息,其中包括一个指定的生存周期 TTL(Time to Live)——它的存在表明了WINS客户机只是一个钟点工,此时合同签订成功。
一旦A三次联系WINS服务器都失败的话,意味着WINS服务器down机或不可用,这时,如果网络中再无其它的WINS服务器存在,则又回到了无组织无纪律的洪荒状态,WINS客户机会按照上述“广播”的方式来工作。
2.释放
如果WINS客户机A停止某个注册的网络服务或正常关机的时候,该A即针对注册的某个服务或者A的NetBIOS名直接向WINS发出一个包括A机IP地址和NetBIOS名称的释放请求(要求解除合同)。WINS收到该请求后,先检查它的数据库,如果WINS找到了一个对应的记录,则向A发送一个正的名称释放(positive name release)消息作为响应,其中包括了被释放的NetBIOS名称和值为0的TTL,同时在数据库中将这条记录标记为已经释放,合同正式解除;
如果WINS没有找到对应的记录或者该NetBIOS名被指向了另一个IP地址,那么WINS会向A发出一个负的名称释放(negative name release)消息作为回应。合同无法解除。
如果A非正常关机,是不会发出名称释放消息的,显然,WINS服务器的数据库中就会多出一条“假”记录,当B向WINS发出A的地址请求时,WINS仍然会向B给出已不存在了的A的地址信息,当然B不可能再通过这个地址联系到A,最终会出现超时错。在B的网络邻居窗口中,A的存在仅仅证明了A“曾经来过”。
3.更新
默认情况下,WINS服务器数据库更新时间(合同期限)即TTL是六天,如果到时客户机没有发出更新请求(要求续签合同),名称注册即告失效(合同终止),WINS会将该员工从花名册上删除,这就是TTL的作用。
所以一般来说,客户机会在相应的TTL值过去50%也就是三天的时候向服务器发出一次名称刷新请求,说明自己还在任劳任怨的继续上班,当WINS服务器收到该请求后,即向该客户机发出包含了一个新的TTL的名称刷新响应,表示合同已然重签。
4.查询
当A需要联系B的时候,它首先检查缓存,看是否有B的NetBIOS名对应IP地址的记录,如果没有,则向WINS服务器发出该NetBIOS名称的IP查询请求,要求WINS回应其IP 地址。如果没有任何WINS服务器响应,或者某个WINS服务器发出了一个“Requested Name Does Not Exist”(请求的名称不存在)消息,客户机即启用广播的方式查找,如果仍未响应,如果有事先的设置,主机A还要尽最后的努力,去查找自己的数据库文件Lmhost,仍然无效的时候,才善罢甘休。
1.使用广播
如图,计算机A在网络上用UDP 137进行广播,计算机B收到广播后响应自己的IP地址,广播的缺点是:占用太多的带宽,不能跨越子网。
2.使用LMHOSTS文件
C:\Windows\System32\drivers\etc(LMHOSTS地址)
LMHOSTS文件和HOSTS文件非常类似,只不过LMHOSTS文件中对照表的内容是NetBIOS名和IP地址,而不是DNS计算机名和IP地址。例如在LMHOSTS文件中添加了以下记录:192.168.1.1 win2012-1、192.168.1.2 win2012-2。
3.使用WINS服务器
4.使用缓存(NetBIOS Name Cache)
缓存是为了提高NetBIOS名的解析速度而设计的,缓存存在于本地计算机上,当计算机采用以上3种方法取得NetBIOS名的IP地址后,会先把IP地址存储在缓存区内,下次如果还需要解析同一NetBIOS名时,会直接从缓存区里查找。IP地址在缓存区里的存在有一定的时限(默认时是10分钟),时限到时缓存的记录会被清除 。
实际上计算机是采用之前介绍的几种方法结合起来进行NetBIOS名的解析,如何结合与NetBIOS的节点类型有很大的关系,使用ipconfig/all命令可以查看计算机所采用的NetBIOS节点类型。
(默认是指先采用什么节点,例如M节点:先采用B节点的方式,如果成功则停止请求,否则就采用B节点的方式)
如果网络中没有WINS服务器,则系统默认使用B节点的方法,如果系统中至少有一台WINS服务器,则系统默认使用H节点的方法。
实验拓扑图
实验用VBox虚拟机来模拟WINS服务器与客户机,虚拟机之间采用内部网络的网络连接方式,其中Win2012-1(系统Windows Server 2012r2)来充当WINS服务器,Win2012-2和Win2102-3为WINS客户机
1.配置IP地址,关闭防火墙
Win2012-1
网卡1
IP:192.168.1.1
SM:(subnet mask子网掩码):255.255.255.0
GW(gateway网关):192.168.1.254
DNS:192.168.1.1
Win2012-2
网卡1
IP:192.168.1.2
SM:(subnet mask子网掩码):255.255.255.0
GW(gateway网关):192.168.1.254
DNS:192.168.1.1
Win2012-3
网卡1
不手动配置IP地址,选择自动获取IP地址
2.安装WINS服务
右上角选择管理,在下拉列表中单击添加角色和功能
一直按下一步到“功能”选项进行选择WINS服务,然后再一路下一步直至安装完成后关闭
在右上角选择工具,在下拉列表中找到WINS
下图据是WINS服务的配置界面,服务的安装到这就完成啦!
3.配置WINS
Win2012-2客户机:
打开网络属性面板,双击ipv4,进入配置ip地址界面下的高级选项
选择指定WINS服务器地址(这里是Win2012-1的地址)
点击添加后按确定离开ip地址配置和以太网属性界面
回到Win2012-1的WINS服务单击活动注册就能找到我们注册的信息啦
如果没有显示结果,右键活动注册选择显示记录
在弹出的窗口中选择立即查找
就能看到结果啦
4.测试WINS
在Win2012-2中可通过cmd命令nbtstat -n来查询注册信息
在Win2012-1中ping下Win2012-2的NetBIOS名(不打后缀名),结果如下
5.动态配置WINS服务
不会配置DHCP服务的小伙伴可在这传送 http://blog.csdn.net/kamroselee/article/details/79251830
在DHCP服务的配置中可指定WINS服务器的地址
在ip地址中指定WINS服务器的地址(这里是Win2012-1的地址)添加后一直下一步
在Win2012-3ip地址配置界面中选择自动获取ip地址后查看网络详细信息
可以看到在服务器分发ip地址的同时也会把指定的WINS服务器地址分发下来
-----------------------------------------------------分割线------------------------------------------------------
至此WINS服务器就配置完了,如果文章有什么错误或者模糊的地方,欢迎大家在评论里指出来,我会及时更正的,谢谢。