?
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命令返回方式。
評論
查看更多