串口隔离内外网的通信协议设计
在一些安全性要求比较高的敏感行业,如电信运营商,内网不允许和外网有直接或间接的以太网相连。但实际的应用又需要访问内网的某些服务,怎么办呢?比较好的办法是使用串口通信来构造一个代理程序。
市面上有很多USB转RS232串口的转接线,可以买一跟公头、一根母头,分别插在两台电脑的USB或Type-C口上,系统通常会自动安装驱动,映射为一个COM口。最大速率可设置,比如设置为260K左右的波特率,接近2G时代的带宽,也足以顺畅地调用Web API了。
本文不讨论具体写串口通信程序的具体代码,主要讨论下协议的设计。
一、设计目标:
0、通用http代理或反向代理,即web应用不需要做任何修改;
1、程序尽量简单,无状态,TCP收到数据不用缓存,直接发往串口;
2、两头的TCP连接会有多个,需要建立对应关系;
3、串口收到的数据需缓存后处理,识别对应的TCP连接后进行分发;
4、串口通信数据发出后不管,不需要确认;
5、忽略偶发串口通信异常,恢复后不能影响后面的通信。
最后一点意味着,串口通可能偶尔不可靠,不能把它当成类似TCP那样的可靠连接,但也不能把它当成UDP那样的独立数据包进行处理。
二、设计要点:将串口数据当成字节流,发送时插入起始前导识别字符
假设前导识别字符为 ~,则为了防止原有内容中也包含这个字符,连续3个~才算协议头的开始,协议头分为三部分:
前导标识串
tcp连接句柄号,即socket的整数转换为数字字符串,后续数据都是这个连接的数据,直到新的协议头
协议头结束字符,表示操作:+请求对端创建一个新的连接(连接参数是配置约定的);-请求对端断开连接;*正常的数据
三、举例说明:
比如客户端在外网,侦听某个tcp端口,服务端在内网,将代理某个web服务(访问某个内网ip并取结果):
1、客户端收到一个连接,socket句柄为11,此时客户端程序发出串口数据:
~~~11+
2、服务端收到后,创建和目标地址的连接,程序将此连接和对端连接11进行关联;
3、客户端发送web api请求:
~~~11*http头数据
4、服务器收到串口数据后将http头数据转发到目标地址
5、服务器收到目标地址的应答,将应答结果发给客户端:
~~~11*http 200 OK头数据和json应答数据
6、任何一方断开后,均可给对方发送:
~~~11-
收到后断开对应的tcp连接,如果是服务器端程序还需要解除关联。
经过实际应用检验,十分可靠,而且通过了运营商最严格的安全审核。
串口隔离内外网的通信协议设计相关推荐
- VMware搭建虚拟机隔离内外网
目的 使用VMware搭建虚拟机,使用笔记本自带的本地网卡和无线网卡实现网络的物理隔离和安全访问. 本地连接接入外网互联网,无线端接入内网.在以下之前需要安装VMware,我这里使用的是VMware1 ...
- 物理隔离与数据交换-网闸的设计原理
一.什么是网闸 网闸技术的需求来自内网与外网数据互通的要求,比如政府的电子政务是对公众服务,与互联网连通,而内网的政府办公网络,由于保密的要求,内网若与网连通,则面临来自公网的各种威胁.安全专家给出的 ...
- 物理隔离与数据交换-网闸的设计原理与误区
一.什么是网闸 网闸技术的需求来自内网与外网数据互通的要求,比如政府的电子政务是对公众服务,与互联网连通,而内网的政府办公网络,由于保密的要求,内网若与网连通,则面临来自公网的各种威胁.安全专家给出的 ...
- 两种方案实现内外网隔离
随着网络技术和因特网技术的成熟和高速发展,越来越多的企事业单位开始组建网络来实现办公自动化和共享因特网的信息.但是, 安全问题也突现出来,iMaxNetworks(记忆网络公司)根据电子政务网络的特点 ...
- 网闸的设计原理与误区
一.什么是网闸 网闸技术的需求来自内网与外网数据互通的要求,比如政府的电子政务是对公众服务,与互联网连通,而内网的政府办公网络,由于保密的要求,内网若与网连通,则面临来自公网的各种威胁.安全专家给出的 ...
- 内外网的交流安全(DMZ,网闸,防火墙)
汇总与修改自以下参考资料 https://www.xianjichina.com/news/details_88937.html https://baike.baidu.com/item/防火墙/52 ...
- UART0串口编程(一):通信协议设计;RS232标准
UART0串口编程(一) 嵌入式系统之间采用通信方式交换数据,串行通信是一种最基本的通信手段.现在由于各类CPU均集成了UART部件.本节对串口编程时如何设计串口通信协议,以及对RS232接口进行了说 ...
- 采用网闸隔离的内外网如何进行数据的即时交互?
网闸,也称边界平台.内外网数据交换系统. 网闸将内网与外网实现了隔离,即内外网程序不能直接相互访问. 那么,如何实现内外网即时数据交互呢?比如外网程序要访问内网webservice服务? 就拿外网程序 ...
- 电脑使用隔离卡,如何实时同步内外网数据?
今天给大家分享的云盒子企业网盘交换方案,主要解决在隔离卡的使用环境下,不用切换网络也能实现数据合规安全摆渡到另一侧网络. 党政机关.国防.金融.电信等企事业单位通常使用网络安全隔离卡把一台普通的PC机 ...
- 内外网隔离-Traffic Policy
内外网隔离-Traffic Policy 网络拓扑 Traffic Policy 全网互联 创建ACL 配置流策略 网络拓扑 本次测试主要通过流策略(Traffic Policy)实现内外网隔离,内网 ...
最新文章
- 现学现用!学完计组后,我马上在「我的世界」造了台显示器
- Linux-0.00运行环境搭建【转】
- Jenkins的安装和卸载(转载)
- 车牌检测和识别(转)
- 学习sift算法的原理和步骤_大白话人工智能算法-第32节集成学习之通俗理解XGBoost原理和过程
- 安装vs 2015 社区版
- android 简书饿了么,分析饿了么详情页布局
- 对计算机相关领域及前沿技术的认识,计算机专业教育及新技术讲座(对计算机专业的认识)论文.pdf...
- 路由器自动获取ip失败
- R语言ggplot2 | 如何自定义facet分面的坐标轴范围
- fiddler启动后浏览器不能上网问题解决
- 一份最全的excel下拉列表攻略
- Revit API、AddInManager、RevitLookup、SDK的用途
- MATLAB小知识(三)——输出矩阵到TXT
- oracle表数据恢复为1小时之前,恢复一个小时前数据
- 指纹识别综述(6): 现场指纹识别
- 短信java_Java发送手机短信(附代码和解析,亲测有效,简便易操作)
- chrome manifest v3 api大全(持续更新中)
- 使用SquirrelMail配置Webmail系统,并实现通Macallan Mail Solution邮件服务器的连接
- 不动产测绘数据入库_不动产测绘空间信息数据整合初探