無(wú)線IP網(wǎng)關(guān)的設(shè)計(jì)與應(yīng)用
網(wǎng)關(guān)軟件運(yùn)行后,用戶通過(guò)菜單命令啟動(dòng)網(wǎng)絡(luò)監(jiān)聽(tīng)線程。網(wǎng)絡(luò)監(jiān)聽(tīng)線程負(fù)責(zé)接收和發(fā)送數(shù)據(jù)報(bào)。網(wǎng)絡(luò)監(jiān)聽(tīng)線程首先從外部讀入初始化信息,包括本機(jī)IP地址、NDIS序號(hào)、網(wǎng)絡(luò)ARP表、路由表。然后裝載VxD程序,并進(jìn)行初始化,完成監(jiān)聽(tīng)的準(zhǔn)備工作。接下來(lái)線程開(kāi)始循環(huán)訪問(wèn)網(wǎng)絡(luò)接收緩沖區(qū)和串口緩沖區(qū),對(duì)其中的IP數(shù)據(jù)報(bào)進(jìn)行分析、轉(zhuǎn)發(fā)。
對(duì)于從網(wǎng)絡(luò)接收緩沖區(qū)得到的數(shù)據(jù)報(bào),網(wǎng)絡(luò)監(jiān)聽(tīng)線程首先對(duì)其目的IP地址進(jìn)行分析,判斷該數(shù)據(jù)分組是否需要轉(zhuǎn)發(fā)。對(duì)于需要轉(zhuǎn)發(fā)的,網(wǎng)關(guān)計(jì)算機(jī)給它加上相應(yīng)的數(shù)據(jù)鏈路的頭信息,并進(jìn)行碼字透明處理后存入串口發(fā)送緩沖區(qū);對(duì)于不需要轉(zhuǎn)發(fā)的數(shù)據(jù)報(bào)不予處理。這樣的處理主要是為局域網(wǎng)中可能存在多個(gè)網(wǎng)關(guān)而設(shè)計(jì)的。
對(duì)于從串口接收緩沖區(qū)得到的數(shù)據(jù)報(bào),網(wǎng)絡(luò)監(jiān)聽(tīng)線程首先提取該數(shù)據(jù)報(bào)的目的IP地址,通過(guò)該IP地址查詢ARP表得到目的主機(jī)的MAC地址。線程在該數(shù)據(jù)報(bào)前加上MAC幀頭,通過(guò)調(diào)用VxD接口函數(shù)發(fā)送該數(shù)據(jù)報(bào)。
3.2.3 串口通信模塊設(shè)計(jì)
串口通信部分為上層網(wǎng)關(guān)功能模塊提供透明傳輸。實(shí)驗(yàn)規(guī)定的串口通信速率很低(4800bps),當(dāng)局域網(wǎng)的數(shù)據(jù)流量增大時(shí),將成為整個(gè)通信的瓶頸。因此,對(duì)這部分軟件的主要要求是在保證通信誤碼率低的基礎(chǔ)上達(dá)到高效。串口通信包括發(fā)送和接收兩部分,以全雙工的方式工作。這樣可以保證串口的工作效率。采用線程的工作方式也便于和整個(gè)軟件其他模塊的協(xié)調(diào)運(yùn)行(如與上層網(wǎng)關(guān)功能模塊之間)。
(1)數(shù)據(jù)發(fā)送模塊
IP數(shù)據(jù)報(bào)的發(fā)送通過(guò)一個(gè)獨(dú)立的線程來(lái)進(jìn)行。由于串口通過(guò)無(wú)線鏈路連接,采用短波通信,誤碼率較高,因此要求一定的傳輸協(xié)議來(lái)保證數(shù)據(jù)的可靠傳輸。實(shí)際實(shí)施時(shí),采用奇校驗(yàn)和停止等待協(xié)議來(lái)保證串口數(shù)據(jù)的可靠傳輸。每一個(gè)字節(jié)的傳輸都采用奇校驗(yàn)方式。在發(fā)送一個(gè)IP數(shù)據(jù)包采用停止等待協(xié)議。每次發(fā)送數(shù)據(jù)時(shí),先查詢是否有確認(rèn)或出錯(cuò)幀要發(fā)送,如果有,則發(fā)送確認(rèn)或出錯(cuò)幀。如果沒(méi)有,則查詢數(shù)據(jù)緩沖區(qū)是否有IP包要發(fā)送。如果有,則從數(shù)據(jù)緩沖區(qū)中取出一個(gè)包,附上幀頭和數(shù)據(jù)起始標(biāo)志進(jìn)行發(fā)送。發(fā)送完數(shù)據(jù)后,等待對(duì)方返回確認(rèn)。如果對(duì)方在規(guī)定時(shí)間內(nèi)沒(méi)有返回確認(rèn)則重新發(fā)送剛才的數(shù)據(jù)。在等待期間不發(fā)送新的數(shù)據(jù),但是如果本地接收數(shù)據(jù)后需要發(fā)送確認(rèn)消息給對(duì)方,則盡快發(fā)送。
在本軟件中,兩個(gè)半網(wǎng)關(guān)用于連接兩個(gè)局域網(wǎng)。對(duì)串口通信的要求是雙向高速。兩個(gè)半網(wǎng)關(guān)可能同時(shí)有大量數(shù)據(jù)要傳送。當(dāng)使用停止等待協(xié)議時(shí),停止等待協(xié)議的等待時(shí)間應(yīng)為對(duì)方發(fā)送最大一個(gè)數(shù)據(jù)包所需要的時(shí)間。根據(jù)實(shí)驗(yàn)得知,在以太網(wǎng)上,最大數(shù)據(jù)包長(zhǎng)度為1500字節(jié),因此,等待時(shí)間應(yīng)為:1500×2×8/4800=5s。這個(gè)時(shí)間是最大等待時(shí)間。在實(shí)驗(yàn)中,得到平均等待時(shí)間為853ms。因此,在軟件中設(shè)置等待時(shí)間為1s。
(2)數(shù)據(jù)接收模塊
接收模塊由消息響應(yīng)函數(shù)完成。先搜索報(bào)文頭,對(duì)報(bào)文頭進(jìn)行處理。再判斷接收幀的類(lèi)型,作出相應(yīng)處理。接收完后,查詢數(shù)據(jù)接收錯(cuò)誤標(biāo)志,如果有錯(cuò)誤發(fā)生,則丟棄該數(shù)據(jù)包;反之,將該數(shù)據(jù)包存入緩沖區(qū)。
4 系統(tǒng)測(cè)試與應(yīng)用前景
WWW是目前Internet網(wǎng)上的主要服務(wù),它是基于TCP/IP的典型應(yīng)用。以這項(xiàng)服務(wù)對(duì)所開(kāi)發(fā)的網(wǎng)關(guān)軟件進(jìn)
行了測(cè)試。實(shí)驗(yàn)表明,網(wǎng)關(guān)軟件原理正確。
由于采用了串口通信技術(shù),該成果可經(jīng)簡(jiǎn)單改裝,用在基于modem的網(wǎng)絡(luò)互連等多方面,如在監(jiān)控系統(tǒng)的
各級(jí)之間、公司總部與分公司、辦事處之間實(shí)現(xiàn)廉價(jià)的LAN互聯(lián)。
評(píng)論