張 勝,李瑞民
(上海文化廣播影視集團技術運營中心,上海 200041)
物理隔斷計算機網絡間的實時通信設計
張勝,李瑞民
(上海文化廣播影視集團技術運營中心,上海 200041)
摘要:基于TCP/IP的網絡普遍存在各種安全問題,對于安全級別較高的單位,采用物理隔斷的方式又帶來了成本增加和數據難以共享等問題。要解決這一問題,可以通過在物理隔斷網絡之間采用串口連接的方式進行通信,具體的方式是:通過串口連接兩個物理網絡,兩個網絡中,如果需要與對方網絡進行通信,則將數據按著本設計要求將數據發送給本網串口連接程序,該程序會自動將數據由串口傳送給對方網絡串口連接程序,而對方程序可以將數據按要求再轉送給該網絡中指定的用戶,從而實現了實時通信。通過測試驗證,該方式可以傳送文件、實時數據、網絡數據包等多種形式,并且設計可行和有效。
關鍵詞:物理隔斷;串口通信;實時通信;數據共享
通過網絡進行數據共享,這一模式在給企業、個人生活帶來極大方便的同時,也帶來了網絡的安全問題,如蠕蟲類病毒、網絡攻擊。雖然防火墻、網絡地址轉換(Network Address Translation,NAT)、代理服務器等技術可以避免部分攻擊,但仍然難以解決全部問題,為此,在一些安全級別較高的單位(如電視臺),往往通過計算機網絡物理隔斷技術[1],并配以行政制度進行約束,即在一個單位中,安裝兩套或多套網絡,各網絡之間完全獨立,并互不通過網絡進行通信。由于不同單位對網絡安全的需求存在差異,并對網絡物理隔斷技術的理解不同,所以所采用的隔斷技術也不盡相同[2],如有些單位約定某一臺具體的計算機始終只能屬于某一個網絡,操作人員如果需要兩個網絡上的數據,就需要配兩臺計算機分別連接兩個網絡,這種方式的安全性很高,但網絡的建設、維護成本太高,網上有大量冗余數據,且難以同步;還有些單位約定某一臺計算機在某一時刻,只能屬于某一個網絡,可以通過換插網線或開關切換不同的網絡,這種做法避免了前者的缺點,但仍然可以會把一個網絡中的病毒等感染到另一個網絡中。
需要說明的是,這里的物理隔斷強調的不僅僅是“無物理連接”,而是指沒有通過TCP/IP協議連接的網絡[3]。因此如果兩個網絡間采用的是基于TCP/IP協議的無線技術,則雖然是物理上兩網絡沒有相連,但仍然不能算是傳統意義上的網絡物理隔斷[4-5]。同樣,如果兩個網絡之間采用串口線、USB專用連接或其他未采用TCP/IP的專用連接線,雖然從物理連線上,兩個網絡是有線纜連接,但仍然可以稱為物理隔斷網絡。
以上各種方式,都給網絡間的數據傳輸帶來了麻煩,尤其是網絡間的實時通信。鑒于此,本文從物理隔斷網絡的實時通信出發,設計出一套實時通信的方式。
1系統模型設計
如前所述,兩個物理隔斷網絡之間想實現實時通信,可以采用通過串口、USB或其他專用連接的方式,USB連線相當于專用設備,造價較高,串口則相對便宜,并且不需要定制,因此,下文采用串口直連線的方式進行設計。
串口作為早期微型計算機上主要的通信方式,和網口相比,有很多相同和不同之處,主要體現在如下幾個方面:速度上網口一般固定為百兆或千兆比特每秒,而串口則有多種組合可選,且速度要慢得多,以常用的38 400 bit/s為例,也只有百兆的約1/2 600。協議上,由于串口采用直連,協議簡單,因此不會受到攻擊和病毒感染。
根據串口這些特點可以知道,二者速度差別很大,要實現數據互換,存儲轉發肯定是需要的。
1.1系統結構
如圖1所示,A網絡和B網絡之間,由一根或多根串口線連接,為了方便描述,將連接線的串口稱為“專用串口”,而將連接入本網的串口稱為“串口網絡”,二者功能是完全一樣的。同時,A網絡和B網絡構成對等網絡,互為主備,因此二者的結構是一樣的。要主動發送的一方可以通過網線、串口線、文件接收要發送的數據,然后通過兩網絡之間的串口線傳到對方。

