CN116112261A - 网闸穿透方法、系统、mqtt客户端、mqtt服务器及电子设备 - Google Patents
网闸穿透方法、系统、mqtt客户端、mqtt服务器及电子设备 Download PDFInfo
- Publication number
- CN116112261A CN116112261A CN202310108439.5A CN202310108439A CN116112261A CN 116112261 A CN116112261 A CN 116112261A CN 202310108439 A CN202310108439 A CN 202310108439A CN 116112261 A CN116112261 A CN 116112261A
- Authority
- CN
- China
- Prior art keywords
- network
- mqtt
- gatekeeper
- request message
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000035515 penetration Effects 0.000 title claims abstract description 102
- 238000000034 method Methods 0.000 title claims abstract description 80
- 230000004044 response Effects 0.000 claims abstract description 97
- 230000015654 memory Effects 0.000 claims description 35
- 238000003860 storage Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 12
- 238000005538 encapsulation Methods 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 abstract description 11
- 238000005516 engineering process Methods 0.000 abstract description 9
- 238000004519 manufacturing process Methods 0.000 description 42
- 238000010586 diagram Methods 0.000 description 23
- 238000004891 communication Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 11
- 230000001360 synchronised effect Effects 0.000 description 9
- 230000005291 magnetic effect Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 238000002955 isolation Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000013480 data collection Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000000149 penetrating effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000005294 ferromagnetic effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000003908 quality control method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/029—Firewall traversal, e.g. tunnelling or, creating pinholes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2212/00—Encapsulation of packets
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例适用于计算机技术领域,提供了一种网闸穿透方法、系统、MQTT客户端、MQTT服务器及电子设备,其中,网闸穿透方法应用于第一网络中的消息队列遥测传输协议MQTT客户端,MQTT客户端以库的形式供第一网络中的数据采集程序调用,数据采集程序用于将采集数据通过MQTT客户端发送给第二网络中的MQTT服务器,网闸穿透方法包括:生成请求报文的固定报头;固定报头中的设定标志位的值为设定值;基于固定报头对请求报文进行封装;将封装好的请求报文通过单向网闸发送给第二网络中的MQTT服务器,以使MQTT服务器根据请求报文返回满足网闸穿透条件的响应报文;网闸穿透条件表征响应报文的所有字节全为1或0;第一网络与第二网络之间通过单向网闸进行隔离。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种网闸穿透方法、系统、MQTT客户端、MQTT服务器及电子设备。
背景技术
单向网闸是一种允许内部网络向外部网络传输数据,但外部网络只能向内部网络传输特定数据的安全隔离装置。相关技术自行开发一套能穿透单向网闸的客户端和服务器程序,以此满足单向网闸的穿透要求。但是自行开发方式的实现标准不统一,对于边缘计算平台中的应用程序的通用性差,应用程序需要改造适配。
发明内容
为了解决上述问题,本发明实施例提供了一种网闸穿透方法、系统、MQTT客户端、MQTT服务器及电子设备,以至少解决相关技术应用程序需要改造才能实现网闸穿透的问题。
本发明的技术方案是这样实现的:
一方面,本发明实施例提供了一种网闸穿透方法,该方法应用于第一网络中的消息队列遥测传输协议MQTT客户端,所述MQTT客户端以库的形式供第一网络中的数据采集程序调用,所述数据采集程序用于将采集数据通过所述MQTT客户端发送给第二网络中的MQTT服务器,网闸穿透方法包括:
生成请求报文的固定报头;所述固定报头中的设定标志位的值为设定值;
基于所述固定报头对所述请求报文进行封装;
将封装好的所述请求报文通过单向网闸发送给所述第二网络中的MQTT服务器,以使所述MQTT服务器根据所述请求报文返回满足网闸穿透条件的响应报文;所述网闸穿透条件表征所述响应报文的所有字节全为1或0;所述第一网络与所述第二网络之间通过所述单向网闸进行隔离。
在上述方案中,所述请求报文包括以下任意一项:
连接请求报文;
连接保活请求报文。
在上述方案中,若所述请求报文为连接请求报文,所述方法还包括:
若接收到所述MQTT服务器发送的响应报文,确定所述MQTT客户端和所述MQTT服务器之间的连接建立成功。
在上述方案中,在所述MQTT客户端和所述MQTT服务器之间的连接建立成功之后,所述方法还包括:
向所述MQTT服务器发布带消息主题的消息;所述消息表征所述数据采集程序的采集数据;所述MQTT客户端和所述MQTT服务器之间的QoS服务质量等级为0。
另一方面,本发明实施例提供了另一种网闸穿透方法,应用于如上述方面的MQTT服务器,所述MQTT服务器位于第二网络,该方法包括:
接收第一网络中的MQTT客户端发送的请求报文;所述第一网络与所述第二网络之间通过单向网闸进行隔离;
若所述请求报文的固定报头中的设定标志位的值为设定值,根据所述请求报文生成满足网闸穿透条件的响应报文;所述网闸穿透条件表征所述响应报文的所有字节全为1或0;
将所述响应报文发送给所述MQTT客户端。
在上述方案中,所述方法还包括:
接收所述MQTT客户端发布的带消息主题的消息;所述消息表征所述数据采集程序的采集数据;其中,所述MQTT客户端和所述MQTT服务器之间的服务质量等级QoS为0;
基于订阅主题将所述消息分发给对应的订阅者。
另一方面,本发明实施例提供了一种网闸穿透系统,包括:
第一网络中的数据采集设备,用于将采集数据通过MQTT客户端发送给第二网络中的MQTT服务器,所述MQTT客户端以库的形式供所述数据采集设备调用;
其中,所述MQTT客户端用于生成请求报文的固定报头,所述固定报头中的设定标志位的值为设定值;基于所述固定报头对所述请求报文进行封装;将封装好的所述请求报文通过单向网闸发送给所述第二网络中的MQTT服务器;
MQTT服务器,用于接收所述MQTT客户端发送的请求报文,若所述请求报文的固定报头中的设定标志位的值为设定值,根据所述请求报文生成满足网闸穿透条件的响应报文,将所述响应报文发送给所述MQTT客户端;所述网闸穿透条件表征所述响应报文的所有字节全为1或0;所述第一网络与所述第二网络之间通过所述单向网闸进行隔离。
另一方面,本发明实施例提供了一种MQTT客户端,该MQTT客户端包括:
第一生成模块,用于生成请求报文的固定报头;所述固定报头中的设定标志位的值为设定值;
封装模块,用于基于所述固定报头对所述请求报文进行封装;
第一发送模块,用于将封装好的所述请求报文通过单向网闸发送给所述第二网络中的MQTT服务器,以使所述MQTT服务器根据所述请求报文返回满足网闸穿透条件的响应报文;所述网闸穿透条件表征所述响应报文的所有字节全为1或0;所述第一网络与所述第二网络之间通过所述单向网闸进行隔离。
另一方面,本发明实施例提供了一种MQTT服务器,该MQTT服务器包括:
接收模块,用于接收第一网络中的MQTT客户端发送的请求报文;所述第一网络与所述第二网络之间通过单向网闸进行隔离;
第二生成模块,用于若所述请求报文的固定报头中的设定标志位的值为设定值,根据所述请求报文生成满足网闸穿透条件的响应报文;所述网闸穿透条件表征所述响应报文的所有字节全为1或0;
第二发送模块,用于将所述响应报文发送给所述MQTT客户端。
另一方面,本发明实施例提供了一种电子设备,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行本发明实施例第一方面提供的网闸穿透方法的步骤。
另一方面,本发明实施例提供了一种计算机可读存储介质,包括:所述计算机可读存储介质存储有计算机程序。所述计算机程序被处理器执行时实现如本发明实施例第一方面提供的网闸穿透方法的步骤。
本实施例将MQTT客户端以库的形式部署在第一网络中供数据采集程序调用,数据采集程序将采集到的设备数据通过MQTT客户端发送给第二网络中的MQTT服务器。由于数据采集程序通过调用MQTT客户端库与MQTT服务器通信,数据采集程序无需进行改造(不需要做任何代码修改)。而且MQTT客户端库的通用性强,任何支持MQTT协议的数据采集程序都可以调用MQTT客户端库。MQTT客户端通过生成请求报文的固定报头,基于固定报头对请求报文进行封装,将封装好的请求报文通过单向网闸发送给第二网络中的MQTT服务器,以使MQTT服务器根据请求报文返回满足网闸穿透条件的响应报文。其中,固定报头中的设定标志位的值为设定值,响应报文的所有字节全为1或0,第一网络与第二网络之间通过单向网闸进行隔离。本实施例通过将请求报文的固定报头中的设定标志位的值设置为设定值,可以使得MQTT服务器生成满足网闸穿透条件(所有字节全为1或0)的响应报文,从而使得响应报文可以顺利穿透单向网闸,实现了流量的双向穿透。
附图说明
图1是本发明实施例提供的一种网闸穿透方案的系统架构图;
图2是本发明实施例提供的一种网闸穿透方法的实现流程示意图;
图3是本发明实施例提供的一种连接请求报文的固定报头的格式示意图;
图4是本发明实施例提供的一种连接保活请求报文的固定报头的格式示意图;
图5是本发明实施例提供的一种响应报文的报文格式示意图;
图6是本发明实施例提供的一种网闸穿透方法的实现流程示意图;
图7是本发明实施例提供的一种网闸穿透系统的示意图;
图8是本发明应用实施例提供的一种网闸穿透方案的系统架构图;
图9是本发明应用实施例提供的一种连接请求报文的转发逻辑的流程图;
图10是本发明应用实施例提供的一种连接保活请求报文的转发逻辑的流程图;
图11是本发明实施例提供的一种MQTT客户端的示意图;
图12是本发明实施例提供的一种MQTT服务器的示意图;
图13是本发明一实施例提供的电子设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
随着网络技术的迅猛发展,通过网络办理业务也成为政府、企业等重要的办公方式,而网络办公方式不可避免的需要与外网连通,此时为了保障政府、企业等内部网络的安全,通常会在内外网络之间设置安全隔离网闸,以实现内外网的物理隔离,进而避免外网威胁。
单向网闸(包括正向和反向)是一种允许内部网络向外部网络传输数据,但外部网络只能向内部网络传输特定数据的安全隔离网闸。例如,正向网闸允许生产网络的流量通过,非生产网络的流量只允许特定流量通过,非生产网络的其他流量均不允许通过。其中,生产网络可以指边缘计算节点所处网络,非生产网络指中心管理节点所处网络。
例如,在边缘计算场景下,工业平台需要采集生产设备的监控数据和告警数据,以做产品质量、设备状态等分析以及实时监控。即,生产网络中的数据采集程序需将采集数据发往非生产网络中的数据接收程序,而此过程通常会存在双向数据传输(比如:交换用户数据、传输结果确认等)。
但是,网络的物理隔离,给数据通信带来很多不便,原来网络中的应用程序是不具备网闸穿透能力的,当在内部网络和外部网络之间部署单向网闸后,需要使得应用程序能够满足单向网闸的穿透要求。
相关技术有2种方案能够实现网闸穿透,第一种方案是采用传输控制协议(TCP,Transmission Control Protocol)/用户数据报协议(UDP,User Data Protocol)自行开发一套穿透单向网闸的客户端和服务器程序,此套程序满足单向网闸穿透要求。即,只单向(单向网闸允许的方向)发送报文数据,不反向发送数据或只发送网闸设备允许的特定报文(TCP连接可以正常建立,因为连接过程中不涉及用户数据,网闸设备允许通过)。第二种方案是采用E语言以文件摆渡方式,将需要外发的数据转换为E语言描述文件然后通过单向网闸的摆渡能力外传(网闸设备支持E语言文件摆渡)。
第一种方案存在以下缺点:1、自行开发方式对于边缘计算应用程序通用性差,应用程序(或第三方程序)若不改造适配,则无法使用。2、自行开发的实现标准不统一,第三方程序改造困难,甚至无法改造。
第二种方案存在以下缺点:E语言方式需自行将数据转换为E语言文件,数据传输时效差,延迟高。而且大部分已有应用程序采用TCP/UDP通信作为设计基础,基本无法改造适配。
针对上述相关技术的缺点,本发明实施例提供了一种网闸穿透方法,能够使得应用程序无需改造就能具备网闸穿透能力。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
图1是本发明实施例提供的一种网闸穿透方案的系统架构图,其中,生产网络中包括多个生产设备,数据采集程序采集生产设备的数据,通过消息队列遥测传输协议(MQTT,Message Queuing Telemetry Transport)将采集数据发送给非生产网络的数据接收程序。
其中,本实施例在生产网络侧部署了MQTT客户端(MQTT Client),在非生产网络侧部署了MQTT服务器(MQTT Broker)。
MQTT Client以库的形式部署在生产网络中,库是已写好的、供使用的可复用代码,每个程序都要依赖很多基础的底层库。从本质上,库是一种可执行代码的二进制形式。库分为两种:静态库(.a.lib)和动态库(.so.dll)。数据采集程序通过调用MQTT Client库将采集到的数据发送给MQTT Broker。
MQTT的通信是通过发布/订阅的方式来实现的,订阅和发布又是基于主题(Topic)的。发布者和订阅者通过MQTT Broker进行连接。通过MQTT broker,发布者可以发送一条主题消息给MQTT Broker,然后其他订阅者通过消息订阅机制获得MQTT broker的主题消息推送。
在图1中,MQTT Client(发布者)需要先和MQTT Broker建立MQTT连接,然后向MQTTBroker发布带消息主题的消息(数据采集程序的采集数据)。连接保持期间MQTT Client和MQTT Broker之间通过ping报文保活。
其中,生产网络和非生产网络之间通过正向网闸进行隔离,正向网闸允许生产网络的流量通过,非生产网络的流量只允许特定报文(全0或全1字节的报文)通过,非生产网络的其他流量均不允许通过。
采集服务作为发布者(MQTT Client)需要和MQTT Broker先建立MQTT连接(双向流量),然后发布消息到MQTT Broker(支持单向流量),建立连接之后需要进行连接保活(双向流量)。当生产网络和非生产网络经过单向网闸隔离后,MQTT连接和连接保活的响应报文均会被单向网闸拦截,导致无法正常工作。因此,直接采用原生MQTT实现的应用程序无法穿透单向网闸。
本实施例对MQTT协议进行了扩展,在MQTT Client侧,对MQTT Client发送的请求报文进行扩展,将请求报文的固定报头中的设定标志位的值设置为设定值(例如为1),表示需要做网闸穿透。
在MQTT Broker侧,对MQTT Client的响应报文进行了扩展,因为单向网闸只允许非生产网络的特定报文(全0或全1字节)通过,因此将响应报文改造为全0或全1字节。
MQTT Broker既支持同扩展后的MQTT Client通信,也支持同原生MQTT Client通信。MQTT Broker当接收到MQTT Client的请求报文时,如果发现请求报文的固定报头中的设定标志位的值为设定值,就回复一个满足网闸穿透条件的响应报文(全1或全0字节的响应报文)给MQTT Client,这个响应报文能够穿透单元网闸到达MQTT Client。如果收到的请求报文的固定报头中的设定标志位的值不是设定值,就回复一个常规响应报文,这个响应报文无法穿透单向网闸。
经过以上部署和改造,非生产网络的MQTT服务器能够将响应报文顺利的穿透网闸发送到生产网络的MQTT Client,以此建立MQTT连接和进行连接保活。在建立MQTT连接后,任何在生产网络部署的数据采集程序,均可通过MQTT Client将采集数据顺利的穿透网闸发送到非生产网络的MQTT服务器,进而转发给通过在MQTT服务器订阅消息的数据接收程序。
由于数据采集程序通过调用MQTT Client库与MQTT服务器通信,数据采集程序无需进行改造,数据采集程序本身不需要做任何代码修改。而且通用性强,任何支持MQTT协议的数据采集程序都可以使用。在边缘计算场景下,基于MQTT通信的第三方程序无需修改代码即可获得网闸穿透能力。
图2是本发明实施例提供的一种网闸穿透方法的实现流程示意图,所述网闸穿透方法可以应用于上述图1实施例中的MQTT客户端,MQTT客户端以库的形式供第一网络中的数据采集程序调用。MQTT客户端可以应用于数据采集设备中,数据采集设备可以通过内置的数据采集程序调用MQTT客户端实现本实施例的技术方案。任何支持MQTT协议的数据采集设备都可以调用MQTT客户端库,任何支持MQTT协议的服务器都可以扩展为MQTT服务器。其中,数据采集设备部署在第一网络中,用于采集第一网络中的终端设备的数据,例如,在企业生产网络部署有多个用于生产的终端设备,数据采集设备负责从各个终端设备采集数据,然后通过MQTT客户端将采集到的数据发送给第二网络中的MQTT服务器。
其中,第一网络可以对应图1中的生产网络,第二网络对应非生产网络。或者,第一网络可以对应企业内部网络,第二网络对应企业外部网络。第一网络和第二网络之间通过单向网闸进行隔离,单向网闸允许第一网络的流量通过,第二网络的流量只允许特定报文(全0或全1字节的报文)通过,第二网络的其他流量均不允许通过。
参考图2,网闸穿透方法包括:
S201,生成请求报文的固定报头;所述固定报头中的设定标志位的值为设定值。
这里,请求报文可以包括任何需要MQTT服务器回包的请求报文,在一实施例中,请求报文包括:连接(CONNECT)请求报文和连接保活(PINGREQ)报文。
如果开启网闸穿透模式,MQTT客户端会将请求报文的固定报头(fix header)中的设定标志位(flag)的值设置为设定值,例如设定值可以为1。如果不开启网闸穿透模式,设定标志位(flag)的值为默认值(默认值为0)。
因为MQTT规范中CONNECT报文和PINGREQ报文的fix header中flag位为保留位,不做配置,故可取其中一位作为网闸穿透位,将其值设置为设定值。
图3是本发明实施例提供的一种连接请求报文的固定报头的格式示意图。其中,Message Type表示消息类型,使用4位二进制表示。Message Type(1)表示消息类型为CONNECT。固定报头包括多个标志位(flag),flag4为设定标志位,可以将flag4的值设置为1。
图4是本发明实施例提供的一种连接保活报文的固定报头的格式示意图。其中,Message Type(12)表示消息类型为PINGREQ。flag4为设定标志位,可以将flag4的值设置为1。
S202,基于所述固定报头对所述请求报文进行封装。
在网络中传输数据需要对数据进行封装,也就是加入各网络层对应的头部信息,这些头部信息的主要作用是用来帮助中间传输系统将数据传输到一个正确的目的地。
根据固定报头封装请求报文,包括封装连接(CONNECT)请求报文和封装连接保活(PINGREQ)报文,其中封装好的请求报文的设定标志位(flag)的值设置为设定值。
S203,将封装好的所述请求报文通过单向网闸发送给所述第二网络中的MQTT服务器,以使所述MQTT服务器根据所述请求报文返回满足网闸穿透条件的响应报文;所述网闸穿透条件表征所述响应报文的所有字节全为1或0;所述第一网络与所述第二网络之间通过所述单向网闸进行隔离。
第一网络和第二网络之间通过单向网闸进行隔离,单向网闸允许第一网络的流量通过,所以请求报文可以顺序发送至第二网络中的MQTT服务器。
MQTT服务器根据接收到的请求报文中的设定标志位的值来决定是否开启网闸穿透模式,由于本实施例中的请求报文的固定报头中的设定标志位的值为设定值,所以MQTT服务器开启网闸穿透模式,生成一个满足网闸穿透条件的响应报文(全1或全0字节的响应报文)给MQTT客户端。因为单向网闸只允许第二网络的特定报文(全0或全1字节)通过,本实施例MQTT服务器生成的全1或全0字节的响应报文可以顺利穿透单向网闸发送至MQTT客户端。
图5是本发明实施例提供的一种响应报文的报文格式示意图。其中,Message Type(0)表示消息类型为Reserved,响应报文中所有字节全为0。该响应报文可以穿透单向网闸到达MQTT客户端。
在一实施例中,如果MQTT服务器收到的请求报文的固定报头中的设定标志位的值不是设定值,就回复一个常规响应报文,这个响应报文可能无法穿透单向网闸。
本实施例将MQTT客户端以库的形式部署在第一网络中供数据采集程序调用,数据采集程序将采集到的设备数据通过MQTT客户端发送给第二网络中的MQTT服务器。由于数据采集程序通过调用MQTT客户端库与MQTT服务器通信,数据采集程序无需进行改造(不需要做任何代码修改)。而且MQTT客户端库的通用性强,任何支持MQTT协议的数据采集程序都可以调用MQTT客户端库。MQTT客户端通过生成请求报文的固定报头,基于固定报头对请求报文进行封装,将封装好的请求报文通过单向网闸发送给第二网络中的MQTT服务器,以使MQTT服务器根据请求报文返回满足网闸穿透条件的响应报文。其中,固定报头中的设定标志位的值为设定值,响应报文的所有字节全为1或0,第一网络与第二网络之间通过单向网闸进行隔离。本实施例通过将请求报文的固定报头中的设定标志位的值设置为设定值,可以使得MQTT服务器生成满足网闸穿透条件(所有字节全为1或0)的响应报文,从而使得响应报文可以顺利穿透单向网闸,实现了流量的双向穿透。
在一实施例中,若所述请求报文为连接请求报文,所述方法还包括:
若接收到所述MQTT服务器发送的响应报文,确定所述MQTT客户端和所述MQTT服务器之间的连接建立成功。
由于本实施例中的请求报文的固定报头中的设定标志位的值为设定值,所以MQTT服务器开启网闸穿透模式,生成一个全1或全0字节的响应报文给MQTT客户端。本实施例MQTT服务器生成的全1或全0字节的响应报文可以顺利通过单向网闸发送至MQTT客户端。MQTT客户端接收到MQTT服务器发送的响应报文,确认MQTT连接建立成功。
在上述实施例中,在所述MQTT客户端和所述MQTT服务器之间的连接建立成功之后,所述方法还包括:
向所述MQTT服务器发布带消息主题的消息;所述消息表征所述数据采集程序的采集数据;所述MQTT客户端和所述MQTT服务器之间的服务质量等级(QoS,QualityofServicce)为0。
MQTT的通信是通过发布/订阅的方式来实现的,订阅和发布又是基于主题(Topic)的。在MQTT客户端和MQTT服务器之间的MQTT连接建立成功后,MQTT客户端(发布者)可以发送一条带消息主题的消息给MQTT服务器,然后订阅者可以通过消息订阅机制获得MQTTbroker的主题消息推送。
MQTT服务质量用于告知物联网,哪些信息比较重要,哪些信息没那么重要,将信息按照不同的QOS等级进行传输。MQTT协议有三种服务质量级别:QoS=0,最多发一次;QoS=1,最少发一次;QoS=2,保证收一次。以上三种不同的服务质量级别意味着不同的MQTT传输流程。对于较为重要的MQTT消息,可以选择QoS>0的服务级别(即QoS为1或2)。
在本实施例中,MQTT客户端和MQTT服务器之间的QoS服务质量等级为0,0是服务质量QoS的最低级别。当QoS为0级时,MQTT协议并不保证所有信息都能得以传输。也就是说,QoS=0的情况下,MQTT服务器和MQTT客户端不会对消息传输是否成功进行确认和检查,MQTT服务器不用发送响应报文给MQTT客户端,从而可以避免被单向网闸拦截。
图6是本发明实施例提供的另一种网闸穿透方法的实现流程示意图,该方法应用于第二网络中的MQTT服务器,如图6所示,网闸穿透方法包括:
S601,接收第一网络中的MQTT客户端发送的请求报文;所述第一网络与所述第二网络之间通过单向网闸进行隔离。
这里,MQTT客户端发送的请求报文有2种情况,如果MQTT客户端开启了网闸穿透模式,则请求报文的固定报头中的设定标志位的值为设定值。如果MQTT客户端没开启网闸穿透模式,则请求报文的固定报头中的设定标志位的值为不是设定值(为默认值0)。
S602,若所述请求报文的固定报头中的设定标志位的值为设定值,根据所述请求报文生成满足网闸穿透条件的响应报文;所述网闸穿透条件表征所述响应报文的所有字节全为1或0。
MQTT服务器通过解析请求报文,获取固定报头中的设定标志位的值,如果固定报头中的设定标志位的值为设定值,则生成一个全字节(所有字节全为1或0)的响应报文。
在一实施例中,如果收到的请求报文的固定报头中的设定标志位的值不是设定值,就生成一个常规响应报文,常规响应报文由于不满足网闸穿透条件(所有字节全为1或0),是无法穿透单向网闸到达MQTT客户端的。
S603,将所述响应报文发送给所述MQTT客户端。
对响应报文进行封装,封装后通过发送给MQTT客户端。由于响应报文满足网闸穿透条件(所有字节全为1或0),所以响应报文可以顺利穿透单向网闸到达MQTT客户端,实现了流量的双向穿透。
本实施例通过将请求报文的固定报头中的设定标志位的值设置为设定值,可以使得MQTT服务器生成满足网闸穿透条件(所有字节全为1或0)的响应报文,从而使得响应报文可以顺利穿透单向网闸,实现了流量的双向穿透。
在一实施例中,如果请求报文是连接请求报文,在MQTT服务器发送所有字节全为1或0的响应报文给MQTT客户端后,MQTT客户端和MQTT服务器之间的连接建立成功。
所述方法还包括:
接收所述MQTT客户端发布的带消息主题的消息;所述消息表征所述数据采集程序采集到的设备数据;所述MQTT客户端和所述MQTT服务器之间的QoS服务质量等级为0;
基于订阅主题将所述消息分发给对应的订阅者。
MQTT客户端(发布者)可以发送带消息主题的消息给MQTT服务器,然后订阅者可以通过消息订阅机制获得MQTTbroker的主题消息推送。其具体实现过程详见上述方法实施例,这里不再赘述。
参考图7,图7是本发明实施例提供的一种网闸穿透系统的示意图,网闸穿透系统包括:
第一网络中的数据采集设备,用于将采集数据通过MQTT客户端发送给第二网络中的MQTT服务器,所述MQTT客户端以库的形式供所述数据采集设备调用;
其中,所述MQTT客户端用于生成请求报文的固定报头,所述固定报头中的设定标志位的值为设定值;基于所述固定报头对所述请求报文进行封装;将封装好的所述请求报文通过单向网闸发送给所述第二网络中的MQTT服务器;
MQTT服务器,用于接收所述MQTT客户端发送的请求报文,若所述请求报文的固定报头中的设定标志位的值为设定值,根据所述请求报文生成满足网闸穿透条件的响应报文,将所述响应报文发送给所述MQTT客户端;所述网闸穿透条件表征所述响应报文的所有字节全为1或0;所述第一网络与所述第二网络之间通过所述单向网闸进行隔离。
本实施例提供的网闸穿透系统与上述实施例提供的网闸穿透方法实施例属于同一构思,其具体实现过程详见上述方法实施例,这里不再赘述。
本实施例可以应用在企业管理网络中,例如在企业生产网络中部署数据采集设备,在非生产网络(管理网络)中部署MQTT服务器,生产网络与非生产网络通过单向网闸进行隔离。在企业生产网络中包括多个用于生产的终端设备,数据采集设备可以从各个终端设备获取数据,然后通过MQTT客户端将获取到的数据发送给第二网络中的MQTT服务器。对于需要返回响应的请求报文,MQTT服务器能够根据请求报文生成满足网闸穿透条件的响应报文,以此实现流量的双向穿透。
如图8所示,图8是本发明应用实施例提供的一种网闸穿透方案的系统架构图。其中,企业生产网络和企业非生产网络(管理网络)通过正向网闸设备进行隔离。在企业生产网络部署有多个用于生产的终端设备,采集盒子是部署有采集服务的硬件设备,采集服务负责从各终端设备收集数据,采集服务通过调用MQTT Client库与MQTTBroker进行通信。
MQTT Client作为发布者,将采集到的数据以主题消息的形式发布到MQTTBroker,企业非生产网络中的订阅者通过消息订阅机制获得MQTTbroker的主题消息推送。企业非生产网络中的订阅者包括两种类型,一种是本地应用服务,另一种是转发服务,本地应用服务就地处理订阅的消息,转发服务将订阅的消息转发给云端数据中心的数据分析服务。
其中,采集服务通过MQTT Client将数据穿过网闸发送给MQTTbroker,从而实现数据网闸穿透。
如图9所示,图9是本发明应用实施例提供的一种连接请求报文的转发逻辑的流程图。图9分别展示了MQTT Client扩展和MQTT Client非扩展两种情况,对于扩展的MQTTClient,通过全局变量(如环境变量或配置)来控制是否采用网闸穿透模式。当设置了全局变量表示采用网闸穿透模式发包;未设置或值为假表示非网闸穿透模式(即原生MQTT协议)。通过设置连接请求报文的固定报头中的设定标志位的值,如果设定标志位的值为设定值,则开启网闸穿透模式,封装连接请求报文(flag.4=1);如果设定标志位的值不是设定值,则不开启网闸穿透模式,封装连接请求报文(flag.4=0)。
对于未扩展的MQTT Client,直接封装连接请求报文(flag.4=0)。
扩展的MQTTbroker既支持同扩展后的MQTT Client通信,也支持同未扩展的MQTTClient通信。扩展的MQTTbroker接收到连接请求报文后,确定flag.4的值是否为1,如果flag.4的值为1,则封装消息类型为0,header长度为1字节,内容为全0的响应报文。如果flag.4的值为0,则封装ConnACK常规报文。扩展的MQTT broker返回conn响应报文给MQTTClient。
扩展的MQTT Client如果开启了网闸穿透模式,则可以接收到消息类型为0的响应报文,其内容为全0,确认MQTT连接建立。
对于常规响应报文,由于单向网闸拦截了常规响应报文,未扩展的MQTT Client是无法接收到常规响应报文的。
如图10所示,图10是本发明应用实施例提供的一种连接保活请求报文的转发逻辑的流程图。图10分别展示了MQTT Client扩展和MQTT Client非扩展两种情况,对于扩展的MQTT Client,通过设置连接保活请求报文的固定报头中的设定标志位的值,如果设定标志位的值为设定值,则开启网闸穿透模式,封装连接保活请求报文(flag.4=1);如果设定标志位的值不是设定值,则不开启网闸穿透模式,封装连接保活请求报文(flag.4=0)。
对于未扩展的MQTT Client,直接封装连接保活请求报文(flag.4=0)。
扩展的MQTTbroker既支持同扩展后的MQTT Client通信,也支持同未扩展的MQTTClient通信。扩展的MQTTbroker接收到连接保活请求报文后,确定flag.4的值是否为1,如果flag.4的值为1,则封装消息类型为0,header长度为1字节,内容为全0的响应报文。如果flag.4的值为0,则封装pingResp常规报文。扩展的MQTTbroker返回pingReq响应报文给MQTT Client。
扩展的MQTT Client如果开启了网闸穿透模式,则可以接收到消息类型为0的响应报文,其内容为全0,确认MQTT心跳ok,即连接保活成功。
对于常规响应报文,由于单向网闸拦截了常规响应报文,未扩展的MQTT Client是无法接收到常规响应报文的。
本实施例通过对MQTT协议进行扩展,使得采用MQTT通信的第三方程序无需改造,可以无感知的自动具备网闸穿透能力。边缘计算平台的大部分程序间采用MQTT作为消息总线进行数据传递,从而提供了边缘计算平台下的通用性。同时,MQTT协议采用TCP通信,能够继续满足数据的低时延要求。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
需要说明的是,本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
另外,在本发明实施例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
参考图11,图11是本发明实施例提供的一种MQTT客户端的示意图,如图11所示,该装置包括:
第一生成模块,用于生成请求报文的固定报头;所述固定报头中的设定标志位的值为设定值;
封装模块,用于基于所述固定报头对所述请求报文进行封装;
第一发送模块,用于将封装好的所述请求报文通过单向网闸发送给所述第二网络中的MQTT服务器,以使所述MQTT服务器根据所述请求报文返回满足网闸穿透条件的响应报文;所述网闸穿透条件表征所述响应报文的所有字节全为1或0;所述第一网络与所述第二网络之间通过所述单向网闸进行隔离。
在一实施例中,所述请求报文包括以下任意一项:
连接请求报文;
连接保活请求报文。
在一实施例中,若所述请求报文为连接请求报文,所述MQTT客户端还包括:
连接建立模块,用于若接收到所述MQTT服务器发送的响应报文,确定所述MQTT客户端和所述MQTT服务器之间的连接建立成功。
在一实施例中,所述MQTT客户端还包括:
发布模块,用于在所述MQTT客户端和所述MQTT服务器之间的连接建立成功之后,向所述MQTT服务器发布带消息主题的消息;所述消息表征所述数据采集程序的采集数据;所述MQTT客户端和所述MQTT服务器之间的QoS服务质量等级为0。
参考图12,图12是本发明实施例提供的一种MQTT服务器的示意图,如图12所示,该装置包括:
接收模块,用于接收第一网络中的MQTT客户端发送的请求报文;所述第一网络与所述第二网络之间通过单向网闸进行隔离;
第二生成模块,用于若所述请求报文的固定报头中的设定标志位的值为设定值,根据所述请求报文生成满足网闸穿透条件的响应报文;所述网闸穿透条件表征所述响应报文的所有字节全为1或0;
第二发送模块,用于将所述响应报文发送给所述MQTT客户端。
在一实施例中,所述MQTT服务器还包括:
主题消息接收模块,用于接收所述MQTT客户端发布的带消息主题的消息;所述消息表征所述数据采集程序的采集数据;其中,所述MQTT客户端和所述MQTT服务器之间的服务质量等级QoS为0;
分发模块,用于基于订阅主题将所述消息分发给对应的订阅者。
实际应用时,所述接收模块、第二生成模块、第二发送模块、第一生成模块、封装模块和第一发送模块可通过电子设备中的处理器,比如中央处理器(CPU,CentralProcessing Unit)、数字信号处理器(DSP,Digital Signal Processor)、微控制单元(MCU,Microcontroller Unit)或可编程门阵列(FPGA,Field-Programmable GateArray)等实现。
需要说明的是:上述实施例提供的MQTT客户端和MQTT服务端在进行网闸穿透时,仅以上述各模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的模块完成,即将装置的内部结构划分成不同的模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的MQTT客户端/MQTT服务器与网闸穿透方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述MQTT客户端/MQTT服务器可以是镜像文件形式,该镜像文件被执行后,可以以容器或者虚拟机的形式运行,以实现本申请所述的网闸穿透方法。当然也不局限为镜像文件形式,只要能够实现本申请所述的网闸穿透方法的一些软件形式都在本申请的保护范围之内。
基于上述程序模块的硬件实现,且为了实现本申请实施例的方法,本申请实施例还提供了一种电子设备。图13为本申请实施例电子设备的硬件组成结构示意图,如图13所示,电子设备包括:
通信接口,能够与其它设备比如网络设备等进行信息交互;
处理器,与所述通信接口连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述电子设备侧一个或多个技术方案提供的方法。而所述计算机程序存储在存储器上。
当然,实际应用时,电子设备中的各个组件通过总线系统耦合在一起。可理解,总线系统用于实现这些组件之间的连接通信。总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图13中将各种总线都标为总线系统。
上述电子设备可以是集群形式,比如是云计算平台形式,所谓云计算平台是采用计算虚拟化、网络虚拟化、存储虚拟化技术把多个独立的服务器物理硬件资源组织成池化资源的一种业务形态,它是一种基于虚拟化技术发展基础上软件定义资源的结构,可以提供虚拟机、容器等形态的资源能力。通过消除硬件与操作系统之间的固定关系,依赖网络的连通统一资源调度,然后提供所需要的虚拟资源和服务,是一种新型的IT,软件交付模式,具备灵活,弹性,分布式,多租户,按需等特点。
目前的云计算平台支持几种服务模式:
SaaS(Software as a Service,软件即服务):云计算平台用户无需购买软件,而改为租用部署于云计算平台的软件,用户无需对软件进行维护,软件服务提供商会全权管理和维护软件;
PaaS(Platform as a Service,平台即服务):云计算平台用户(此时通常为软件开发商)可以在云计算平台提供的架构上建设新的应用,或者扩展已有的应用,同时却不必购买开发、质量控制或生产服务器;
IaaS(Infrastructure as a Service,基础架构即服务):云计算平台通过互联网提供了数据中心、基础架构硬件和软件资源,IaaS模式下的云计算平台可以提供服务器、操作系统、磁盘存储、数据库和/或信息资源。
本申请实施例中的存储器用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。
可以理解,存储器可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read OnlyMemory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,CompactDisc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,RandomAccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static RandomAccess Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static RandomAccess Memory)、动态随机存取存储器(DRAM,Dynamic RandomAccess Memory)、同步动态随机存取存储器(SDRAM,Synchronous DynamicRandomAccess Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,DoubleDataRate Synchronous Dynamic RandomAccess Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic RandomAccess Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic RandomAccess Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus RandomAccess Memory)。本申请实施例描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
上述本申请实施例揭示的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器,处理器读取存储器中的程序,结合其硬件完成前述方法的步骤。
可选地,所述处理器执行所述程序时实现本申请实施例的各个方法中由电子设备实现的相应流程,为了简洁,在此不再赘述。
在示例性实施例中,本申请实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的第一存储器,上述计算机程序可由电子设备的处理器执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置、电子设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,本申请实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
另外,在本申请实例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种网闸穿透方法,其特征在于,所述方法应用于第一网络中的消息队列遥测传输协议MQTT客户端,所述MQTT客户端以库的形式供第一网络中的数据采集程序调用,所述数据采集程序用于将采集数据通过所述MQTT客户端发送给第二网络中的MQTT服务器,所述网闸穿透方法包括:
生成请求报文的固定报头;所述固定报头中的设定标志位的值为设定值;
基于所述固定报头对所述请求报文进行封装;
将封装好的所述请求报文通过单向网闸发送给所述第二网络中的MQTT服务器,以使所述MQTT服务器根据所述请求报文返回满足网闸穿透条件的响应报文;所述网闸穿透条件表征所述响应报文的所有字节全为1或0;所述第一网络与所述第二网络之间通过所述单向网闸进行隔离。
2.如权利要求1所述的方法,其特征在于,所述请求报文包括以下任意一项:
连接请求报文;
连接保活请求报文。
3.如权利要求2所述的方法,其特征在于,若所述请求报文为连接请求报文,所述方法还包括:
若接收到所述MQTT服务器发送的响应报文,确定所述MQTT客户端和所述MQTT服务器之间的连接建立成功。
4.如权利要求3所述的方法,其特征在于,在所述MQTT客户端和所述MQTT服务器之间的连接建立成功之后,所述方法还包括:
向所述MQTT服务器发布带消息主题的消息;所述消息表征所述数据采集程序的采集数据;所述MQTT客户端和所述MQTT服务器之间的QoS服务质量等级为0。
5.一种网闸穿透方法,应用于如权利要求1所述的MQTT服务器,所述MQTT服务器位于第二网络,其特征在于,所述方法包括:
接收第一网络中的MQTT客户端发送的请求报文;所述第一网络与所述第二网络之间通过单向网闸进行隔离;
若所述请求报文的固定报头中的设定标志位的值为设定值,根据所述请求报文生成满足网闸穿透条件的响应报文;所述网闸穿透条件表征所述响应报文的所有字节全为1或0;
将所述响应报文发送给所述MQTT客户端。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
接收所述MQTT客户端发布的带消息主题的消息;所述消息表征所述数据采集程序的采集数据;其中,所述MQTT客户端和所述MQTT服务器之间的服务质量等级QoS为0;
基于订阅主题将所述消息分发给对应的订阅者。
7.一种网闸穿透系统,其特征在于,包括:
第一网络中的数据采集设备,用于将采集数据通过MQTT客户端发送给第二网络中的MQTT服务器,所述MQTT客户端以库的形式供所述数据采集设备调用;
其中,所述MQTT客户端用于生成请求报文的固定报头,所述固定报头中的设定标志位的值为设定值;基于所述固定报头对所述请求报文进行封装;将封装好的所述请求报文通过单向网闸发送给所述第二网络中的MQTT服务器;
MQTT服务器,用于接收所述MQTT客户端发送的请求报文,若所述请求报文的固定报头中的设定标志位的值为设定值,根据所述请求报文生成满足网闸穿透条件的响应报文,将所述响应报文发送给所述MQTT客户端;所述网闸穿透条件表征所述响应报文的所有字节全为1或0;所述第一网络与所述第二网络之间通过所述单向网闸进行隔离。
8.一种MQTT客户端,其特征在于,包括:
第一生成模块,用于生成请求报文的固定报头;所述固定报头中的设定标志位的值为设定值;
封装模块,用于基于所述固定报头对所述请求报文进行封装;
第一发送模块,用于将封装好的所述请求报文通过单向网闸发送给所述第二网络中的MQTT服务器,以使所述MQTT服务器根据所述请求报文返回满足网闸穿透条件的响应报文;所述网闸穿透条件表征所述响应报文的所有字节全为1或0;所述第一网络与所述第二网络之间通过所述单向网闸进行隔离。
9.一种MQTT服务器,其特征在于,包括:
接收模块,用于接收第一网络中的MQTT客户端发送的请求报文;所述第一网络与所述第二网络之间通过单向网闸进行隔离;
第二生成模块,用于若所述请求报文的固定报头中的设定标志位的值为设定值,根据所述请求报文生成满足网闸穿透条件的响应报文;所述网闸穿透条件表征所述响应报文的所有字节全为1或0;
第二发送模块,用于将所述响应报文发送给所述MQTT客户端。
10.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的网闸穿透方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1至6任一项所述网闸穿透方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310108439.5A CN116112261A (zh) | 2023-01-17 | 2023-01-17 | 网闸穿透方法、系统、mqtt客户端、mqtt服务器及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310108439.5A CN116112261A (zh) | 2023-01-17 | 2023-01-17 | 网闸穿透方法、系统、mqtt客户端、mqtt服务器及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116112261A true CN116112261A (zh) | 2023-05-12 |
Family
ID=86261332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310108439.5A Pending CN116112261A (zh) | 2023-01-17 | 2023-01-17 | 网闸穿透方法、系统、mqtt客户端、mqtt服务器及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116112261A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110048927A (zh) * | 2018-01-16 | 2019-07-23 | 华为技术有限公司 | 通信方法和通信装置 |
CN111683158A (zh) * | 2020-08-12 | 2020-09-18 | 南京天创电子技术有限公司 | 一种实现同步请求响应的mqtt协议通信方法 |
CN111865715A (zh) * | 2020-06-24 | 2020-10-30 | 南京华盾电力信息安全测评有限公司 | 一种网闸适配模块和数据传输系统 |
-
2023
- 2023-01-17 CN CN202310108439.5A patent/CN116112261A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110048927A (zh) * | 2018-01-16 | 2019-07-23 | 华为技术有限公司 | 通信方法和通信装置 |
CN111865715A (zh) * | 2020-06-24 | 2020-10-30 | 南京华盾电力信息安全测评有限公司 | 一种网闸适配模块和数据传输系统 |
CN111683158A (zh) * | 2020-08-12 | 2020-09-18 | 南京天创电子技术有限公司 | 一种实现同步请求响应的mqtt协议通信方法 |
Non-Patent Citations (3)
Title |
---|
北京安盟信息技术股份有限公司: "让万物互联更简单、更安全", 《工控安全 安盟信息》, 30 June 2022 (2022-06-30), pages 33 - 34 * |
张浩然;耿战霞;鹿海成;: "跨正向隔离装置文件传输协议的设计与实现", 科技创新与应用, no. 24, 28 August 2017 (2017-08-28), pages 101 - 103 * |
程效伟;苏斌;: "电力系统跨安全防护区信息交互研究", 电力系统通信, no. 11, 10 November 2011 (2011-11-10), pages 22 - 25 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102339234B (zh) | 一种协议栈运行装置和方法 | |
CN108712332B (zh) | 一种通信方法、系统和装置 | |
CN113810349B (zh) | 数据传输方法、装置、计算机设备和存储介质 | |
CN108449418A (zh) | 一种混合云平台管理系统及方法 | |
CN115516840B (zh) | 一种信息处理方法、设备、系统、介质、芯片及程序产品 | |
CN109391500A (zh) | 一种配置管理方法、装置及设备 | |
CN113259479B (zh) | 一种数据处理方法以及设备 | |
CN111901230B (zh) | 一种支持设备接入验证的物联网网关、系统和设备接入验证的方法 | |
CN112631788B (zh) | 数据传输方法及数据传输服务器 | |
CN112653656B (zh) | 一种基于应用层协议的数据通信方法及其装置 | |
US10536560B2 (en) | System and method for implementing augmented object members for remote procedure call | |
CN115174472B (zh) | 一种消息转发处理方法及相关装置 | |
US20020046304A1 (en) | Dynamic class loading | |
CN113051202A (zh) | 接口适配方法、装置、电子设备和计算机可读存储介质 | |
CN114710549A (zh) | 一种容器平台中网卡的动态管理方法、系统及业务节点 | |
WO2018107433A1 (zh) | 信息处理方法和装置 | |
CN116414525A (zh) | 一种高并发推理服务的实施方法、推理方法及相关装置 | |
CN117135156B (zh) | 一种基于发布/订阅消息协议的边缘集群纳管方法、系统、计算机可读存储介质和电子设备 | |
US10938960B2 (en) | System and method for implementing augmented object members for remote procedure call | |
CN116112261A (zh) | 网闸穿透方法、系统、mqtt客户端、mqtt服务器及电子设备 | |
EP3002910B1 (en) | Connecting computer management systems via cellular digital telecommunication networks | |
US11663058B1 (en) | Preemptive filtering of events of an event bus with a deterministic filter | |
CN115514771A (zh) | 数据传输方法、装置、电子设备及计算机可读存储介质 | |
CN111917808B (zh) | 负荷控制方法、服务提供者nf及服务使用者nf | |
US20230171830A1 (en) | Apparatus and method for configuring data communication between robot components in different networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |