當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于NetBIOS協(xié)議的網(wǎng)絡(luò)通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

1  引  
  在有文件服務(wù)器存在的計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)中,要實(shí)現(xiàn)PC機(jī)之間的通信或信息交換,一般是由一個(gè)工作站把信息寫(xiě)入文件服務(wù)器,然后由另一個(gè)工作站去讀取,這是工作站之間信息交換的一種方式,但不是最佳、最方便的方式。因?yàn)槭褂梦募?wù)器,速度慢、需占用硬盤(pán)空間,還要經(jīng)常對(duì)文件系統(tǒng)進(jìn)行維護(hù)、管理等等。而且用戶對(duì)文件系統(tǒng)的訪問(wèn)權(quán)也受到權(quán)限等因素的限制,更重要的是服務(wù)器的存在,提高了網(wǎng)絡(luò)系統(tǒng)的成本及造價(jià)。所以,在很多情況下采用Net-BIOS支持下的PC機(jī)之間直接通信則更為簡(jiǎn)捷、經(jīng)濟(jì)。

2  數(shù)據(jù)NetBIOS協(xié)
   數(shù)據(jù)通信通常包含以下幾項(xiàng)內(nèi)容:

 一  是連接的建立和拆除。即在計(jì)算機(jī)網(wǎng)絡(luò)通信中,為使源主機(jī)與目標(biāo)主機(jī)進(jìn)行通
信,通常通信前先在它們之間建立連接,即建立一條由源主機(jī)到目標(biāo)主機(jī)的通信線路,在通信結(jié)束時(shí)拆除已建立的連接。

    二  是數(shù)據(jù)傳送控制。也就是在通信雙方建立起連接之后,利用該連接傳送用戶數(shù)
據(jù)。另外還有錯(cuò)誤的檢測(cè)及處理等。

    NetBIOS(NETWORK BASICINPUT/OUTPUTSYSTEM)網(wǎng)絡(luò)基本輸入/輸出系統(tǒng),是一種用于計(jì)算機(jī)之間進(jìn)行通信的專用程序,是計(jì)算機(jī)網(wǎng)絡(luò)通信中的重要協(xié)議之一。它支持TCP/IP、MAP/TOP、IEEE和OSI等協(xié)議,而且NetBIOS正迅速成為不同操作系統(tǒng)環(huán)境下普遍使用的編程平臺(tái)。NetBIOS基本概念包括NetBIOS名字、NetBIOS命令、NetBIOS通信方式等,下面分別給以說(shuō)明。

    NetBIOS名字:NetBIOS是一種按名字工作的系統(tǒng),每個(gè)網(wǎng)絡(luò)工作站都有一個(gè)名字。由NetBIOS保留一張名字表,每個(gè)名字由16字符組成,在進(jìn)行通信時(shí),信息的源地址和目的地址都是用名字來(lái)表示的。

    NetBIOS命令:NetBIOS的功能是由一系列命令完成的。NetBIOS命令返回方式有兩種WAIT和NO_WAIT。前者要等到命令完成之后,才返回你的程序,后者則立即返回你的程序,并帶回“立即返回代碼”,待命令執(zhí)行完時(shí)又返回一個(gè)“最終返回代碼”。

    NetBIOS通信方式:NetBIOS有兩種通信方式,即數(shù)據(jù)報(bào)通信方式和會(huì)話通信方式。數(shù)據(jù)報(bào)通信是一種非面向連接的通信方式,每個(gè)數(shù)據(jù)報(bào)中的信息長(zhǎng)度必須小于或等于512個(gè)字節(jié),而會(huì)話通信是一種面向連接的通信方式,信息長(zhǎng)度限制在65535字節(jié)以內(nèi)。

3   NetBIOS支持下的網(wǎng)絡(luò)通信系統(tǒng)的設(shè)計(jì)

3.1正確選擇通信方式
    我們知道NetBIOS的通信方式有兩種,即數(shù)據(jù)報(bào)通信方式和會(huì)話通信方式。那么,在通信系統(tǒng)設(shè)計(jì)時(shí)究竟采用哪種通信方式呢?這要根據(jù)我們的實(shí)際情況,進(jìn)行具體分析。
    由于數(shù)據(jù)報(bào)通信時(shí),把每一個(gè)報(bào)文作為一個(gè)獨(dú)立的數(shù)據(jù)報(bào)處理,即各個(gè)數(shù)據(jù)報(bào)之間相互獨(dú)立,單獨(dú)傳送,不用建立和拆除會(huì)話連接,所以簡(jiǎn)單方便、通信速度快。但這種機(jī)制在通信過(guò)程中不檢測(cè)信息是否安全到達(dá)目的地,系統(tǒng)出現(xiàn)差錯(cuò)時(shí),無(wú)出錯(cuò)提示信息,而且每個(gè)數(shù)據(jù)報(bào)信息長(zhǎng)度受到512字節(jié)的限制,所以,數(shù)據(jù)報(bào)通信僅適用于待發(fā)送的信息是一系列互不相關(guān)的報(bào)文及一些簡(jiǎn)單對(duì)話、小數(shù)據(jù)的場(chǎng)合。

    而會(huì)話通信方式是在通信之前先在發(fā)送方和接收方之間建立會(huì)話連接,然后進(jìn)行會(huì)話通信,在會(huì)話通信過(guò)程中,發(fā)出的所有報(bào)文都能正確無(wú)誤地送到目的地。如果發(fā)出的報(bào)文不止一個(gè),那么通信協(xié)議將保證收到報(bào)文次序和發(fā)送報(bào)文次序一致。如果報(bào)文在傳送過(guò)程中發(fā)生差錯(cuò),通信協(xié)議會(huì)自動(dòng)地進(jìn)行重發(fā),加以更正,并有出錯(cuò)信息提示。最后,在送完報(bào)文之后撤除會(huì)話連接。

    由此可見(jiàn),會(huì)話通信過(guò)程比較復(fù)雜,通信速度較慢,又通信中信息長(zhǎng)度限制在65535字節(jié)以內(nèi),所以,會(huì)話通信適于點(diǎn)到點(diǎn)之間多次往復(fù)式對(duì)話、大數(shù)據(jù)場(chǎng)合。

    數(shù)據(jù)報(bào)通信方式和會(huì)話通信方式各自都有優(yōu)點(diǎn)和缺點(diǎn)。數(shù)據(jù)報(bào)方式適合于小批量的傳送數(shù)據(jù),可靠性不高,數(shù)據(jù)傳送時(shí)易發(fā)生錯(cuò)誤或丟失,但它的傳送過(guò)程比較簡(jiǎn)單,易于實(shí)現(xiàn),易于管理。會(huì)話方式可傳送的信息量大,可靠性高,但傳送過(guò)程比較復(fù)雜,在發(fā)送信息之前先要建立會(huì)話連接,信息傳送結(jié)束后要撤除會(huì)話連接,不易于管理。我們?cè)诰唧w設(shè)計(jì)通信系統(tǒng)時(shí),要根據(jù)自己的實(shí)際情況、實(shí)際要求和實(shí)際傳送數(shù)據(jù)量的大小選擇合適的通信方式。若A工作站和B工作站之間以數(shù)據(jù)報(bào)
方式通信,步驟如下:

  
  工作站A        工作站B
a增加名字A         增加名字B
b發(fā)送報(bào)文給B         接收 
c接收              發(fā)送報(bào)文給A
d刪除名字A          刪除名字B


  若A工作站和B工作站之間以會(huì)話方
式通信,步驟如下:

   工作站A          工作站B
a增加名字A          增加名字B
bListen             Call A站
c發(fā)送報(bào)文給B        接收?qǐng)?bào)文
d接收?qǐng)?bào)文          發(fā)送報(bào)文給A
eHang up B站       Hang up A站
f刪除名字A          刪除名字B


3.2正確選擇NetBIOS命令的返回方式
    NetBIOS命令的返回方式有WAIT(等待)和NO_WAIT(非等待)兩種方式。如果采用WAIT方式,則要等到NetBIOS命令完成之后才返回你的程序。如果采用NO_WAIT
方式,那么又可以有兩種選擇:一種是采用輪詢方法,即反復(fù)查詢網(wǎng)絡(luò)控制塊(NCB)中的最終返回代碼字段,當(dāng)它的值從FF變?yōu)?0時(shí),表示NetBIOS命令完成,返回用戶程序。另一種是將一個(gè)POST程序的地址告訴NetBIOS,使NetBIOS在完成命令時(shí)喚醒該程序,執(zhí)行一個(gè)指定的程序段。這兩種方法都是在后臺(tái)進(jìn)行的,它們的主要差別在于對(duì)網(wǎng)負(fù)荷的影響。例如,A站發(fā)出一命令,要求B站執(zhí)行一項(xiàng)較費(fèi)時(shí)的任務(wù),如果A站采用NO_WAIT的輪詢方法,不斷地詢問(wèn)對(duì)方是否完成任務(wù),這樣會(huì)大大地增加網(wǎng)絡(luò)負(fù)荷,這時(shí)盡管輪詢比較容易編程,那也不是一種好的選擇。我們?cè)谕ㄐ畔到y(tǒng)設(shè)計(jì)時(shí),要綜合各種因素,選擇合適的NetBIOS命令返回方式。

