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