張忠寶 劉春梅
(1.大連博瑞致信息技術(shù)有限公司,遼寧 大連 116023; 2.大連大地基礎(chǔ)工程有限公司,遼寧 大連 116023)
企業(yè)信息化系統(tǒng)已經(jīng)成為企業(yè)生產(chǎn)、辦公的重要組成部分,尤其“兩化”融合以來變得更為重要。信息化系統(tǒng)為企業(yè)帶來重要價值的同時,也為企業(yè)帶來信息安全隱患。企業(yè)敏感、隱私數(shù)據(jù)泄漏事件屢有發(fā)生,在2015年—2018年期間,企業(yè)數(shù)據(jù)泄露事件數(shù)量變化不到200起,而且2019年上半年,數(shù)據(jù)泄露事件與2018年同比增長54%。如何防止企業(yè)泄露是企業(yè)信息化過程中必須克服的痛點。大型企業(yè)在信息化過程中可以請專業(yè)信息安全領(lǐng)域公司專業(yè)指導完成,從而保障企業(yè)信息安全的需要,但是,對于中小企業(yè)由于資金短缺,信息化規(guī)范有限的情況下如何防止數(shù)據(jù)泄露。最簡單直接的方法就是在網(wǎng)絡(luò)層阻斷企業(yè)隱秘數(shù)據(jù)與外網(wǎng)(互聯(lián)網(wǎng))的交互,將企業(yè)隱秘數(shù)據(jù)存儲在公司內(nèi)(局域網(wǎng))中。企業(yè)為數(shù)據(jù)安全做內(nèi)外隔離的同時,也造成非隱秘數(shù)據(jù)的隔離,因此在做數(shù)據(jù)安全時,企業(yè)希望非隱秘數(shù)據(jù)能夠在網(wǎng)絡(luò)層物理隔離的前提下自由交換。
網(wǎng)絡(luò)物理隔離僅能通過人工定時導入,這種方案會增加人工成本,而且不能實現(xiàn)數(shù)據(jù)的實時同步;采用網(wǎng)閘會提高硬件采購成本,中小企業(yè)無能力承受。其實,在同步數(shù)據(jù)量較小的情況下,可以采用計算機串口進行數(shù)據(jù)同步,并定義好串口通信的私有協(xié)議,而且基于串口通信,意味著以太網(wǎng)層面實現(xiàn)了網(wǎng)絡(luò)物理隔離。
系統(tǒng)軟件設(shè)計采用面向?qū)ο蟮脑O(shè)計理念,將主程序及子程序封裝、抽象成不同的類,運行時各個類對象之間相互獨立,提高軟件的復用度,實現(xiàn)松耦合設(shè)計。在數(shù)據(jù)傳輸層,采用多線程技術(shù),保證數(shù)據(jù)傳輸?shù)膶崟r性和可靠性。
按照計算機串口通信的規(guī)范,使用串口線將兩臺計算機的串口相連,本文采用全雙工的RS232通信協(xié)議實現(xiàn)兩臺計算機之間的數(shù)據(jù)傳遞。軟件設(shè)計流程如圖1所示。
串口通信過程中經(jīng)常會遇到丟包問題,因此必須有完整的數(shù)據(jù)校驗機制,防止數(shù)據(jù)傳輸過程的丟包現(xiàn)象。當發(fā)生丟包時,數(shù)據(jù)必須重新傳送。因此在串口通信過程中,保證數(shù)據(jù)的完整性,是程序編寫的難點之一。
因為串口傳輸有丟包問題,會造成數(shù)據(jù)傳輸不完整,因此發(fā)送方必須告訴接收方本次傳輸了多少字節(jié)。另外,信息化系統(tǒng)中,交換的數(shù)據(jù)可能表示不同的邏輯,因此要根據(jù)交換數(shù)據(jù)的種類,定義不同的相應(yīng)事件,接收端接到不同的數(shù)據(jù),執(zhí)行對應(yīng)的事件,處理已經(jīng)接收到的數(shù)據(jù)。數(shù)據(jù)格式設(shè)計如圖2所示。
事件代碼:占2個字節(jié);
數(shù)據(jù)長度:占2個字節(jié);
數(shù)據(jù)主體:值傳輸?shù)臄?shù)據(jù),建議不超過5k;
結(jié)束標識:占1個字節(jié)。
傳輸數(shù)據(jù)可以采用逗號分割的CSV文件格式、XML格式或者JSON格式。
CSV文件:逗號分隔值純文本文件。在數(shù)據(jù)傳輸時,采用CVS文件的規(guī)范,格式化待傳輸數(shù)據(jù),方便于表示和解析二維表關(guān)系型數(shù)據(jù)。
由于CSV是純文本形式,很難解決二進制圖片,文本中存在分隔符的問題。所以,簡單數(shù)據(jù)可以考慮CSV方式傳輸,CSV冗余數(shù)據(jù)最少。
XML:跨平臺的擴展標記語言,可用于不同平臺之間的數(shù)據(jù)交換,字符、圖片、視頻、音頻等復制結(jié)構(gòu)的數(shù)據(jù)可輕而易舉地編譯成XML數(shù)據(jù),XML數(shù)據(jù)能夠在不同程序中傳輸及解析。但是,XML傳輸時,數(shù)據(jù)冗余過多,原本串口的帶寬就不高,XML帶來的數(shù)據(jù)冗余增加了傳輸負擔。一般情況下,不推薦這種數(shù)據(jù)傳輸方式。
JSON:目前為止,互聯(lián)網(wǎng)上輕量級的、最為流行的數(shù)據(jù)交換協(xié)議。JSON使用逗號、大括號及中括號等符合分割數(shù)據(jù),取代了XML的標識符。JSON和XML從可讀性、可擴展性、編碼難度、解碼難度等方面相比,JSON均不輸于XML,而且傳輸數(shù)據(jù)冗余遠遠小于XML,因此推薦JSON作為數(shù)據(jù)傳輸?shù)母袷健?/p>
在采用JSON傳輸數(shù)據(jù)的前提下,經(jīng)常會遇到二進制數(shù)據(jù)的傳輸,例如圖片的傳輸。
利用JSON傳輸圖片時,可以采用兩種方法,以C#語言實現(xiàn)為例:
1)字符串方式,步驟如下:a.將圖片轉(zhuǎn)成字節(jié)數(shù)組;b.將字節(jié)數(shù)組轉(zhuǎn)為字符串;c.將字符串壓縮,放入JSON中傳輸。
2)Base64傳輸:a.圖片序列化為二進制流;b.二進制流轉(zhuǎn)成Base64;c.將圖片的Base64編碼放入JSON中傳輸。
兩臺電腦通過串口進行數(shù)據(jù)通信時,通常是將接收到的數(shù)據(jù)寫入遠程的數(shù)據(jù)庫服務(wù)器或文件系統(tǒng)中。由于同步過程實時進行,無法保證在訪問遠程數(shù)據(jù)庫時網(wǎng)絡(luò)暢通,因此需要將同步接收的數(shù)據(jù)暫時保存到本地,待網(wǎng)絡(luò)暢通時,將緩存的數(shù)據(jù)寫入遠程數(shù)據(jù)庫或文件系統(tǒng)中。所以,實時的數(shù)據(jù)同步系統(tǒng)需要本地緩存機制,從而保障同步系統(tǒng)可靠、穩(wěn)定的運行。
本地數(shù)據(jù)緩存分為兩類數(shù)據(jù)處理,關(guān)系文本數(shù)據(jù)采用SQLite數(shù)據(jù)庫緩存,二進制文件數(shù)據(jù),直接緩存到本地文件系統(tǒng)中。SQLite,是一種輕量級的本地數(shù)據(jù)庫,支持多種平臺,讀寫速度快,占用資源少,因此在嵌入系統(tǒng)中得到普遍應(yīng)用。因此,串口傳輸過程中,SQLite數(shù)據(jù)庫作為數(shù)據(jù)交換過程中的緩存數(shù)據(jù)庫。
推薦環(huán)境:
Window 7/2008/Embedded,F(xiàn)rameWord 4.0以上。
也可以使用Linux操作系統(tǒng),采用C/C++或Java等語言開發(fā)。
界面設(shè)計必須直觀、簡潔、易操作。頁面實時顯示數(shù)據(jù)同步過程的報告,能夠直觀的看到數(shù)據(jù)同步數(shù)據(jù)量,正確接收數(shù)量,正確處理了多少數(shù)據(jù)。頁面設(shè)計如圖3所示。
當軟件故障時,自動重啟服務(wù)端和客戶端軟件,即使恢復數(shù)據(jù)同步機制,同時留有日志。
本文設(shè)計了基于計算機串口通信原理為設(shè)計基礎(chǔ),在企業(yè)內(nèi)外網(wǎng)物理隔離的情況下,如何利用計算機串口實現(xiàn)內(nèi)外數(shù)據(jù)的自動同步技術(shù),從而降低企業(yè)信息化系統(tǒng)內(nèi)外數(shù)據(jù)交換而產(chǎn)生的人工成本,提高工作速度,達到數(shù)據(jù)信息及時更新反饋,經(jīng)本系統(tǒng)的編程設(shè)計運行結(jié)果表明,各項功能均可實現(xiàn),達到預(yù)期,設(shè)計滿足要求。