3.3分組長(zhǎng)度的限制及差錯(cuò)和超時(shí)
    數(shù)據(jù)報(bào)通信,每個(gè)報(bào)文長(zhǎng)度上限為512字節(jié)。會(huì)話通信中,每個(gè)報(bào)文長(zhǎng)度上限為
65535字節(jié)。那么,當(dāng)我們要傳送的數(shù)據(jù)信息大小超過(guò)所規(guī)定的限制值時(shí)怎么辦呢?這時(shí)可采用分組處理的辦法,按照規(guī)定的信息長(zhǎng)度限制,將數(shù)據(jù)分為若干段,對(duì)每一段進(jìn)行一次發(fā)送,在接收端再把它們裝配起來(lái)復(fù)原。另一種方法是依照信息長(zhǎng)度限制規(guī)定來(lái)設(shè)計(jì)一個(gè)數(shù)據(jù)記錄的格式,這樣每個(gè)報(bào)文都可安全發(fā)送。

    無(wú)論采用何種方式的通信,通信過(guò)程中差錯(cuò)是不可避免的,所以差錯(cuò)處理是必不可少的。當(dāng)出現(xiàn)差錯(cuò)時(shí),首先要根據(jù)差錯(cuò)代碼確定差錯(cuò)性質(zhì),并做出相應(yīng)處理,排除錯(cuò)誤之后繼續(xù)執(zhí)行后面的命令。超時(shí)通常是指一個(gè)工作站向另一個(gè)工作站發(fā)出信息到收到對(duì)方應(yīng)答所需時(shí)間的超時(shí)時(shí)限。

    引起超時(shí)的因素很多,一般是因?yàn)榫W(wǎng)絡(luò)過(guò)于繁忙或接收站故障。

3.4調(diào)用NetBIOS功能
    在編寫(xiě)通信程序中,要調(diào)用一個(gè)Net-BIOS功能,必須首先構(gòu)造一個(gè)網(wǎng)絡(luò)控制塊,然后把網(wǎng)絡(luò)控制塊的地址寫(xiě)入ES:BX中,作為指向該控制塊的遠(yuǎn)程地址指針,最后執(zhí)行5CH中斷,使NetBIOS自動(dòng)進(jìn)入ES:BX指定的地址,讀網(wǎng)絡(luò)控制塊信息,從而得知有關(guān)操作信息。下面是網(wǎng)絡(luò)控制塊的格式及所對(duì)應(yīng)的結(jié)構(gòu)定義。

4  NetBIOS支持下的網(wǎng)絡(luò)通信系統(tǒng)的實(shí)現(xiàn)
  作為NetBIOS支持下的網(wǎng)絡(luò)通信系統(tǒng)的實(shí)現(xiàn),我們以會(huì)話通信方式下雙機(jī)通信為
例。

4.1通信硬件環(huán)境要求
兩臺(tái)獨(dú)立的PC機(jī)各自接有網(wǎng)卡,通過(guò)一根同軸電纜線將其相連。同軸電纜的兩端各接50Ω的匹配器,這樣就從物理上連通了兩臺(tái)PC機(jī)。

4.2通信軟件環(huán)境要求
    DOS5.0以上版本啟動(dòng),同時(shí)磁盤(pán)上應(yīng)有以下文件:IPX.EXE網(wǎng)絡(luò)通信協(xié)議;NetBIOS協(xié)議支持用戶程序;TC高級(jí)語(yǔ)言環(huán)境,用以編寫(xiě)用戶通信程序。

4.3通信程序
    要實(shí)現(xiàn)兩臺(tái)PC機(jī)間的雙機(jī)通信,必須編寫(xiě)NetBIOS支持下的雙機(jī)通信程序,包括
發(fā)送信息程序SEND.C和接收信息程序RECEIVE.C。其程序流程框圖如下:

程序略。

       這樣在兩臺(tái)PC機(jī)上分別執(zhí)行SEND程序和RECEIVE程序,就可將信息從A站(PC1機(jī))上傳送到B站(PC2機(jī))上,實(shí)現(xiàn)雙機(jī)通信。

5  結(jié)束語(yǔ)


      實(shí)現(xiàn)NetBIOS支持下的計(jì)算機(jī)網(wǎng)絡(luò)通信,可使我們更加快速、方便、經(jīng)濟(jì)地進(jìn)行計(jì)算機(jī)間的數(shù)據(jù)傳送,以達(dá)到數(shù)據(jù)通信與資源共享的目的。通過(guò)網(wǎng)絡(luò)通信,一方面為特定環(huán)境下的用戶實(shí)現(xiàn)計(jì)算機(jī)間的數(shù)據(jù)傳送提供了重要的支持,另一方面也大大地提高了通信網(wǎng)絡(luò)的性能。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