圖1 連接結構圖
在圖1中,網絡模塊指的是有個想通過網絡SOCKET進行網絡數據傳輸,例如想通過IE上網;實時數據是指緊急、需要馬上處理的數據,例如網絡雙方需要進行網絡聊天;串口數據則屬于一般性串口通信,例如需要通過串口監看某一個串口設備;文件讀寫,則是文件級的數據同步。
在這種結構下,在兩個網絡的邊緣(即連專用串口的計算機)上需要有一個Daemon監聽程序,該程序主要完成幾個功能:接收本網的(網絡、實時數據、串口、文件讀寫)的任務,按優先級把各項任務排成一個串行隊列,并依次從串行隊列中取數據通過專用串口發出去;接收專用串口傳送過來的數據,并根據數據特征拆分成各項任務,并把任務分發給各項任務接受方(網絡、實時數據、串口、文件讀寫)。
1.2文件同步
文件同步方式下無論對哪一方,都需要預先指定一個發送目錄和接收目錄。Daemon監聽程序定時掃描發送目錄,當發現“發送目錄”中有文件時,則自動依次將文件通過專用串口發送出去;同樣,當發現通過專用串口接收到的數據是文件讀寫時,則自動將內容寫入到“接收目錄”中。發送方文件內容發送完畢后,附送一個發送完畢。每當確認傳送成功后,將發送目錄中已傳送的文件刪除或將文件移動到“發送成功目錄”中,如表1所示。
表1文件同步時序邏輯

ADaemon監聽程序BDaemon監聽程序1)定時掃描到“發送目錄”有文件2)發送至專用串口,并在結束時發“發送完成”3)刪除本地文件或將文件移動到發送成功目錄1)判斷到專用串口有文件同步的數據2)將接到的文件保存到“接收目錄”中,接收完畢后,回送“傳送成功”
1.3通信同步
網絡通信同步則要復雜很多,上述“網絡模塊、實時數據、串口數據”都屬于同信同步的范圍。網速和串口速度的差異較大,網絡中數據包無論大小,發送和接收的時間可以忽略,但串口發送和接收由開始到完成則明顯存在延時。因此需要一個隊列來保存來不及發送的通信數據。
1.4優先級的處理
對于上述各種功能中,通信量、緊急程度都不一樣,一般來說,緊急程度高的應該優先得到處理,但如果讓一個不緊急,但數據量很小一個任務長時間等待也不太合理。根據分析和統計可以得到各種網絡需求的優先級和數據量列表如表2所示。
表2幾種常見網絡需求的優先級和數據量表

類別優先級數據量網絡高中等實時通信最高小串口通信低小文件同步最低大
2實現方式及分析
如前所述,要設計這樣一個系統,需要同時考慮網速和串口速度差異較大、多種任務需要并行處理、各任務又具有不同的優先級和數據量等多種因素。
考慮到串口速度較慢,因此要想同時有網絡、串口、實時數據、文件讀寫,則必須采用存儲轉發的方式,將并行的各項數據串行化。即首先設定一個“發送隊列”(Send Queue),當有數據要發送時,將數據追加到隊列的尾部,與此同時,從隊列的頭部不斷取出數據傳送給專用串口;另外,當監測到專用串口有數據時,則不斷將新收到的數據追加另一個“接收隊列”(Receive Queue)的尾部,并同時把隊列頭部的數據提供給各接收程序使用。
要實現這樣的隊列,既可以采用動態鏈表的形式,又可以采用數組的方式,且各有利弊。并且要考慮優先級,因為可以各有多個發送隊列和接收隊列。在本系統中,采用了兩個發送隊列和一個接收隊列,其中兩個發送隊列分別為緊急隊列和普通隊列,前者用于處理網絡、串口、實時數據等緊急任務,后者用于處理文件讀寫這種普通事件。
對于文件傳送方式,由于文件較大,如果一次處理完,需要很長時間(以常用的38 400 bit/s的速率計算,傳一個1 Mbyte的文件,約需要(1×1 024×1 024÷(38 400÷8)÷60)min≈3.64 min),因此需要把文件分塊。即把一個文件根據長度分成等長的若干塊。
如圖2所示,整個系統具有實時數據、串口模塊、網絡模塊、文件讀寫4個Daemon監聽線程,4個線程各司其職,分別監聽各自任務,當監聽到有任務時,將任務寫入到發送隊列中,其中前3個線程的數據發往緊急發送隊列,文件讀寫線程發往普通發送隊列。專用串口模塊單獨由一個線程完成,該線程分別從緊急隊列和普通隊列中取數據,并通過串口發送出去。

圖2 程序邏輯圖
2.1通信協議
考慮上述分析,可以定義如下協議:
typedef struct StructDataSingle{//數據塊結構
UCHAR ucCommand;//命令,具體命令有12個。
WORD wLength;//strContent中的有效長度
char strContent[MAXCONTENTLEN]; //內容。
}DATASINGLE,*PDATASINGLE;
其中的ucCommand的命令列表如表3所示。
上述命令中,發送方需要發什么樣的包,只需要將命令填入ucCommand,將內容拆分成小于或等于MAXCONTENTLEN的包,分別填入一個或多個包中,并將長度填入wLength。原則上,拆成多包的,只要不是最后一個包,長度都應該是COMMAND_FILECONTENT,其余長度則根據實際長度而定。COMMAND_NULL是一個可有可無的命令,但對于某些特殊場合也有特殊的用途,比如在傳一個幾百兆的電影的時候,發送端可以在發送緩沖區中加入一些空包,當突然有更緊急處理的事,則可以把緊急事務替代空包。
表3ucCommand的命令列表

