WINS为注册及查询计算机和组的动态映射NetBIOS名提供了一个分布式数据库,WINS在NetBIOS名与IP地址之间建立映射,他是基于TCP/IP网络中NetBIOS名解析的最佳选择。
1.1WINS客户机与服务器的通信目的:
§在WINS客户机启动时它将计算机名、IP地址、DNS域名等数据注册到WINS服务器的数据库中。
§当客户机需要与其它客户机通信时,它可以从WINS服务器取得所须的计算机名称、IP地址、DNS域名。
1.2WINS客户机的名称注册
让用户通过一个例子来了解名称注册的过程
如图12.1WINS客户机(HOST-C)直接向WINS服务器(WINS-A)发送名称注册请求。
WINS-A可以通过向HOST-C"接收"或"拒绝"的回答表示它对注册请求的接受或拒绝。服务器是通过以下因素来作出回答的:
§在WINS-A的数据库中是否已存在此名称
§请求的名称是独立名称还是组名称
假如名称不在数据库中,则接受这个新注册,并进行以下操作:
1.将HOST-C名输入到数据库中,并添加一个时间戳及标记上WINS服务器所有者的ID。
时间戳是用来计算更新间隔的(默认为:6天)
2.向HOST-C发送接受注册的回答,在回答信息中还包含客户机可以使用此名称的时间(TTL)
假如HOST-C的名称已经存在于数据库中且与请求的IP地址相同,那么就由已存在名称的情况和所有权决定:
1.假如数据库中的记录标记为"活动"切归服务器(WINS-A)所有,则服务器更新该记录的时间戳并向客户机发送"接受"回答。
2.假如数据库中的记录被标记为"释放、过期"或记录归另一个WINS服务器所有,则当前注册被作为新注册来处理,时间戳、所有者、版本ID等全部更新,并向客户机发送"接受"回答。
假如HOST-C的名称已经存在于数据库中但与请求的IP地址不同,WINS服务器必须避免重名的发生,假如数据库中的记录已被标记为过期或释放,那么可以接受注册请求。但当记录仍为活动状态时,WINS服务器(WINS-A)需要向网络上注册该名称的客户机咨询(challenge),以便确定它是否还在网络上,具体操作如下:
1.WINS-A首先向客户机(HOST-C)发送一个等待确认的回答(WACK),并利用TTL指定等待时间。
2.WINS-A接着向注册此名称的客户机发送一个名称查询请求。
3.假如客户机仍然在网络上,它会给服务器WINS-A发送一个确认回答。
4.WINS-A,向客户机(HOST-C)发送拒绝名称注册的回答,以拒绝客户机的名称注册请求。
5.假如服务器WINS-A的查询请求没有得到相应的回答,它再同时发出两个查询请求,假如三次查询均未得到回答,那么查询过程结束,服务器WINS-A向客户机(HOST-C)发送确认回答,接受客户机的名称请求,并更新数据库中的记录。
1.3WINS客户机释放(Release)名称
当WINS客户机(HOST-C)关机时,它将通知服务器它将不再使用它的注册名,具体操作如下:
1.当客户机(HOST-C)关机后用户在命令行输入nBTstat-RR命令时,客户机将向服务器(WINS-A)发送一个释放请求。
2.服务器(WINS-A)将数据库中有关客户机(HOST-C)的记录标记为释放。
3.WINS-A向客户机(HOST-C)发送一个释放确认消息。r
假如名称记录被标记为释放,当其它客户机以相同名称但不同IP地址注册时,服务器可以立即更新记录。
1.4WINS客户机更新名称注册
为确保WINS客户机的注册名称在WINS服务器的数据库中为"活动"状态,客户机必须定期更新它的注册名称。
当客户机第一次在向服务器中注册名称时,从服务器返回的确认信息中的TTL(Time-To-Live)值指定了客户机何时相应更新注册。假如在指定时间内客户机没有更新它的注册,服务器将从它数据库中删除客户机的记录。WINS数据库中的默认更新时间为6天,当更新时间(TTL)达到一半时客户机相应向服务器更新它的注册名称。