NetBios通信程序设计基础.doc
文本预览下载声明
NetBios通信程序设计基础
NetBios通信程序设计基础2010年07月15日星期四10:42NetBios通信程序设计基础
转自天极网络
NetBios协议我们已经说过,NetBios提供了会话层服务,它按对应层能理解的特定协议同远程机器上对应层进行通信。因此,NetBios还指定了一系列协议命令和网络层协议,以允许两台远程机器进行通信。我们将这些协议的实现称为NetBios驱动程序。NetBios驱动程序可以是能够按照指定的NetBios协议同另一远程NetBios驱动程序进行通信的任一程序,处理或设备驱动程序等。下面将要介绍,NetBios驱动程序还提供了NetBios接口。NetBios协议由一系列协议命令组成,每一条协议命令都对应于要在网络上传送的一帧。如图所示,每一个NetBios帧都要封装在LLC帧中,而LLC帧又要封装在MAC帧中。每一条NetBios驱动程序命令都将导致驱动程序向一个或多个已知或未知的接收方NetBios驱动程序发出这样的一个或多个NetBios包。NetBios接口前面已介绍过,NetBios层提供的是会话层服务,其实现称为NetBios驱动程序。但是,如果只有这些驱动程序或NetBios层本身,并不能实现通信。若想实现通信,NetBios层的客户机应当访问NetBios提供的服务具体访问可经由程序设计接口完成。NetBios提供了一系列标准的程序设计接口,应用程序可以利用这些接口在局域网间进行通信。大多数局域网软件商(例如Microsoft,IBM和Novell)都提供具有这些接口的NetBios驱动程序。因为这些接口事实上已成了标准,所以,将基于NetBios的应用程序从一个局域网软件环境不加修改或稍加修改地移至另一个局域网软件环境中运行是可行的。再说一遍,支持这些接口是NetBios驱动程序的义务,由NetBios驱动程序负责将每一个NetBios接口调用转换成相应的一个或多个NetBios的协议包。下面按照它们所提供的服务分类介绍一下NetBios接口。说明一下,这里所说的实体是指,利用NetBios接口同其他实体(包括本身)进行通信的任何处理,或关联着NetBios名的任何处理。NetBios名是个16安节域,多余部分用空格(20H)填充。命令服务NetBios为在网络上增加、删除、查找已命名NetBios实体提供了相应的接口。任何NetBios实体都可通过NetBios Add Name(增加名)接口使自己同一个NetBios名关联起来,该名在整个网络中具有唯一性。比如说,注册进入网络的每一个用户通常都有一个唯一的NetBios名,以便彼此之间能够区分开来。同时,一个实体可以登记成一个组名的一部分,多个实体可以将它们自己同这个组名相关联。例如,某一公司财务科的所有会计可以共享一个组名(或称别名),如ACCOUNTS,其后,发往该组名的消息将同时发往所有会计。当然,每一个会计还可有一个唯一的名(如注册ID或用户ID),以便发送和接收其个人消息。会话服务NetBios为创建、破坏或使用设置在任二个NetBios实体之间的会话提供了一系列接口。若想使用会话管理工具,NetBios实体首先应当通过Add Name接口将自己同一个唯一名关联起来。在两个实体间设置了会话后,他们可以使用各自喜好的Send和Receive接口发送和接收数据缓冲区,缓冲区最大可达128KB-2字节=字节。大多数NetBios应用程序都利用这些服务来发送和接收数据包。数据表服务NetBios提供了一系列接口,来发送和接收称为数据表(datagram)的数据包。并不能保证数据表一定能成功地发送和接收,NetBios只是简单地尽其最大的能力发送和接收实体所提供的数据表。数据表最大可有64KB-1字节=65535字节长。可发送给一个实体,也可以广播方式了送给网络中所有实体。杂务服务为获取安装在结点上的网络适配器卡的状态和动态复位适配器提供了相应的接口,它还为取消实体先前发出的命令提供了相应的接口。NetBios程序设计前面根据OSI模型讨论了一般的网络规则以及NetBios提供的服务,还介绍了NetBios提供的网络应用程序可用来进行网络通信的大量接口(由NetBios驱动程序实现),这里,再介绍一下如何在Windows应用程序中使用这些接口。NetBios程序设计中最容易混淆的是,并不是每个NetBios接口都有一个API函数,取而代之的是,Windows只提供了一个函数(NETBIOSCALL),这个函数以一个数据结构作为输入,虽然数据结构中的字段是固定的,但程序设计人员可以通过一个特定字段??称为命令字段??的值,来表明想使用哪一个NetBios服务。下面列出数据结构中的诸字段,说明每一个字段的含义,并给出
显示全部