1.1.3 NetBIOS编程(www.cppentry.com)基础(1)
NetBIOS是用于网络的基本输入/输出系统,是一个应用程序接口,用于源与目的地之间的交换,即能够支持计算机应用程序与设备通信时要用到的各种具有明确而简单的通信协议,必须用特殊的命令序列来调用NetBIOS。
在参考层次模型中,NetBIOS处于表示层和会话层之间,是参考模型的高层。因此其接口程序的应用在很大程度上(并且从本质上)与较低层次的各种活动隔离开。它支持IEEE 802.2的逻辑链路控制协议。现在NetBIOS正迅速地成为不同操作系统环境下普遍使用的通信平台,这些操作系统包括PC DOS、OS/2、Unix和Windows。
1. 处理过程
NetBIOS提供会话服务的建立过程如下。
(1) 建立会话
该过程类似于C/S模式中的连接建立过程,在此不再讨论。需注意的是,NetBIOS的Client方是采用Call呼叫对方,而不是Connect。
(2) 传送数据
因为NetBIOS的会话服务是以双工流的形式实现的,因此会话双方(或多方)均可以同时发送或接收数据,而无须考虑对方的状态。
NetBIOS的命令发送支持两种模式,一种是send,其数据块最大长度为64KB,且位于连续的内存空间;另一种则是chain send命令。顾名思义,它是以多个缓冲区(两个)提供发送数据的,因此该命令一次可最大传送64KB×2的数据。与此对应的NetBIOS接收命令有如下3种。
receive:它以建立会话时所获得的唯一标识对方的会话号为句柄接收数据。
receive any:该命令可从一个name建立的多个会话上取得数据。
receive any-any:它可从任何会话上接收任何数据。
(3) 终止会话
当会话一方发出hang up命令后,即可终止对话,并释放相应的资源。
2. NetBIOS命令
NetBIOS作为一种接口,拥有许多实现某些功能的接口。最为常用的NetBIOS命令如表1-3所示。
表1-3 NetBIOS命令一览表
|
类 别< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
命 令 |
命令代码 |
功能说明 |
|
wait |
no wait |
|
名字管理 |
add name
add group name
delete name |
30h
36h
31h |
b0h
b6h
b1h |
增加本地唯一名
增加本地小组名
删除本地名字 |
|
数据报服务 |
send datagram
send broadcast
receive datagram
receive broadcast |
20h
22h
21h
23h |
a0h
a2h
a2h
a3h |
发送数据报
发送广播数据报
接收数据报
接收广播数据报 |
|
会话服务 |
call
listen
send
chain send
send no-ack
chain send no-ack
receive
receive any
hang up |
10h
11h
14h
17h
71h
72h
15h
16h
12h |
90h
91h
94h
97h
f1h
f2h
95h
96h
92h |
呼叫建立会话
侦听建立会话
按会话号发送数据 按会话号发送双缓冲数据
按会话号发送数据,不应答
发送双缓冲数据,不应答
按会话号接收数据
从任意会话号上接收数据
拆除当前会话 |
|
一般命令 |
repeat
adapter status
session status
cancel
unlink |
32h
33h
34h
35h
70h |
b3h
b4h |
初始化网络适配器
读取网络适配器状态
按名字读取当前会话状态
撤消一个NetBIOS命令
断开远程连接 |