设为首页 加入收藏

TOP

1.1.3 NetBIOS编程基础(3)
2013-10-07 15:51:49 来源: 作者: 【 】 浏览:82
Tags:1.1.3 NetBIOS 编程 基础

1.1.3  NetBIOS编程(www.cppentry.com)基础(3)

③ 名字删除:系统关机或提供的工作站服务结束时,会删除其占用的NetBIOS名。

通过NetBIOS名字和共享的目录名,就能够定位Windows计算机上的资源。Microsoft使用UNC的形式来确定一个网络资源的位置,一个UNC以双反斜线开始,接下来是提供资源计算机的NetBIOS名字,然后是该台计算机上提供资源的共享名,接下来就是下面的目录和文件名。如\\ntserver\share\files

因此使用一个资源的命令格式如下所示:

  1. C:\> net use f: \\ntserver\share  
  2. C:\> f:  
  3. F:\> 

(3) 名字服务器的工作原理

由于B-node广播会在网络上产生大量的信息流,尤其是在网络是由多个子网构成的时候,而使用路由器本来就是要隔离广播信息,可是为了进行名字解析,就不得不转发B-node广播信息包,这就达不到缩减无用网络流量的目的。

使用名字服务器进行解析就能避免这个问题,客户通过对名字服务器进行查询而非广播,信息流就不必传播到各个子网上,就能减少广播数据,减轻网络的负担,节省带宽,并且能有效地提高名字解析的速度及准确性。

实际存在的Windows网络甚至很少利用名字服务器进行名字解析,这就使得这些网络名字解析存在很大问题,常常会出现不同计算机的网络邻居列表不同,根本原因就是广播方式是没有保证的,必须转向名字服务器方式才能解决名字解析问题。

当普通NetBIOS计算机和NBNS服务器进行通信时,有如下4个不同的通信过程。

名字注册:每台NetBIOS计算机启动时,都在名字服务器上注册。这样就保持了数据库的自动更新,并具备动态更新的特性。名字服务器将返回确认信息,以及这个名字的生存期TTL。如果客户要求的名字已经被占用了,服务器就查询占用这个名字的客户是否还在网络上,以判断这个名字是否可以再次被使用。这种情况主要发生在Windows计算机死机后重新登记的过程中,因为此时在计算机死机之前,它在名字服务器中登记的名字还存在,如果名字服务器简单地拒绝提供 名字,那么这个计算机就无法再次获得自己的名字。只有在真正发生冲突的情况下,客户的名字注册才会失败。

名字更新:由于每个名字都存在一个生存期TTL,那么当经历了这个TTL一半的时候,客户会向服务器进行更新请求,刷新服务器上的TTL设置。

名字释放:客户停机时会与服务器通信释放其占用的NetBIOS名字,其名字TTL超时也会使得服务器释放这个名字。

名字识别:客户可以向NBNS服务器发送查询名字的请求,进行名字解析。

在某些情况下,客户没有设置支持名字服务器,或者使用的客户软件还不支持名字服务器进行解析,可以通过设置一个 WINS代理,由它来在广播数据和查询名字服务器之间进行转换,它可以帮助客户注册并回应客户的广播查询。

4. 何谓NetBEUI

NetBEUI是网络操作系统使用的NetBIOS协议的加强版本。它规范了在NetBIOS中未标准化的传输帧,还加了额外的功能。传输层驱动器经常被Microsoft LAN Manager(微软局域网管理器)使用。

NetBEUI执行OSI LLC2协议。NetBEUI是原始的PC网络协议和IBM为LanManager(局域网管理器)服务器设计的接口。本协议稍后被微软采用,作为它们的网络产品的标准。它规定了高层软件通过NetBIOS帧协议发送、接收信息的方法。本协议运行在标准802.2数据链协议层上。

5. NetBIOS范围

NetBIOS范围ID为建立在TCP/IP(叫做NBT)模块上的NetBIOS提供额外的命名服务。NetBIOS范围ID的主要目的是隔离单个网络上的NetBIOS通信和那些有相同NetBIOS范围ID的节点。NetBIOS范围ID是附加在NetBIOS名称上的字符串。两个主机上的 NetBIOS范围ID必须匹配,否则两主机无法通信。NetBIOS范围ID允许计算机使用相同的计算机名,不同的范围ID。范围ID是NetBIOS名称的一部分,使名称唯一。

6. NetBIOS控制块

NetBIOS控制块(NCB)是所有NetBIOS应用程序访问NetBIOS服务时都要用到的一个程序设计结构,并且是唯一的一个。设备驱动程序也使用类似的结构。NetBIOS控制块的定义结构如下:

  1. typedef struct _NCB {  
  2. BYTE ncb_command;  
  3. BYTE ncb_retcode;  
  4. BYTE ncb_lsn;  
  5. BYTE ncb_num;  
  6. DWORD ncb_buffer;  
  7. WORD ncb_length;  
  8. BYTE ncb_callName[16];  
  9. BYTE ncb_name[16];  
  10. BYTE ncb_rto;  
  11. BYTE ncb_sto;  
  12. BYTE ncb_post;  
  13. BYTE ncb_lana_num;  
  14. BYTE ncb_cmd_cplt;  
  15. BYTE ncb_reserved[14];  
  16. } NCB, *PNCB;  

有关上述结构中各个参数的具体说明,请读者朋友们参考相关资料,本书在此将不再详细讲解。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.1.3 NetBIOS编程基础(2) 下一篇1.1.4 小试牛刀--编程实现获取MAC..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·常用meta整理 | 菜鸟 (2025-12-25 01:21:52)
·SQL HAVING 子句:深 (2025-12-25 01:21:47)
·SQL CREATE INDEX 语 (2025-12-25 01:21:45)
·Shell 传递参数 (2025-12-25 00:50:45)
·Linux echo 命令 - (2025-12-25 00:50:43)