張 勝,李瑞民
(上海文化廣播影視集團(tuán)技術(shù)運(yùn)營中心,上海 200041)
物理隔斷計算機(jī)網(wǎng)絡(luò)間的實時通信設(shè)計
張勝,李瑞民
(上海文化廣播影視集團(tuán)技術(shù)運(yùn)營中心,上海 200041)
摘要:基于TCP/IP的網(wǎng)絡(luò)普遍存在各種安全問題,對于安全級別較高的單位,采用物理隔斷的方式又帶來了成本增加和數(shù)據(jù)難以共享等問題。要解決這一問題,可以通過在物理隔斷網(wǎng)絡(luò)之間采用串口連接的方式進(jìn)行通信,具體的方式是:通過串口連接兩個物理網(wǎng)絡(luò),兩個網(wǎng)絡(luò)中,如果需要與對方網(wǎng)絡(luò)進(jìn)行通信,則將數(shù)據(jù)按著本設(shè)計要求將數(shù)據(jù)發(fā)送給本網(wǎng)串口連接程序,該程序會自動將數(shù)據(jù)由串口傳送給對方網(wǎng)絡(luò)串口連接程序,而對方程序可以將數(shù)據(jù)按要求再轉(zhuǎn)送給該網(wǎng)絡(luò)中指定的用戶,從而實現(xiàn)了實時通信。通過測試驗證,該方式可以傳送文件、實時數(shù)據(jù)、網(wǎng)絡(luò)數(shù)據(jù)包等多種形式,并且設(shè)計可行和有效。
關(guān)鍵詞:物理隔斷;串口通信;實時通信;數(shù)據(jù)共享
通過網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)共享,這一模式在給企業(yè)、個人生活帶來極大方便的同時,也帶來了網(wǎng)絡(luò)的安全問題,如蠕蟲類病毒、網(wǎng)絡(luò)攻擊。雖然防火墻、網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation,NAT)、代理服務(wù)器等技術(shù)可以避免部分攻擊,但仍然難以解決全部問題,為此,在一些安全級別較高的單位(如電視臺),往往通過計算機(jī)網(wǎng)絡(luò)物理隔斷技術(shù)[1],并配以行政制度進(jìn)行約束,即在一個單位中,安裝兩套或多套網(wǎng)絡(luò),各網(wǎng)絡(luò)之間完全獨(dú)立,并互不通過網(wǎng)絡(luò)進(jìn)行通信。由于不同單位對網(wǎng)絡(luò)安全的需求存在差異,并對網(wǎng)絡(luò)物理隔斷技術(shù)的理解不同,所以所采用的隔斷技術(shù)也不盡相同[2],如有些單位約定某一臺具體的計算機(jī)始終只能屬于某一個網(wǎng)絡(luò),操作人員如果需要兩個網(wǎng)絡(luò)上的數(shù)據(jù),就需要配兩臺計算機(jī)分別連接兩個網(wǎng)絡(luò),這種方式的安全性很高,但網(wǎng)絡(luò)的建設(shè)、維護(hù)成本太高,網(wǎng)上有大量冗余數(shù)據(jù),且難以同步;還有些單位約定某一臺計算機(jī)在某一時刻,只能屬于某一個網(wǎng)絡(luò),可以通過換插網(wǎng)線或開關(guān)切換不同的網(wǎng)絡(luò),這種做法避免了前者的缺點,但仍然可以會把一個網(wǎng)絡(luò)中的病毒等感染到另一個網(wǎng)絡(luò)中。
需要說明的是,這里的物理隔斷強(qiáng)調(diào)的不僅僅是“無物理連接”,而是指沒有通過TCP/IP協(xié)議連接的網(wǎng)絡(luò)[3]。因此如果兩個網(wǎng)絡(luò)間采用的是基于TCP/IP協(xié)議的無線技術(shù),則雖然是物理上兩網(wǎng)絡(luò)沒有相連,但仍然不能算是傳統(tǒng)意義上的網(wǎng)絡(luò)物理隔斷[4-5]。同樣,如果兩個網(wǎng)絡(luò)之間采用串口線、USB專用連接或其他未采用TCP/IP的專用連接線,雖然從物理連線上,兩個網(wǎng)絡(luò)是有線纜連接,但仍然可以稱為物理隔斷網(wǎng)絡(luò)。
以上各種方式,都給網(wǎng)絡(luò)間的數(shù)據(jù)傳輸帶來了麻煩,尤其是網(wǎng)絡(luò)間的實時通信。鑒于此,本文從物理隔斷網(wǎng)絡(luò)的實時通信出發(fā),設(shè)計出一套實時通信的方式。
1系統(tǒng)模型設(shè)計
如前所述,兩個物理隔斷網(wǎng)絡(luò)之間想實現(xiàn)實時通信,可以采用通過串口、USB或其他專用連接的方式,USB連線相當(dāng)于專用設(shè)備,造價較高,串口則相對便宜,并且不需要定制,因此,下文采用串口直連線的方式進(jìn)行設(shè)計。
串口作為早期微型計算機(jī)上主要的通信方式,和網(wǎng)口相比,有很多相同和不同之處,主要體現(xiàn)在如下幾個方面:速度上網(wǎng)口一般固定為百兆或千兆比特每秒,而串口則有多種組合可選,且速度要慢得多,以常用的38 400 bit/s為例,也只有百兆的約1/2 600。協(xié)議上,由于串口采用直連,協(xié)議簡單,因此不會受到攻擊和病毒感染。
根據(jù)串口這些特點可以知道,二者速度差別很大,要實現(xiàn)數(shù)據(jù)互換,存儲轉(zhuǎn)發(fā)肯定是需要的。
1.1系統(tǒng)結(jié)構(gòu)
如圖1所示,A網(wǎng)絡(luò)和B網(wǎng)絡(luò)之間,由一根或多根串口線連接,為了方便描述,將連接線的串口稱為“專用串口”,而將連接入本網(wǎng)的串口稱為“串口網(wǎng)絡(luò)”,二者功能是完全一樣的。同時,A網(wǎng)絡(luò)和B網(wǎng)絡(luò)構(gòu)成對等網(wǎng)絡(luò),互為主備,因此二者的結(jié)構(gòu)是一樣的。要主動發(fā)送的一方可以通過網(wǎng)線、串口線、文件接收要發(fā)送的數(shù)據(jù),然后通過兩網(wǎng)絡(luò)之間的串口線傳到對方。
圖1 連接結(jié)構(gòu)圖
在圖1中,網(wǎng)絡(luò)模塊指的是有個想通過網(wǎng)絡(luò)SOCKET進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳輸,例如想通過IE上網(wǎng);實時數(shù)據(jù)是指緊急、需要馬上處理的數(shù)據(jù),例如網(wǎng)絡(luò)雙方需要進(jìn)行網(wǎng)絡(luò)聊天;串口數(shù)據(jù)則屬于一般性串口通信,例如需要通過串口監(jiān)看某一個串口設(shè)備;文件讀寫,則是文件級的數(shù)據(jù)同步。
在這種結(jié)構(gòu)下,在兩個網(wǎng)絡(luò)的邊緣(即連專用串口的計算機(jī))上需要有一個Daemon監(jiān)聽程序,該程序主要完成幾個功能:接收本網(wǎng)的(網(wǎng)絡(luò)、實時數(shù)據(jù)、串口、文件讀寫)的任務(wù),按優(yōu)先級把各項任務(wù)排成一個串行隊列,并依次從串行隊列中取數(shù)據(jù)通過專用串口發(fā)出去;接收專用串口傳送過來的數(shù)據(jù),并根據(jù)數(shù)據(jù)特征拆分成各項任務(wù),并把任務(wù)分發(fā)給各項任務(wù)接受方(網(wǎng)絡(luò)、實時數(shù)據(jù)、串口、文件讀寫)。
1.2文件同步
文件同步方式下無論對哪一方,都需要預(yù)先指定一個發(fā)送目錄和接收目錄。Daemon監(jiān)聽程序定時掃描發(fā)送目錄,當(dāng)發(fā)現(xiàn)“發(fā)送目錄”中有文件時,則自動依次將文件通過專用串口發(fā)送出去;同樣,當(dāng)發(fā)現(xiàn)通過專用串口接收到的數(shù)據(jù)是文件讀寫時,則自動將內(nèi)容寫入到“接收目錄”中。發(fā)送方文件內(nèi)容發(fā)送完畢后,附送一個發(fā)送完畢。每當(dāng)確認(rèn)傳送成功后,將發(fā)送目錄中已傳送的文件刪除或?qū)⑽募苿拥健鞍l(fā)送成功目錄”中,如表1所示。
表1文件同步時序邏輯
ADaemon監(jiān)聽程序BDaemon監(jiān)聽程序1)定時掃描到“發(fā)送目錄”有文件2)發(fā)送至專用串口,并在結(jié)束時發(fā)“發(fā)送完成”3)刪除本地文件或?qū)⑽募苿拥桨l(fā)送成功目錄1)判斷到專用串口有文件同步的數(shù)據(jù)2)將接到的文件保存到“接收目錄”中,接收完畢后,回送“傳送成功”
1.3通信同步
網(wǎng)絡(luò)通信同步則要復(fù)雜很多,上述“網(wǎng)絡(luò)模塊、實時數(shù)據(jù)、串口數(shù)據(jù)”都屬于同信同步的范圍。網(wǎng)速和串口速度的差異較大,網(wǎng)絡(luò)中數(shù)據(jù)包無論大小,發(fā)送和接收的時間可以忽略,但串口發(fā)送和接收由開始到完成則明顯存在延時。因此需要一個隊列來保存來不及發(fā)送的通信數(shù)據(jù)。
1.4優(yōu)先級的處理
對于上述各種功能中,通信量、緊急程度都不一樣,一般來說,緊急程度高的應(yīng)該優(yōu)先得到處理,但如果讓一個不緊急,但數(shù)據(jù)量很小一個任務(wù)長時間等待也不太合理。根據(jù)分析和統(tǒng)計可以得到各種網(wǎng)絡(luò)需求的優(yōu)先級和數(shù)據(jù)量列表如表2所示。
表2幾種常見網(wǎng)絡(luò)需求的優(yōu)先級和數(shù)據(jù)量表
類別優(yōu)先級數(shù)據(jù)量網(wǎng)絡(luò)高中等實時通信最高小串口通信低小文件同步最低大
2實現(xiàn)方式及分析
如前所述,要設(shè)計這樣一個系統(tǒng),需要同時考慮網(wǎng)速和串口速度差異較大、多種任務(wù)需要并行處理、各任務(wù)又具有不同的優(yōu)先級和數(shù)據(jù)量等多種因素。
考慮到串口速度較慢,因此要想同時有網(wǎng)絡(luò)、串口、實時數(shù)據(jù)、文件讀寫,則必須采用存儲轉(zhuǎn)發(fā)的方式,將并行的各項數(shù)據(jù)串行化。即首先設(shè)定一個“發(fā)送隊列”(Send Queue),當(dāng)有數(shù)據(jù)要發(fā)送時,將數(shù)據(jù)追加到隊列的尾部,與此同時,從隊列的頭部不斷取出數(shù)據(jù)傳送給專用串口;另外,當(dāng)監(jiān)測到專用串口有數(shù)據(jù)時,則不斷將新收到的數(shù)據(jù)追加另一個“接收隊列”(Receive Queue)的尾部,并同時把隊列頭部的數(shù)據(jù)提供給各接收程序使用。
要實現(xiàn)這樣的隊列,既可以采用動態(tài)鏈表的形式,又可以采用數(shù)組的方式,且各有利弊。并且要考慮優(yōu)先級,因為可以各有多個發(fā)送隊列和接收隊列。在本系統(tǒng)中,采用了兩個發(fā)送隊列和一個接收隊列,其中兩個發(fā)送隊列分別為緊急隊列和普通隊列,前者用于處理網(wǎng)絡(luò)、串口、實時數(shù)據(jù)等緊急任務(wù),后者用于處理文件讀寫這種普通事件。
對于文件傳送方式,由于文件較大,如果一次處理完,需要很長時間(以常用的38 400 bit/s的速率計算,傳一個1 Mbyte的文件,約需要(1×1 024×1 024÷(38 400÷8)÷60)min≈3.64 min),因此需要把文件分塊。即把一個文件根據(jù)長度分成等長的若干塊。
如圖2所示,整個系統(tǒng)具有實時數(shù)據(jù)、串口模塊、網(wǎng)絡(luò)模塊、文件讀寫4個Daemon監(jiān)聽線程,4個線程各司其職,分別監(jiān)聽各自任務(wù),當(dāng)監(jiān)聽到有任務(wù)時,將任務(wù)寫入到發(fā)送隊列中,其中前3個線程的數(shù)據(jù)發(fā)往緊急發(fā)送隊列,文件讀寫線程發(fā)往普通發(fā)送隊列。專用串口模塊單獨(dú)由一個線程完成,該線程分別從緊急隊列和普通隊列中取數(shù)據(jù),并通過串口發(fā)送出去。
圖2 程序邏輯圖
2.1通信協(xié)議
考慮上述分析,可以定義如下協(xié)議:
typedef struct StructDataSingle{//數(shù)據(jù)塊結(jié)構(gòu)
UCHAR ucCommand;//命令,具體命令有12個。
WORD wLength;//strContent中的有效長度
char strContent[MAXCONTENTLEN]; //內(nèi)容。
}DATASINGLE,*PDATASINGLE;
其中的ucCommand的命令列表如表3所示。
上述命令中,發(fā)送方需要發(fā)什么樣的包,只需要將命令填入ucCommand,將內(nèi)容拆分成小于或等于MAXCONTENTLEN的包,分別填入一個或多個包中,并將長度填入wLength。原則上,拆成多包的,只要不是最后一個包,長度都應(yīng)該是COMMAND_FILECONTENT,其余長度則根據(jù)實際長度而定。COMMAND_NULL是一個可有可無的命令,但對于某些特殊場合也有特殊的用途,比如在傳一個幾百兆的電影的時候,發(fā)送端可以在發(fā)送緩沖區(qū)中加入一些空包,當(dāng)突然有更緊急處理的事,則可以把緊急事務(wù)替代空包。
表3ucCommand的命令列表
分類命令宏(Macro)功能(主要指接收方接到這樣的包后怎么處理)文件傳輸類COMMAND_FILESTART文件傳輸?shù)拈_始,此時strContent包含的是文件名COMMAND_FILECONTENTstrContent包括的是內(nèi)容,并且各塊之間是連續(xù)的COMMAND_FILEENDstrContent是內(nèi)容,并且該塊是當(dāng)前文件的最后一塊COMMAND_FILEABORT取消當(dāng)前正在傳的文件,strContent內(nèi)容不用再考慮實時通信類COMMAND_CHAT實時通信,接收端把strContent把顯示到界面上COMMAND_RUN接收端把strContent作為一個命令在本地執(zhí)行網(wǎng)絡(luò)通信類COMMAND_SOCKSINGLE短的網(wǎng)絡(luò)包,接收端將之轉(zhuǎn)發(fā)出去COMMAND_SOCKSTART長的網(wǎng)絡(luò)包,此時strContent包含的是對方的IP,PortCOMMAND_SOCKCONTENT長的網(wǎng)絡(luò)包內(nèi)容COMMAND_SOCKEND長的網(wǎng)絡(luò)包內(nèi)容,并且該包是此次通令的最后一個包內(nèi)部串口類COMMAND_COM把strContent中的內(nèi)容轉(zhuǎn)發(fā)到本地串口中其他類COMMAND_NULL本包不需要做任何處理,相當(dāng)于填充用
2.2測試驗證
為了驗證上述理論,特制作了一個程序,該程序采用Microsoft Visual C++ 6.0 SP6編制,經(jīng)在Windows XP(SP3)下運(yùn)行,全部實現(xiàn)了上述各功能。將程序分別安裝到技術(shù)網(wǎng)(不對外)和管理網(wǎng)的兩臺計算機(jī)中,這兩臺計算機(jī)分置在兩個相鄰的機(jī)房中,采用串口線直連,每個程序分別設(shè)置了發(fā)送目錄和接收目錄,并共享為各自網(wǎng)絡(luò)所有用戶都可讀可寫。
使用方法如圖3所示,如果某人想從一個網(wǎng)絡(luò)A向另一個網(wǎng)絡(luò)B傳文件,只需要把文件復(fù)制到網(wǎng)絡(luò)A中安裝本程序的計算機(jī)的共享發(fā)送目錄中,若干秒后,網(wǎng)絡(luò)B中的人就可以從網(wǎng)絡(luò)B中安裝本程序的計算機(jī)的共享接收目錄中看到此文件。如果兩邊的人員想進(jìn)行實時聊天,則只需要按協(xié)議要求向本網(wǎng)安裝本程序的計算機(jī)指定端口發(fā)送TCP/UDP數(shù)據(jù),則另一網(wǎng)絡(luò)的另一端在接到該TCP/UDP數(shù)據(jù)后就要將數(shù)據(jù)轉(zhuǎn)發(fā)給指定計算機(jī)的指定端口。
圖3 測試驗證程序檢測示意圖
經(jīng)實驗和一定時間的運(yùn)行,驗證該方法是可行的、有效的。
2.3安全性分析
物理隔斷網(wǎng)絡(luò)的設(shè)計初衷就是兩個網(wǎng)絡(luò)之間不通TCP/IP協(xié)議,因而可以阻止病毒的傳播,可以阻止數(shù)據(jù)的外泄,但在上述設(shè)計中,也仍然會存在很多的安全性問題,如:
1)文件傳輸時,如果所傳的是一個黑客程序或病毒,則傳到目的網(wǎng)絡(luò)中,如果被人為運(yùn)行后,雖然黑客程序或病毒不能通過本系統(tǒng)再將隱患或病毒回傳到源網(wǎng)絡(luò),但仍然會對目的網(wǎng)絡(luò)造成破壞。
2)部分命令,特別是COMMAND_RUN命令,如果傳送的是未授權(quán)的命令,而該命令是在接收端的計算機(jī)上執(zhí)行,仍然會造成很大的損失。
綜合以上各點不難發(fā)現(xiàn),這里的安全問題,實際上是因為使用了串口取代了網(wǎng)口的各項功能,而將網(wǎng)口中的安全問題帶到本系統(tǒng)中。通常,這些安全性的問題可以通過設(shè)計進(jìn)行規(guī)避(比如每發(fā)送文件之前,或接收之后都調(diào)用殺毒軟件檢測一遍,再比如執(zhí)行的命令限制為一些安全的命令,或只對授權(quán)用戶開放使用),并且這些功能本身并不是本設(shè)計中的技術(shù)所致,而是更多地取決于需求和設(shè)計之間的矛盾,這里不再贅述。
3小結(jié)
物理隔斷網(wǎng)絡(luò)之間的數(shù)據(jù)通信一直是一個空白,由于物理隔斷,所以二者只能通過U盤對拷、臨時換插網(wǎng)線等原始方式,不僅操作不方便,而且繁瑣且容易損傷硬件。但本設(shè)計正好解決了這些問題,并且通過上述設(shè)計和驗證不難發(fā)現(xiàn),這種方式對于病毒隔斷、數(shù)據(jù)外泄都有很好的防護(hù)作用,同時對于內(nèi)部數(shù)據(jù)同步,具有方便、簡捷的效果。
參考文獻(xiàn):
[1]任寧寧.有線電視網(wǎng)絡(luò)資源管理系統(tǒng)建設(shè)規(guī)劃及注意事項[J].電視技術(shù),2013,37(4):47-51.
[2]高虎.構(gòu)建高安全管控下的全臺制播網(wǎng)[J].電視技術(shù),2013,37(18):76-79.
[3]唐利峰.一種物理隔離數(shù)據(jù)交換系統(tǒng)的設(shè)計[J].信息技術(shù),2009,33(10):30-32.
[4]袁航空,張勁松,呂露.基于CS6209的串口服務(wù)器/交換機(jī)設(shè)計研究[J].電視技術(shù),2013,37(3):78-81.
[5]張蒲生.物理隔離環(huán)境下數(shù)據(jù)安全轉(zhuǎn)發(fā)的技術(shù)構(gòu)思[J].計算機(jī)應(yīng)用研究,2003,20(1):28-30.
Design of real communication between physical isolation computer network
ZHANG Sheng,LI Ruimin
(ShanghaiMediaGroupCo.,Ltd.,Shanghai200041,China)
Abstract:There are many security issues on TCP/IP network, for some companies which need high-level security, they prefer to adopt mode of physical-isolation network, however this will increased costs and difficult for sharing data. To solve this problem, a serial port between two networks can be deployed, and all the data pass through this serial port. That is to say, there are two specified serial program software at both sides of this serial port. If a software program A in one network want send data to another software program B in another network, the program A can send data to this serial program, and then this serial program will send these data to another network by serial port. In opposite network, another serial program will receive these data, and then send them to the software program B in that network. Through the test for verification, this method can send files, real-time data, and so on. This proves the method is feasible and effective.
Key words:physical isolation; COM communication; data share;real-time communication
中圖分類號:TN919.83
文獻(xiàn)標(biāo)志碼:A
DOI:10.16280/j.videoe.2016.06.023
基金項目:上海市廣播電視臺項目“播出智能監(jiān)管與應(yīng)急輔助系統(tǒng)”
作者簡介:
張勝(1974— ),學(xué)士,工程師,從事廣電領(lǐng)域內(nèi)的系統(tǒng)架構(gòu)、業(yè)務(wù)優(yōu)化的研究與應(yīng)用;
李瑞民(1973— ),工學(xué)博士,高級工程師,從事廣電領(lǐng)域內(nèi)的計算機(jī)安全技術(shù)、網(wǎng)絡(luò)設(shè)備與信號監(jiān)控等領(lǐng)域的研究與應(yīng)用。
責(zé)任編輯:閆雯雯
收稿日期:2016-01-21
文獻(xiàn)引用格式:張勝,李瑞民. 物理隔斷計算機(jī)網(wǎng)絡(luò)間的實時通信設(shè)計[J].電視技術(shù),2016,40(6):127-130.
ZHANG S,LI R M. Design of real communication between physical isolation computer network [J].Video engineering,2016,40(6):127-130.