NetBIOS是网络基本的输入/输出系统,是一个应用于程序接口,用于数据源与目的地之间的数据交换。即能够访问支持计算机应用程序和设备通信时要用到的各种服务,具有明确而简单的通信协议,必须用非凡的命令序列来调用NetBIOS服务。
首先我们来了解一下NetBIOS的基本知识。
一.NetBIOS 的基础
1。在网络层次中,NetBIOS是处于表示层和会话层之间,是参考模型的高层。因此其接口程序的应用在很大程度上并且从本质上与较低层次的各种活动隔分开。它支持IEEE802.2 的逻辑链路控制(LLC)协议。现在NetBIOS正迅速地成为不同操作系统环境下普遍使用的数据通信平台,这些操作系统包括PC DOS,OS/2,UNIX 和Windows。
2。NetBIOS的出现是在1984年8月IBM PC的网络适配器中,是由Sytek公司为IBM设想的。它采用宽带同轴电缆,提供每秒2MB的数据传输突发率,使用了流行的工业标准CSMA/CD(多访问载波侦听/载波检测)作为访问协议,这种协议首次出现在IEEE 802.3 以太网标准中。
3。NetBIOS的应用服务:NetBIOS提供四种应用服务,它们分别为:命名支持,数据报支持,会话支持和通用命令。
(1).命名支持:每个NetBIOS 网络积适配器在网络中都使用一个或多个网络名来标识自己,以区别于其他的网络适配器。网络名由16个字符组成。
(2).数据报支持:当一个适配器在网络中激活后,在计算机上的应用程序就可以用NetBIOS与驻留在同一个或不同计算机上的其他应用通信。它们之间的应用通信可以使用数据报来进行。
数据报是一条短信息,它的长度随NetBIOS实现方法的不同而不同,不能保证数据的正确传输。也不接纳来自接纳方的指示,如:在存在,未加电或不接纳数据报,这样 在网络发生故障时,发出的数据报可能不会被任何计算机接纳到。
数据报有两种类:广播型和定向型。广播型是完全不区分接纳者的数据报,可以使用NetBIOS的Send Broadcast Datagram命令来发送数据,接纳方可调用NetBIOS Receive Broadcaset Datagram命令来接纳数据。定向型是指定数据报接纳者的组名,任何一方都可以调用NetBIOS Send Datagram命令发送数据,接纳方可以调用NetBIOS Receive Datagram命令来接纳发送过来的数据。
(3).会话支持:在NetBIOS应用通信中的第二种形式是会话通信了,它支持可以在两个应用程序之间创建一个牢靠的双向数据通信连接,并能保持较长时间。这种连接有时也称为虚电路。相互通信的应用可以驻留在同一台计算机上(本地会话)或驻留在不同的计算机上(近程会话)。
会话通信比数据报通信的优点有:对于每个被发送的信息,发送前能得知对方接纳预备情况,而数据报通信只提供信息的发送状态。
可以使用NetBIOS的Listen命令来创建会话,Listen命令援用NetBIOS命令表中的一个名字。另一端则使NetBIOS Call 命令,Call命令要用到其NetBIOS命名表中的名字,这个名字必须与另一端的的应用程序所用的名字相匹配,这样两边的名字相匹配是两个应用创建会话的依据,在Listen 命令和 Call 命令执行完后,就建立会话了。注重的是:首先调用 Listen命令,然后再调用 Call 命令,这个顺序不能颠倒。
会话创建后,每个客户端都收到一个会话已创建的指示,得到一个字节的无符号返回值,表示会话与适配器之间的联。创建会话后,每个客户端都可以调用NetBIOS的Send和Receive命令来传输和接纳数。
(4).通用命令:NetBIOS的通用命令提供了五项NetBIOS服务,分别是:Reset(复位适配器),Adapter Status(显示适配器状态),Cancel and Unlink(撤消及断开命令),Find Name(匹配名字)和 Trace(跟踪命令)。
1).Reset 命令强迫适配器进入初始化状态,终止所有的会话,并删除NetBIOS 命名表中除永久节点名以外的所有名字。
2).Adapter Status 命令用来查询NetBIOS适配器,以获取有关操作信息,如:发现LAN 错误数和适配器NetBIOS命名表,用于知道近程计算机和适配器是否都被挂起,还是只要计算机被挂起。这是对近程适配器的状态进行查询的一个很好的实现方法。
3).Cancel and Unlink:Cancel 命令是使应用程序结束尚未执行完的命令。Unlink命令是答应RPL引导的PC Network LAN 适配器,从RPL服务器上脱开,它只对基本适配器有效,通常返回一个 0 值,表明请求成功。4).Find Name 命令用于找出一个由Find Name 命令指定的符号名的适配器,在多个适配器共用一个组名时,它们都可以同时都应答,但是只要一个应答将返回给发出请求的应用端。
5).Trace 命令将激活对所有发向NetBIOS 接口的命令进行跟踪,其基本用途是为诊断程序提供支持。
4.NetBIOS命令的调用:
在应用程序中调用 NetBIOS 命令之前,将内存的一个64 字节区域先清空为 0 ,这样防止内存原有的数据导致NetBIOS 命令结束时,NetBIOS 错误地进入其他内存区域。应用程序使用这个区域创建一个 NetBIOS 控制块(NCB)。调用 NetBIOS 命令时,要根据命令的要求,填充控制块的域,所以假如没有正确填充这些NCB域,会导致用户计算机运行的挂起,这样会破坏整个系统。
NetBIOS 中利用的一个函数就是 Netbios(),此函数用于解说和执行指定的信息控制块(NCB)。函数定义如下:UCHAR Netbios(PNCB pncb);参数 pncb 用于描述网络控制块结构的指针。