以太网物理隔离条件下实现自动数据同步

2020-08-31 07:23张忠宝刘春梅
山西建筑 2020年17期
关键词:传输数据二进制字节

张忠宝 刘春梅

(1.大连博瑞致信息技术有限公司,辽宁 大连 116023; 2.大连大地基础工程有限公司,辽宁 大连 116023)

企业信息化系统已经成为企业生产、办公的重要组成部分,尤其“两化”融合以来变得更为重要。信息化系统为企业带来重要价值的同时,也为企业带来信息安全隐患。企业敏感、隐私数据泄漏事件屡有发生,在2015年—2018年期间,企业数据泄露事件数量变化不到200起,而且2019年上半年,数据泄露事件与2018年同比增长54%。如何防止企业泄露是企业信息化过程中必须克服的痛点。大型企业在信息化过程中可以请专业信息安全领域公司专业指导完成,从而保障企业信息安全的需要,但是,对于中小企业由于资金短缺,信息化规范有限的情况下如何防止数据泄露。最简单直接的方法就是在网络层阻断企业隐秘数据与外网(互联网)的交互,将企业隐秘数据存储在公司内(局域网)中。企业为数据安全做内外隔离的同时,也造成非隐秘数据的隔离,因此在做数据安全时,企业希望非隐秘数据能够在网络层物理隔离的前提下自由交换。

网络物理隔离仅能通过人工定时导入,这种方案会增加人工成本,而且不能实现数据的实时同步;采用网闸会提高硬件采购成本,中小企业无能力承受。其实,在同步数据量较小的情况下,可以采用计算机串口进行数据同步,并定义好串口通信的私有协议,而且基于串口通信,意味着以太网层面实现了网络物理隔离。

系统软件设计采用面向对象的设计理念,将主程序及子程序封装、抽象成不同的类,运行时各个类对象之间相互独立,提高软件的复用度,实现松耦合设计。在数据传输层,采用多线程技术,保证数据传输的实时性和可靠性。

1 数据同步软件设计

按照计算机串口通信的规范,使用串口线将两台计算机的串口相连,本文采用全双工的RS232通信协议实现两台计算机之间的数据传递。软件设计流程如图1所示。

串口通信过程中经常会遇到丢包问题,因此必须有完整的数据校验机制,防止数据传输过程的丢包现象。当发生丢包时,数据必须重新传送。因此在串口通信过程中,保证数据的完整性,是程序编写的难点之一。

2 详细设计

2.1 数据传输格式

因为串口传输有丢包问题,会造成数据传输不完整,因此发送方必须告诉接收方本次传输了多少字节。另外,信息化系统中,交换的数据可能表示不同的逻辑,因此要根据交换数据的种类,定义不同的相应事件,接收端接到不同的数据,执行对应的事件,处理已经接收到的数据。数据格式设计如图2所示。

事件代码:占2个字节;

数据长度:占2个字节;

数据主体:值传输的数据,建议不超过5k;

结束标识:占1个字节。

2.2 传输数据方式

传输数据可以采用逗号分割的CSV文件格式、XML格式或者JSON格式。

CSV文件:逗号分隔值纯文本文件。在数据传输时,采用CVS文件的规范,格式化待传输数据,方便于表示和解析二维表关系型数据。

由于CSV是纯文本形式,很难解决二进制图片,文本中存在分隔符的问题。所以,简单数据可以考虑CSV方式传输,CSV冗余数据最少。

XML:跨平台的扩展标记语言,可用于不同平台之间的数据交换,字符、图片、视频、音频等复制结构的数据可轻而易举地编译成XML数据,XML数据能够在不同程序中传输及解析。但是,XML传输时,数据冗余过多,原本串口的带宽就不高,XML带来的数据冗余增加了传输负担。一般情况下,不推荐这种数据传输方式。

JSON:目前为止,互联网上轻量级的、最为流行的数据交换协议。JSON使用逗号、大括号及中括号等符合分割数据,取代了XML的标识符。JSON和XML从可读性、可扩展性、编码难度、解码难度等方面相比,JSON均不输于XML,而且传输数据冗余远远小于XML,因此推荐JSON作为数据传输的格式。

2.3 二进制数据传输

在采用JSON传输数据的前提下,经常会遇到二进制数据的传输,例如图片的传输。

利用JSON传输图片时,可以采用两种方法,以C#语言实现为例:

1)字符串方式,步骤如下:a.将图片转成字节数组;b.将字节数组转为字符串;c.将字符串压缩,放入JSON中传输。

2)Base64传输:a.图片序列化为二进制流;b.二进制流转成Base64;c.将图片的Base64编码放入JSON中传输。

2.4 本地缓存

两台电脑通过串口进行数据通信时,通常是将接收到的数据写入远程的数据库服务器或文件系统中。由于同步过程实时进行,无法保证在访问远程数据库时网络畅通,因此需要将同步接收的数据暂时保存到本地,待网络畅通时,将缓存的数据写入远程数据库或文件系统中。所以,实时的数据同步系统需要本地缓存机制,从而保障同步系统可靠、稳定的运行。

本地数据缓存分为两类数据处理,关系文本数据采用SQLite数据库缓存,二进制文件数据,直接缓存到本地文件系统中。SQLite,是一种轻量级的本地数据库,支持多种平台,读写速度快,占用资源少,因此在嵌入系统中得到普遍应用。因此,串口传输过程中,SQLite数据库作为数据交换过程中的缓存数据库。

3 运行环境

推荐环境:

Window 7/2008/Embedded,FrameWord 4.0以上。

也可以使用Linux操作系统,采用C/C++或Java等语言开发。

4 系统运行时设计

4.1 界面设计

界面设计必须直观、简洁、易操作。页面实时显示数据同步过程的报告,能够直观的看到数据同步数据量,正确接收数量,正确处理了多少数据。页面设计如图3所示。

4.2 系统出错处理设计

当软件故障时,自动重启服务端和客户端软件,即使恢复数据同步机制,同时留有日志。

5 系统结论

本文设计了基于计算机串口通信原理为设计基础,在企业内外网物理隔离的情况下,如何利用计算机串口实现内外数据的自动同步技术,从而降低企业信息化系统内外数据交换而产生的人工成本,提高工作速度,达到数据信息及时更新反馈,经本系统的编程设计运行结果表明,各项功能均可实现,达到预期,设计满足要求。

猜你喜欢
传输数据二进制字节
用二进制解一道高中数学联赛数论题
No.8 字节跳动将推出独立出口电商APP
基于SSL VPN实现安全共享疾控单位之间的数据
基于深度强化学习的物联网传输数据实时调度方法
基于物联网的电力通信系统传输数据感知分配研究
有趣的进度
No.10 “字节跳动手机”要来了?
苹果专利可采用光纤输出灯光并传输数据将光纤隐藏于车辆部件内
轻量级分组密码Midori64的积分攻击
二进制宽带毫米波合成器设计与分析