“网络基本输入/输出系统” (Network Basic Input/Output System, NetBIOS)是一种标准的应用程序编程接口(A P I),1983年由Sytek公司专为IBM开发成功。NetBIOS为网络通信定义了一种编程接口,但却没有详细定义物理性的“帧”如何在网上传输。1985年,IBM创制了NetBIOS扩展用户接口(NetBIOS Extended User Interface, NetBEUI) ,它同NetBIOS接口集成在一起,终于构成了一套完整的协议。由于NetBIOS接口变得愈来愈流行,所以各大厂商也开始在其他如TCP/IP和IPX/SPX的协议上实施NetBIOS编程接口。到目前为止,全球已有许多平台和应用程序需要依赖于NetBIOS,其中包括Windows NT、Windows 2000、Windows 95和Windows 98的许多组件。
注意 Windows CE并不支持NetBIOS API,只是用TCP/IP作为其传送协议,并同时支持NetBIOS的名字与名字解析。
Win32 NetBIOS接口向后兼容于早期的应用程序。本章要讨论的是NetBIOS编程基础。首先向大家介绍的是NetBIOS的一些基本知识,从NetBIOS的名字及LANA编号开始,接着,我们围绕NetBIOS提供的基本服务展开讨论,比如面向会话和“无连接”通信等等。在每一节,都展示了一个简单的客户机和服务器示例。在本章最后,我们陈列了程序员需留意的一系列陷阱以及易犯的错误。在本书的附录 A中,大家可找到一份命令索引,其中对每个NetBIOS命令都进行了总结,包括必要的参数,以及对其行为的简单说明。
OSI 网络模型
“开放系统互连” (O S I)模型从一个很高的层次对网络系统进行了描述。 O S I模型总共包含了七层。从最顶部的“应用层”开始,一直到最底部的“物理层” ,这七个层完整阐述了最基本的网络概念。图1 - 1展示的正是O S I模型的样子。
图1 OSI网络模型
1.1 Microsoft NetBIOS
如前所述,NetBIOS API实施方案适用于为数众多的网络协议,使得编程接口“与协议无关” 。换言之,假如根据NetBIOS规范设计了一个应用程序,它就能在TCP/IP、NetBIOS甚至IPX/ PX上运行。这是一项非常有用的特性,因为对一个设计得当的 NetBIOS应用程序来说,它几乎能在任何机器上运行,无论机器连接的物理网络是什么。然而,我们也必须留意几个
方面的问题。要想使两个NetBIOS应用(程序)通过网络进行正常通信,那么对它们各自运行的机器来说,至少必须安装一种两者通用的协议。举个例子来说,假定小张的机器只安装了T C P / I P,而小马的机器只安装了N e t B E U I,那么对小张机器上的NetBIOS应用来说,便无法同小马机器上的应用进行通信。
除此以外,只有部分协议实施了NetBIOS接口。Microsoft TCP/IP和NetBEUI在默认情况下已提供了一个NetBIOS接口;然而, IPX/SPX却并非如此。为此,微软专门提供了一个IPX/SPX版本,在其中实现了该接口。在设计网络时,这个问题必须注意。安装协议时,具有NetBIOS能力的IPX/SPX协议通常会自动提醒你注意这方面的问题。例如, Windows 2000提供的协议本身就叫作“ NWLink IPX/SPX/NetBIOS兼容传送协议” 。而在Windows 95和Windows 98中,请留意I P X / S P X协议属性对话框,其中有一个特殊的复选框,名为“希望在IPX/SPX上启用NetBIOS” 。