基于Net-BIOS协议的网络通信设计
扫描二维码
随时随地手机看文章
1 引言
在所有文件服务器存在的计算机网络系统中,要实现PC机之间的通信或信息交换,一般是由一个工作站把信息写入文件服务器,然后由另一个工作站去读取,这是工作站之间信息交换的一种方式,但不是最佳、最方便的方式。因为使用文件服务器,速度慢、需占用硬盘空间,还要经常对文件系统进行维护、管理等等。而且用户对文件系统的访问权也受到权限等因素的限制,更重要的是服务器的存在,提高了网络系统的成本及造价。所以,在很多情况下采用Net-BIOS支持下的PC机之间直接通信则更为简捷、经济。
2 数据通信与NetBIOS协议
数据通信通常包含以下几项内容:
一 是连接的建立和拆除。即在计算机网络通信中,为使源主机与目标主机进行通
信,通常通信前先在它们之间建立连接,即建立一条由源主机到目标主机的通信线路,在通信结束时拆除已建立的连接。
二 是数据传送控制。也就是在通信双方建立起连接之后,利用该连接传送用户数
据。另外还有错误的检测及处理等。
NetBIOS(NETWORK BASICINPUT/OUTPUTSYSTEM)网络基本输入/输出系统,是一种用于计算机之间进行通信的专用程序,是计算机网络通信中的重要协议之一。它支持TCP/IP、MAP/TOP、IEEE和OSI等协议,而且NetBIOS正迅速成为不同操作系统环境下普遍使用的编程平台。NetBIOS基本概念包括NetBIOS名字、NetBIOS命令、NetBIOS通信方式等,下面分别给以说明。
NetBIOS名字:NetBIOS是一种按名字工作的系统,每个网络工作站都有一个名字。由NetBIOS保留一张名字表,每个名字由16字符组成,在进行通信时,信息的源地址和目的地址都是用名字来表示的。
NetBIOS命令:NetBIOS的功能是由一系列命令完成的。NetBIOS命令返回方式有两种WAIT和NO_WAIT。前者要等到命令完成之后,才返回你的程序,后者则立即返回你的程序,并带回“立即返回代码”,待命令执行完时又返回一个“最终返回代码”。
NetBIOS通信方式:NetBIOS有两种通信方式,即数据报通信方式和会话通信方式。数据报通信是一种非面向连接的通信方式,每个数据报中的信息长度必须小于或等于512个字节,而会话通信是一种面向连接的通信方式,信息长度限制在65535字节以内。
3 NetBIOS支持下的网络通信系统的设计
3.1正确选择通信方式
我们知道NetBIOS的通信方式有两种,即数据报通信方式和会话通信方式。那么,在通信系统设计时究竟采用哪种通信方式呢?这要根据我们的实际情况,进行具体分析。
由于数据报通信时,把每一个报文作为一个独立的数据报处理,即各个数据报之间相互独立,单独传送,不用建立和拆除会话连接,所以简单方便、通信速度快。但这种机制在通信过程中不检测信息是否安全到达目的地,系统出现差错时,无出错提示信息,而且每个数据报信息长度受到512字节的限制,所以,数据报通信仅适用于待发送的信息是一系列互不相关的报文及一些简单对话、小数据的场合。
而会话通信方式是在通信之前先在发送方和接收方之间建立会话连接,然后进行会话通信,在会话通信过程中,发出的所有报文都能正确无误地送到目的地。如果发出的报文不止一个,那么通信协议将保证收到报文次序和发送报文次序一致。如果报文在传送过程中发生差错,通信协议会自动地进行重发,加以更正,并有出错信息提示。最后,在送完报文之后撤除会话连接。
由此可见,会话通信过程比较复杂,通信速度较慢,又通信中信息长度限制在65535字节以内,所以,会话通信适于点到点之间多次往复式对话、大数据场合。
数据报通信方式和会话通信方式各自都有优点和缺点。数据报方式适合于小批量的传送数据,可靠性不高,数据传送时易发生错误或丢失,但它的传送过程比较简单,易于实现,易于管理。会话方式可传送的信息量大,可靠性高,但传送过程比较复杂,在发送信息之前先要建立会话连接,信息传送结束后要撤除会话连接,不易于管理。我们在具体设计通信系统时,要根据自己的实际情况、实际要求和实际传送数据量的大小选择合适的通信方式。若A工作站和B工作站之间以数据报文方式通信,步骤如下:
工作站A 工作站B
a增加名字A 增加名字B
b发送报文给B 接收
c接收 发送报文给A
d删除名字A 删除名字B
若A工作站和B工作站之间以会话方式通信,步骤如下:
工作站A 工作站B
a增加名字A 增加名字B
bListen Call A站
c发送报文给B 接收报文
d接收报文 发送报文给A
eHang up B站 Hang up A站
f删除名字A 删除名字B
3.2正确选择NetBIOS命令的返回方式
NetBIOS命令的返回方式有WAIT(等待)和NO_WAIT(非等待)两种方式。如果采用WAIT方式,则要等到NetBIOS命令完成之后才返回你的程序。如果采用NO_WAIT方式,那么又可以有两种选择:一种是采用轮询方法,即反复查询网络控制块(NCB)中的最终返回代码字段,当它的值从FF变为00时,表示NetBIOS命令完成,返回用户程序。另一种是将一个POST程序的地址告诉NetBIOS,使NetBIOS在完成命令时唤醒该程序,执行一个指定的程序段。这两种方法都是在后台进行的,它们的主要差别在于对网负荷的影响。例如,A站发出一命令,要求B站执行一项较费时的任务,如果A站采用NO_WAIT的轮询方法,不断地询问对方是否完成任务,这样会大大地增加网络负荷,这时尽管轮询比较容易编程,那也不是一种好的选择。我们在通信系统设计时,要综合各种因素,选择合适的NetBIOS命令返回方式。