分類命令宏(Macro)功能(主要指接收方接到這樣的包后怎么處理)文件傳輸類COMMAND_FILESTART文件傳輸的開始,此時strContent包含的是文件名COMMAND_FILECONTENTstrContent包括的是內容,并且各塊之間是連續的COMMAND_FILEENDstrContent是內容,并且該塊是當前文件的最后一塊COMMAND_FILEABORT取消當前正在傳的文件,strContent內容不用再考慮實時通信類COMMAND_CHAT實時通信,接收端把strContent把顯示到界面上COMMAND_RUN接收端把strContent作為一個命令在本地執行網絡通信類COMMAND_SOCKSINGLE短的網絡包,接收端將之轉發出去COMMAND_SOCKSTART長的網絡包,此時strContent包含的是對方的IP,PortCOMMAND_SOCKCONTENT長的網絡包內容COMMAND_SOCKEND長的網絡包內容,并且該包是此次通令的最后一個包內部串口類COMMAND_COM把strContent中的內容轉發到本地串口中其他類COMMAND_NULL本包不需要做任何處理,相當于填充用
2.2測試驗證
為了驗證上述理論,特制作了一個程序,該程序采用Microsoft Visual C++ 6.0 SP6編制,經在Windows XP(SP3)下運行,全部實現了上述各功能。將程序分別安裝到技術網(不對外)和管理網的兩臺計算機中,這兩臺計算機分置在兩個相鄰的機房中,采用串口線直連,每個程序分別設置了發送目錄和接收目錄,并共享為各自網絡所有用戶都可讀可寫。
使用方法如圖3所示,如果某人想從一個網絡A向另一個網絡B傳文件,只需要把文件復制到網絡A中安裝本程序的計算機的共享發送目錄中,若干秒后,網絡B中的人就可以從網絡B中安裝本程序的計算機的共享接收目錄中看到此文件。如果兩邊的人員想進行實時聊天,則只需要按協議要求向本網安裝本程序的計算機指定端口發送TCP/UDP數據,則另一網絡的另一端在接到該TCP/UDP數據后就要將數據轉發給指定計算機的指定端口。

圖3 測試驗證程序檢測示意圖
經實驗和一定時間的運行,驗證該方法是可行的、有效的。
2.3安全性分析
物理隔斷網絡的設計初衷就是兩個網絡之間不通TCP/IP協議,因而可以阻止病毒的傳播,可以阻止數據的外泄,但在上述設計中,也仍然會存在很多的安全性問題,如:
1)文件傳輸時,如果所傳的是一個黑客程序或病毒,則傳到目的網絡中,如果被人為運行后,雖然黑客程序或病毒不能通過本系統再將隱患或病毒回傳到源網絡,但仍然會對目的網絡造成破壞。
2)部分命令,特別是COMMAND_RUN命令,如果傳送的是未授權的命令,而該命令是在接收端的計算機上執行,仍然會造成很大的損失。
綜合以上各點不難發現,這里的安全問題,實際上是因為使用了串口取代了網口的各項功能,而將網口中的安全問題帶到本系統中。通常,這些安全性的問題可以通過設計進行規避(比如每發送文件之前,或接收之后都調用殺毒軟件檢測一遍,再比如執行的命令限制為一些安全的命令,或只對授權用戶開放使用),并且這些功能本身并不是本設計中的技術所致,而是更多地取決于需求和設計之間的矛盾,這里不再贅述。
3小結
物理隔斷網絡之間的數據通信一直是一個空白,由于物理隔斷,所以二者只能通過U盤對拷、臨時換插網線等原始方式,不僅操作不方便,而且繁瑣且容易損傷硬件。但本設計正好解決了這些問題,并且通過上述設計和驗證不難發現,這種方式對于病毒隔斷、數據外泄都有很好的防護作用,同時對于內部數據同步,具有方便、簡捷的效果。
參考文獻:
[1]任寧寧.有線電視網絡資源管理系統建設規劃及注意事項[J].電視技術,2013,37(4):47-51.
[2]高虎.構建高安全管控下的全臺制播網[J].電視技術,2013,37(18):76-79.
[3]唐利峰.一種物理隔離數據交換系統的設計[J].信息技術,2009,33(10):30-32.
[4]袁航空,張勁松,呂露.基于CS6209的串口服務器/交換機設計研究[J].電視技術,2013,37(3):78-81.
[5]張蒲生.物理隔離環境下數據安全轉發的技術構思[J].計算機應用研究,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
文獻標志碼:A
DOI:10.16280/j.videoe.2016.06.023
基金項目:上海市廣播電視臺項目“播出智能監管與應急輔助系統”
作者簡介:
張勝(1974— ),學士,工程師,從事廣電領域內的系統架構、業務優化的研究與應用;
李瑞民(1973— ),工學博士,高級工程師,從事廣電領域內的計算機安全技術、網絡設備與信號監控等領域的研究與應用。
責任編輯:閆雯雯
收稿日期:2016-01-21
文獻引用格式:張勝,李瑞民. 物理隔斷計算機網絡間的實時通信設計[J].電視技術,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.