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