WINS 为注册及查询计算机和组的动态映射 NetBIOS 名提供了一个分布式数据库,WINS 在 NetBIOS 名与 IP 地址之间建立映射,他是基于 TCP/IP 网络中 NetBIOS 名解析的非常好的选择。
12.2.1 WINS 客户机与服务器的通信目的:
§ 在 WINS 客户机启动时它将计算机名、IP 地址、DNS 域名等数据注册到 WINS 服务器的数据库中。
§ 当客户机需要与其它客户机通信时,它可以从 WINS 服务器取得所须的计算机名称、IP 地址、DNS 域名。
12.2.2 WINS 客户机的名称注册
让用户通过一个例子来了解名称注册的过程
如图 12.1 WINS 客户机(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) 发送确认回答,接受客户机的名称请求,并更新数据库中的记录。
12.2.3 WINS 客户机释放(Release)名称
当 WINS 客户机(HOST-C)关机时,它将通知服务器它将不再使用它的注册名,具体操作如下:
1. 当客户机(HOST-C)关机后用户在命令行输入 nbtstat -RR 命令时,客户机将向服务器(WINS-A)发送一个释放请求。
2. 服务器(WINS-A)将数据库中有关客户机(HOST-C)的记录标记为释放。
3. WINS-A 向客户机(HOST-C)发送一个释放确认消息。r
如果名称记录被标记为释放,当其它客户机以相同名称但不同IP地址注册时,服务器可以立即更新记录。
12.2.4 WINS 客户机更新名称注册
为确保 WINS 客户机的注册名称在 WINS 服务器的数据库中为"活动"状态,客户机必须定期更新它的注册名称。
当客户机第一次在向服务器中注册名称时,从服务器返回的确认信息中的 TTL(Time-To-Live)值指定了客户机何时相应更新注册。如果在指定时间内客户机没有更新它的注册,服务器将从它数据库中删除客户机的记录。WINS 数据库中的默认更新时间为 6 天,当更新时间(TTL)达到一半时客户机相应向服务器更新它的注册名称。