一种通信控制的方法、装置、电子设备和存储介质与流程

文档序号:18899304发布日期:2019-10-18 21:43阅读:284来源:国知局
一种通信控制的方法、装置、电子设备和存储介质与流程

本申请涉及通信技术领域,尤其涉及一种通信控制的方法、装置、电子设备和存储介质。



背景技术:

随着互联网+的发展,各个传统行业和政府部门也开始尝试利用信息通信技术以及互联网平台开放内部的业务,创造新的发展生态,而在一些因为密级要求高而必须在网络边界设立了非tcp/ip(transmissioncontrolprotocol/internetprotocol,传输控制协议/网络之间互连的协议)协议栈的数据交换平台的机构,建立移动化或者面向互联网的tcp通信举步维艰,例如设立了非tcp/ip协议栈的网闸,由于网闸内部的数据只能单向以该设备支持的方式流通,如果需要进行tcp/ip通讯则只能通过边界两边不同的数据库或者文件交换的形式完成,使得通信效率较低。

以光闸为例,光闸采用单向网闸隔离涉密网络与非涉密网络,使得涉密网络不受一般网络的攻击影响,这种技术对于能够提供异步服务的应用不会造成影响,但是这种隔离技术也带来了低下的操作效率和极为困难的开发模式,对于一般网络方式为实时双向通讯的即时通讯软件或业务要求来说难以实现双向通信。

综上,目前的网闸通信效率较低。



技术实现要素:

本申请实施例提供一种通信控制方法、装置、电子设备和存储介质,用以提高网闸的通信效率。

本申请实施例提供的第一种通信控制方法,包括:

第一网关设备接收第二网关设备发送的轮询响应,从所述轮询响应中获取至少一个第一通信命令,并根据所述至少一个第一通信命令处理通信双方之间的通信;

所述第一网关设备根据所述通信双方中的一方的通信行为确定至少一个第二通信命令,并将所述至少一个第二通信命令发送给所述第二网关设备,以使所述第二网关设备根据所述至少一个第二通信命令处理所述通信双方之间的通信;

其中,所述轮询响应是根据所述第一网关设备发送的http(hypertexttransferprotocol,超文本传输协议)轮询请求发送的;所述第一通信命令涉及所述通信双方,所述通信双方中的一方位于第一网关设备连接的第一网络中,另一方位于第二网关设备连接的第二网络中,所述第一通信命令为所述第二网关设备根据通信双方中的另一方的通信行为确定的,所述第二通信命令为所述第一网关设备根据通信双方中的一方的通信行为确定的。

本申请实施例提供的第二种通信控制方法,包括:

第二网关设备根据通信双方中的另一方的通信行为确定至少一个第一通信命令,并向第一网关设备发送包含所述至少一个第一通信命令的轮询响应,以使所述第一网关设备根据所述至少一个第一通信命令处理通信双方之间的通信;

所述第二网关设备在接收到所述第一网关设备发送的至少一个第二通信命令时,根据所述至少一个第二通信命令处理所述通信双方之间的通信;

其中,所述轮询响应是根据所述第一网关设备发送的http轮询请求发送的;所述第一通信命令涉及所述通信双方,所述通信双方中的一方位于第一网关设备连接的第一网络中,另一方位于第二网关设备连接的第二网络中,所述第一通信命令为所述第二网关设备根据通信双方中的另一方的通信行为确定的,所述第二通信命令为所述第一网关设备根据通信双方中的一方的通信行为确定的。

本申请实施例提供的第一种通信控制装置,包括:

第三处理单元,用于接收第二网关设备发送的轮询响应,从所述轮询响应中获取至少一个第一通信命令,并根据所述至少一个第一通信命令处理通信双方之间的通信;

第三收发单元,用于根据所述通信双方中的一方的通信行为确定至少一个第二通信命令,并将所述至少一个第二通信命令发送给所述第二网关设备,以使所述第二网关设备根据所述至少一个第二通信命令处理所述通信双方之间的通信;

其中,所述轮询响应是根据所述第一网关设备发送的http轮询请求发送的;所述第一通信命令涉及所述通信双方,所述通信双方中的一方位于第一网关设备连接的第一网络中,另一方位于第二网关设备连接的第二网络中,所述第一通信命令为所述第二网关设备根据通信双方中的另一方的通信行为确定的,所述第二通信命令为所述第一网关设备根据通信双方中的一方的通信行为确定的。

可选的,所述http轮询请求的类型为get(查)类型;

所述第三收发单元具体用于:

将所述至少一个第二通信命令发送给所述第二网关设备,包括:

将包含所述至少一个第二通信命令的post(改)请求发送给所述第二网关设备。

可选的,所述第三处理单元具体用于:

所述第一通信命令包含数据接收结果时,将所述第一通信命令通过http请求发送给所述通信双方中的一方。

可选的,所述第三处理单元具体用于:

所述第一通信命令包含所述通信双方中的另一方需要发送的数据时,根据所述发送数据的命令中的通信连接标识确定所述第一通信命令涉及所述通信双方中的一方,从所述第一通信命令中获取数据并将数据通过http请求发送给所述通信双方中的一方。

可选的,所述第三收发单元具体用于:

若所述通信双方中的一方的通信行为为向所述通信双方中的另一方发送数据,则生成包含所述通信双方中的一方需要发送的数据的所述第二通信命令;或

若所述通信双方中的一方的通信行为为接收所述第一网关设备发送的从第一通信命令中获取的数据,则生成包含数据接收结果的所述第二通信命令。

本申请实施例提供的第二种通信控制装置,包括:

第四收发单元,用于根据通信双方中的另一方的通信行为确定至少一个第一通信命令,并向第一网关设备发送包含所述至少一个第一通信命令的轮询响应,以使所述第一网关设备根据所述至少一个第一通信命令处理通信双方之间的通信;

第四处理单元,用于在接收到所述第一网关设备发送的至少一个第二通信命令时,根据所述至少一个第二通信命令处理所述通信双方之间的通信;

其中,所述轮询响应是根据所述第一网关设备发送的http轮询请求发送的;所述第一通信命令涉及所述通信双方,所述通信双方中的一方位于第一网关设备连接的第一网络中,另一方位于第二网关设备连接的第二网络中,所述第一通信命令为所述第二网关设备根据通信双方中的另一方的通信行为确定的,所述第二通信命令为所述第一网关设备根据通信双方中的一方的通信行为确定的。

可选的,所述http轮询请求的类型为get类型;

所述第四收发单元具体用于:

在接收到所述第一网关设备发送的包含所述至少一个第二通信命令的post请求时,根据所述post请求中的至少一个第二通信命令处理所述通信双方之间的通信。

可选的,所述第四收发单元具体用于:

若所述通信双方中的另一方的通信行为为向所述通信双方中的一方发送数据,则生成包含所述通信双方中的另一方需要发送的数据的所述第一通信命令;或

若所述通信双方中的另一方的通信行为为接收所述第二网关设备发送的从第二通信命令中获取的数据,则生成包含数据接收结果的所述第一通信命令。

可选的,所述第四收发单元还用于:

将确定的所述至少一个第一通信命令缓存到待发送命令队列;

所述第四收发单元具体用于:

接收到所述第一网关设备发送的http轮询请求时,从所述待发送命令队列中获取所述至少一个第一通信命令,并将所述至少一个第一通信命令携带在所述轮询响应发送给所述第一网关设备。

可选的,所述第四收发单元具体用于:

所述第二通信命令包含数据接收结果时,将所述第二通信命令通过http请求发送给所述通信双方中的另一方。

可选的,所述第四处理单元具体用于:

所述第二通信命令包含所述通信双方中的一方需要发送的数据时,根据所述发送数据的命令中的通信连接标识确定所述通信双方中的另一方,从所述第二通信命令中获取数据并将数据通过http请求发送给所述通信双方中的另一方。

本申请实施例提供的一种电子设备,包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行上述第一种通信控制方法至第二种通信控制方法中任一方法的步骤。

本申请实施例提供一种计算机可读存储介质,其包括程序代码,当所述程序产品在通信控制装置上运行时,所述程序代码用于使所述通信控制装置执行上述第一种通信控制方法至第二种通信控制方法中任一方法的步骤。

本申请有益效果如下:

本申请实施例提供的通信控制方法、装置、电子设备和存储介质,由于在第一网络中部署的第一网关设备以及在第二网络中部署的第二网关设备之间通过固定发起方数据交换设备允许的http轮询等方式实现通信命令的传输,将第一网关设备作为固定发起方向第二网关设备进行轮询以及通信命令的转发,由网关设备根据通信双方的通信确定通信行为,并根据第一通信命令或第二通信命令处理通信双方之间的通信,达到数据实时同步的目的,针对通讯软件或者其他要求实时通讯的业务,使用本服务,可以达到在双向数据交换平台一样的效果在满足计算机信息系统国际互联网保密管理规定的同时,在网络边界设备上实现了双向通讯的目的,保证了通信的安全,提高了通信效率。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本申请实施例中的一种数据交换的一个可选的示意图;

图2为本申请实施例的应用场景示意图;

图3为本申请实施例中第一种通信控制方法的一个可选的流程示意图;

图4为本申请实施例中第二种通信控制方法的一个可选的流程示意图;

图5为本申请实施例中第三种通信控制方法的一个可选的流程示意图;

图6为本申请实施例中第四种通信控制方法的一个可选的流程示意图;

图7为本申请实施例中的第一个可选的通信控制装置框图;

图8为本申请实施例中的第二个可选的通信控制装置框图;

图9为本申请实施例中第五种通信控制方法的一个可选的流程示意图;

图10为本申请实施例中第六种通信控制方法的一个可选的流程示意图;

图11为本申请实施例中的第三个可选的通信控制装置框图;

图12为本申请实施例中的一种通信控制方法的一个可选的交互实现时序流程示意图;

图13为本申请实施例中的一种通信控制方法的另一个可选的交互实现时序流程示意图;

图14为本申请实施例中的一种第一网关设备的组成结构示意图;

图15为本申请实施例中的一种第二网关设备的组成结构示意图;

图16为本申请实施例中的一种第一网闸的组成结构示意图;

图17为本申请实施例中的一种第二网闸的组成结构示意图;

图18为本申请实施例中的另一种第一网关设备的组成结构示意图;

图19为本申请实施例中的另一种第二网关设备的组成结构示意图;

图20为应用本申请实施例的一种计算装置的一个硬件组成结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。

下面对本申请实施例中涉及的部分概念进行介绍。

1、固定发起方数据交换平台:指只能从某一端a发起请求,另一方b响应请求,而不能直接从b发起请求的交换平台,常见交换平台如网闸、硬件防火墙、软件防火墙等。

2、网闸:全称安全隔离网闸。安全隔离网闸是一种由带有多种控制功能专用硬件在电路上切断网络之间的链路层连接,并能够在网络间进行安全适度的应用数据交换的网络安全设备。

3、光闸:网闸的一种,由安全隔离网闸基础上发展而成、基于光的单向性的单向隔离软硬件系统。用于对安全性要求极高的网络的数据交换场景,如涉密网络与非涉密网络之间,行业内网与公共网络之间。根据业务场景需求,单向隔离光闸一般支持数据库传输、文件传输功能,如果业务系统/通讯软件需要在不同的网路之间进行通讯,则通过在涉密网络与非涉密网络各自部署一套数据库或者文件服务系统,如图1所示,涉密网络业务系统从非涉密网络系统的数据库脱敏数据输出,再从非涉密网络中同步请求数据进涉密网络完成数据交换。

4、即时通讯软件:是一种基于互联网的及时交流信息的应用,即时通讯应用允许两个人或多人使用互联网即时地进行文字信息、图片、音视频等交流,这样的即时通讯应用,如企业微信,微信等。

5、命令队列:有时需要将多个请求排队,当一个请求发送者发送一个请求时,将不止一个请求接收者产生响应,这些请求接收者将逐个执行业务方法,完成对请求的处理。此时,可以通过命令队列来实现。命令队列的实现方法有多种形式,其中最常用、灵活性最好的一种方式是增加一个commandqueue(命令队列)类,由该类来负责存储多个命令对象,而不同的命令对象可以对应不同的请求接收者。

6、客户端(client):或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行。因特网发展以后,较常用的用户端包括了如万维网使用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端软件等。对于这一类应用程序,需要网络中有相应的服务器和服务程序来提供相应的服务,如数据库服务,电子邮件服务等等,这样在客户机和服务器端,需要建立特定的tcp连接,来保证应用程序的正常运行。

7、服务端(server):是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据。

8、文件目录:一个计算机系统中有成千上万个文件,为了便于对文件进行存取和管理,计算机系统建立文件的索引,即文件名和文件物理位置之间的映射关系,这种文件的索引称为文件目录。在每一个文件在文件目录中登记一项,作为文件系统建立和维护文件的清单。文件目录表目至少要包含文件名、文件内部标识、文件的类型、文件存储地址、文件的长度、访问权限、建立时间和访问时间等内容。

9、数据表:或称表,是数据库最重要的组成部分之一。数据库只是一个框架,数据表才是其实质内容,一个数据库由若干数据库表组成的。如“教学管理系统”中,“教学管理”数据库包含分别围绕特定主题的6个数据表“教师”表、“课程”表、“成绩”表、“学生”表、“班级”表和“授课”表,用来管理教学过程中学生、教师、课程等信息。这些各自独立的数据表通过建立关系被联接起来,成为可以交叉查阅、一目了然的数据库。

以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

在本申请实施例中,通信双方指需要通过网络进行通信的双方,其中通信双方中的一方位于第一网关设备连接的第一网络中,另一方位于第二网关设备连接的第二网络中,例如一方为第一网络中的业务系统服务端,另一方第二网络中的业务系统客户端;一方为第一网络中的业务系统客户端,另一方为第二网络中的业务系统客户端等。其中,第一通信命令是由通信双方中的一方发给另一方的,第二通信命令是由通信双方中的另一方发给一方的,第一通信命令和第二通信命令都涉及通信双方。

其中,第一网络中可以不只有一个客户端或服务端,第二网络中也可以不只有一个客户端或服务端,例如,第一网络中有客户端1、服务端2、客户端3,第二网络中有服务端1、客户端2、服务端3,当客户端1需要与服务端1进行通信时,则客户端1为通信双方中的一方,服务端1为通信双方中的另一方;当客户端3需要与服务端1进行通信时,则客户端3为通信双方中的一方,服务端1为通信双方中的另一方等。

在本申请实施例中,第一网络和第二网络为不同的网络,其中第一网络与第二网络可以指行业内网与公共网络,也可以指涉密网络和非涉密网络,例如第一网络为涉密网络,第二网络为非涉密网络;或者,第一网络为非涉密网络,第二网络为涉密网络等。

例如用户在使用手机浏览器浏览万维网时,即内网中的客户端(浏览器客户端)向外网中的服务端(万维网服务器)请求数据时需要实现内网的客户端与外网的服务端之间的通信;或者用户在家使用电脑办公时,想要登录学校校园网的网站下文件时,即外网中的客户端(电脑)向内网的服务端(学校校园网的服务器)请求数据时需要实现内网的服务端与外网的客户端之间的通信。

在本申请实施例中,网闸作为一种单向网关,内部的数据只能单向以该设备支持的方式流通,下面主要以光闸为例进行详细介绍,假设通信双方为客户端和服务端,第一光闸即第一网闸,第二光闸即第二网闸。

如图2所示,其为本申请实施例的应用场景示意图。本申请实施例中,其中业务系统服务端10位于tcpbridge(第一网关设备20)连接的第一网络中,业务系统60位于remotetcpbridge(第二网关设备50)连接的第二网络中,当第二网络中的业务系统客户端60需要与第一网络中的业务系统服务端10进行通信(例如传输文件/下载文件)时,第二网关设备50根据业务系统客户端60的通信行为确定至少一个第一通信命令(例如接收到业务系统客户端60发送的数据,则将数据翻译成第一通信命令)缓存到第一光闸30中,第一网关设备30通过轮询第一光闸30获取至少一个第一通信命令,并根据获取到的至少一个第一通信命令处理业务系统服务端10与业务系统客户端60之间的通信(例如第一网关设备20获取第一通信命令中的数据发送给业务服务端10);当第一网关设备20根据业务系统服务端10的通信行为确定至少一个第二通信命令(例如接收到业务系统服务端10发送的数据,则将数据翻译成第二通信命令),并将至少一个第二通信命令缓存到第二光闸40中,由第二光闸40发送给第二网关设备50,第二网关设备50根据接收到的第二通信命令处理业务系统服务端10与业务系统客户端60之间的通信(例如第二网关设备50获取第二通信命令中的数据发送给业务客户端60),完成业务系统服务端10与业务系统客户端60之间的通信(例如数据交换)。

在本申请实施例中,主要是以第一网络为涉密网络,第二网络为非涉密网络为例进行详细介绍,反之,第一网络为非涉密网络,第二网络为涉密网络时,本申请实施例中的方法同样适用,不再进行详细介绍。

在本申请实施例中,通信双方中的一方或另一方的通信行为具体指tcp协议的握手过程和/或数据通信过程,包括tcp连接建立时的三次握手、tcp连接释放时的四次握手、数据传输(数据包、文件)、收发消息、请求等的任意一种或多种。

需要说明的是,本申请实施例中所列举的通信行为只是举例说明,任意一种通信双方中的通信行为都适用于本申请实施例。

在本申请实施例中,通信双方之间建立tcp连接的实际过程为第一网络服务端(或客户端)与第一网关设备建立连接,第二网络客户端(或服务端)与第二网关设备建立连接,第一网关设备和第二网络设备之间通过光闸转发。

具体过程为:在第二网络中的客户端需要与第一网络中的服务端进行通信时,或者第二网络中的服务端需要与第一网络中的客户端进行通信时,由第二网络的客户端(或服务端)发起请求,通过在第二网络客户端(或服务端)与第二网关设备建立tcp连接,以及在第一网络的服务端(或客户端)第一网关设备之间的tcp连接,实现第二网络的客户端与第一网络的服务端之间的通信(或第二网络的服务端与第一网络的客户端之间的通信)。

在本申请实施例中所列举的光闸(包含第一光闸、第二光闸)上部署有ftp(filetransferprotocol,文件传输协议)软件或数据库。

参阅图3所示,为本申请实施例提供的一种通信控制的方法的实施流程图,应用于基于数据库或文件摆渡模式的第一网关设备,该方法的具体实施流程如下:

s31:第一网关设备接收第一网闸发送的轮询响应,从轮询响应中获取至少一个第一通信命令,并根据至少一个第一通信命令处理通信双方之间的通信。

其中,轮询响应是根据第一网关设备发送的轮询请求发送的;第一通信命令为第二网关设备根据通信双方中的另一方的通信行为确定后发送给第一网闸的。

可选的,第一网关设备会周期或定时向第一光闸发起轮询请求,可以采用定时器轮询的方式,也可以开新进程进行轮询,例如第一网关设备每10分钟向第一光闸发起一次轮询请求,询问第一光闸中是否有新增的第一通信命令。

具体的,第一网关设备轮询第一光闸对应的数据库的数据表或指定格式的文件的文件目录下是否有新增的条目或文件,例如dat(data,数据,扩展名为.dat)文件。

可选的,在第一网关设备向第一光闸发送轮询请求后,若在第三预设时间内未接收到第一光闸发送的轮询响应,则重新向第一光闸发送新的轮询请求。一般预设时间为当前轮询次数*1毫秒,最大不超过50毫秒,以提高cpu使用率;若在预设时间内接收到第一光闸发送的轮询响应,则立刻获取轮询响应中的至少一个第一通信命令,并根据获取的至少一个第一通信命令处理通信双方之间的通信。

可选的,第一网关设备从轮询响应中获取的至少一个第一通信命令可以是命令包。

s32:第一网关设备根据通信双方中的一方的通信行为确定至少一个第二通信命令,并将至少一个第二通信命令发送给第二网闸,以使第二网关设备从第二网闸中获取至少一个第二通信命令,并根据至少一个第二通信命令处理通信双方之间的通信。

在本申请实施例中,第二通信命令是第一网关设备根据通信双方中的一方的通信行为确定的,在第一网关设备确定至少一个第二通信命令后将确定的第二通信命令发送给第二光闸。

可选的,第一网关设备将至少一个第二通信命令发送给第二光闸时:第一网关设备将至少一个第二通信命令存储到第二光闸对应的数据库或指定格式的文件,并放入对应的数据库表或文件目录下,以使第二光闸将接收到的至少一个第二通信命令发送给第二网关设备。

可选的,第一网关设备将至少一个第二通信命令发送给第二光闸时可以以命令包的形式发送,第一网关设备将至少一个第二通信命令组装成一个或多个命令包;若组装成多个命令包,则第一网关设备可将一个命令包存储到一个数据表或某一个指定格式文件下,也可以将多个命令包存储到一个数据表或某一个指定格式文件下。

在本申请实施例中,第一通信命令或第二通信命令包括但不限于下列的部分或全部:

发起tcp连接的命令,包含需要发送的数据的命令,包含tcp连接建立结果的命令,包含数据接收结果的命令,结束tcp连接的命令。

其中,当包含需要发送的数据的命令为第一通信命令时,需要发送的数据指通信双方中的另一方发给一方的数据;当包含需要发送的数据的命令为第二通信命令时,需要发送的数据指通信双方中的一方发给另一方的数据。

可选的,第一网关设备在确定第二通信命令后,将tcp连接对应的通信连接标识置于该第二通信命令中,同样的,第一网关设备在确定第一通信命令后,将tcp连接对应的通信连接标识置于该第一通信命令中。

其中,通信连接标识用于表示同一tcp连接的唯一标识,可用uuid(universallyuniqueidentifier,通用唯一识别码)表示,针对同一通信双方,在tcp连接建立到释放过程中确定的所有第一通信命令和第二通信命令的uuid相同,(指在tcp连接建立到释放过程中确定的所有第一通信命令和第二通信命令对应的客户端为同一客户端,对应的服务端为同一服务端)。

可选的,发起tcp连接的命令可以表示为co(connect),用于发起tcp连接。

例如,co命令(数据包)中可包括uuid、clientip(通信双方中的另一方的ip)、serverip(通信双方中的一方的ip)、publicports(公共监听端口端口号)等。

可选的,包含需要发送的数据的命令可以表示为:da(data),用于发送数据。

例如,tcp连接建立成功后,由任意一网关设备发起da。其中,da可包含uuid、count、data这三项内容,data表示需要传输的数据,count可表示传输数据的次数。

可选的,包含tcp连接建立结果或数据接收结果的命令可以表示为:re(resume或receive)。

例如,当网关设备和客户端(或服务端)之间的tcp连接建立成功时,由第一网关设备发给co发起的第二网关设备(或第二网关设备发给co发起的第一网关设备),返回成功连接。

当网关设备和客户端(或服务端)之间的tcp连接建立失败时,由第一网关设备发给co发起的第二网关设备(或第二网关设备发给co发起的第一网关设备),返回连接失败。

当客户端(或服务端)收到数据时,由第一网关设备(或第二网关设备)发给da发起的第二网关设备(或第一网关设备),表示数据成功收到。

当客户端(或服务端)未收到数据时,由第一网关设备(或第二网关设备)发给da发起的第二网关设备(或第一网关设备),表示数据未收到。

可选的,结束tcp连接的命令可以为:en:end,用于结束tcp连接,当tcp建立成功或主动断掉时,由网关设备发给另一网关设备,例如en:uuid(其中uuid表示同一tcp连接的唯一标识)。

在本申请实施例中,第一通信命令不同时,第一网关设备对命令的处理方式也不相同,下面针对不同的第一通信命令进行详细介绍,假设tcpbridge为第一网关设备:

处理方式一:若第一通信命令为发起tcp连接的命令时,第一网关设备则和第一通信命令涉及的通信双方中的一方建立tcp连接,其中通信双方中的一方位于第一网络中。

例如,tcpbridge从一次轮询响应中获取到了一个co命令,co命令包括:uuid1、服务端1的ip,客户端1的ip,其中通信连接标识uuid1对应的通信双方中的一方为服务端1,对应的通信双方中的另一方为客户端1,则tcpbridge与服务端1建立tcp连接(tcpbridge与服务端1进行三次握手)。

处理方式二:若第一通信命令为结束tcp连接的命令时,第一网关设备根据该结束tcp连接的命令中的通信连接标识,释放对应的tcp连接(即第一网关设备释放与通信双方中的一方的tcp连接)。

例如,tcpbridge接收到一个en命令,en命令包括:uuid1,其中,uuid1对应的通信双方中的一方为服务端1,uuid1对应的通信双方中的另一方为客户端1,则tcpbridge释放与服务端1之间tcp连接(tcpbridge与服务端1进行四次握手)。

处理方式三:第一通信命令中包含通信双方中的另一方需要发送的数据时,第一网关设备根据第一通信命令中的通信连接标识确定第一通信命令涉及通信双方中的一方,从第一通信命令中获取数据并将数据发送给通信双方中的一方。

例如,tcpbridge接收到一个da命令,da命令包括:uuid1、data、count,其中uuid1对应的通信双方中的一方为服务端1,对应的通信双方中的另一方为客户端1,则tcpbridge将da命令中的data发送给服务端1。

处理方式四:第一通信命令中包含tcp连接建立结果或数据接收结果时,第一网关设备将所述第一通信命令发送给所述通信双方中的一方。

例如,tcpbridge接收到一个re命令(表示数据接收结果或tcp连接建立结果),re命令包括:uuid1,其中uuid1对应的通信双方中的一方为服务端1,对应的通信双方中的另一方为客户端1,则tcpbridge将re命令转发给服务端1。

在本申请实施例中,第一网关设备根据通信双方中的一方的通信行为确定至少一个第二通信命令时,针对不同的通信行为确定的第二通信命令也不相同,下面进行详细介绍,假设tcpbridge为第一网关设备,通信双方中的一方为服务端2,通信双方中的另一方为客户端2:

确定方式一、若通信双方中的一方的通信行为为主动与第一网关设备建立tcp连接,则第一网关设备将发起tcp连接的命令作为第二通信命令。

例如,服务端2请求与客户端2建立tcp连接时,服务端2向tcpbridge发起建立tcp连接的请求,与tcpbridge进行三次握手,因而第一网关设备确定第二通信命令为发起tcp连接的命令。

确定方式二、若通信双方中的一方的通信行为为与第一网关设备释放tcp连接,则第一网关设备将结束tcp连接的命令作为第二通信命令。

例如,服务端2请求释放与客户端2之前的tcp连接时,服务端2向tcpbridge发起结束tcp连接的请求,与tcpbridge进行四次握手,因而第一网关设备确定第二通信命令为结束tcp连接的命令。

确定方式三、若通信双方中的一方的通信行为为向通信双方中的另一方发送数据,则第一网关设备生成包含通信双方中的一方需要发送的数据的第二通信命令。

例如,服务端2请求向客户端2发送数据data1时,tcpbridge生成包含数据data1的第二通信命令。

确定方式四、若通信双方中的一方的通信行为为在接收到第一通信命令后与第一网关设备建立tcp连接,则第一网关设备生成包含tcp连接建立结果的第二通信命令。

例如,服务端2在接收到第一通信命令co1后与tcpbridge建立tcp连接,则tcpbridge生成包含tcp连接建立成功的第二通信命令;假设服务端2与tcpbridge未成功建立tcp连接,则tcpbridge生成包含tcp连接建立失败的第二通信命令。

确定方式五、若通信双方中的一方的通信行为为接收第一网关设备发送的从第一通信命令中获取的数据,则第一网关设备生成包含数据接收结果的第二通信命令。

例如,服务端2成功接收到tcpbridge发送的数据,则tcpbridge生成包含数据接收成功的第二通信命令;假设服务端2没有接收到tcpbridge发送的数据,则tcpbridge生成包含数据接收失败的第二通信命令。

在一种可能的实施方式中,若第一网关设备接收到第二网关设备发送的包含重置命令的轮询响应,则第一网关设备释放与通信双方中的一方建立的所有tcp连接。

可选的,重置命令可以表示为fl(flush)或表示为rt(reset),用于关闭所有tcp连接或关闭部分tcp连接,恢复重置状态。一般在数据重发,或者是tcp连接非正常释放,或者是第一网关设备(或第二网关设备)挂机时由任一网关设备发起。

可选的,重置反馈命令可以表示为ra(resetack),用于反馈收到的重置请求,表示本端已重置。

例如,第一网关设备接收到第二网关设备发送的rt命令,且当前与第一网关设备建立tcp连接的有客户端1、服务端1、服务端2,则第一网关设备释放与客户端1、服务端1以及服务端2的tcp连接,并在释放tcp连接后向第二网关设备发送ra命令。

在一种可能的实施方式中,若第一网关设备在第一预设时间内未接收到第二网关设备的发送的轮询响应,则第一网关设备释放与通信双方中的一方建立的所有tcp连接,以及向第二网关设备发送重置命令,以使第二网关设备释放与通信双方中的另一方建立的所有tcp连接。

例如,位于第一网络中的有服务端1、客户端2,位于第二网络中的有客户端1、服务端2,在客户端1与服务端1之间,服务端2与客户端2之间都完成数据传输后,第一网关设备又向第一光闸发送了第3次轮询请求的,假设预设时间为3毫秒,第一网关设备在3毫秒之内未接收到第一光闸发送的轮询响应,假设当前与第一网关设备建立tcp连接的有服务端1,则释放与服务端1的tcp连接,并向第二网关设备发送fl命令。

参阅图4所示,为本申请实施例提供的一种通信控制的方法的实施流程图,应用于基于数据库或文件摆渡模式的第二网关设备,该方法的具体实施流程如下:

s41:第二网关设备根据通信双方中的另一方的通信行为确定至少一个第一通信命令,并将至少一个第一通信命令发送给第一网闸,以使第一网关设备在接收到第一网闸发送的轮询响应后,从轮询响应中获取至少一个第一通信命令,并根据至少一个第一通信命令处理通信双方之间的通信。

在本申请实施例中,第二网关设备根据通信双方中的另一方的通信行为确定至少一个第二通信命令时,针对不同的通信行为确定的第二通信命令也不相同,下面进行详细介绍,假设remotetcpbridge为第二网关设备,通信双方中的一方为服务端2,通信双方中的另一方为客户端2。

确定方式一、若通信双方中的另一方的通信行为为主动与第二网关设备建立tcp连接,则第二网关设备将发起tcp连接的命令作为第一通信命令。

例如,客户端2请求与服务端2建立tcp连接时,客户端2向remotetcpbridge发起建立tcp连接的请求,与remotetcpbridge进行三次握手,因而第二网关设备确定第一通信命令为发起tcp连接的命令。

确定方式二、若通信双方中的另一方的通信行为为与第二网关设备释放tcp连接,则第二网关设备将结束tcp连接的命令作为第一通信命令。

例如,客户端2请求释放与服务端2之前的tcp连接时,客户端2向remotetcpbridge发起结束tcp连接的请求,与remotetcpbridge进行四次握手,因而第二网关设备确定第一通信命令为结束tcp连接的命令。

确定方式三、若通信双方中的另一方的通信行为为向通信双方中的一方发送数据,则第二网关设备生成包含通信双方中的另一方需要发送的数据的第一通信命令。

例如,客户端2请求向服务端2发送数据data1时,remotetcpbridge生成包含数据data1的第一通信命令。

确定方式四、若通信双方中的另一方的通信行为为在接收到第一通信命令后与第二网关设备建立tcp连接,则第二网关设备生成包含tcp连接建立结果的第一通信命令。

例如,客户端2在接收到第一通信命令co2后与remotetcpbridge建立tcp连接,则remotetcpbridge生成包含tcp连接建立成功的第一通信命令;假设客户端2与remotetcpbridge未成功建立tcp连接,则remotetcpbridge生成包含tcp连接建立失败的第一通信命令。

确定方式五、若通信双方中的另一方的通信行为为接收第二网关设备发送的从第一通信命令中获取的数据,则第二网关设备生成包含数据接收结果的第一通信命令。

例如,客户端2成功接收到remotetcpbridge发送的数据,则remotetcpbridge生成包含数据接收成功的第一通信命令;假设客户端2没有接收到remotetcpbridge发送的数据,则remotetcpbridge生成包含数据接收失败的第一通信命令。

可选的,第二网关设备将至少一个第一通信命令发送给第一光闸时,具体的:第二网关设备将至少一个第一通信命令存储到第一光闸对应的数据库或指定文件中,以使第一光闸将接收到的至少一个第一通信命令发送给第一网关设备。

例如,第二网关设备将至少一个第一通信命令存储到第一光闸对应的数据库或指定文件,并添加到数据库的数据表或指定格式的文件的文件目录下。

s42:第二网关设备从第二网闸中获取第一网关设备发送的至少一个第二通信命令,并根据至少一个第二通信命令处理通信双方之间的通信。

其中,第二通信命令不同时,第二网关设备对命令的处理方式也不相同,下面针对不同的第二通信命令进行详细介绍,假设remotetcpbridge为第二网关设备:

处理方式一:若第二通信命令为发起tcp连接的命令时,第二网关设备则和通信双方中的另一方建立tcp连接,其中通信双方中的另一方位于第二网络中。

例如,remotetcpbridge从第二光闸中获取到了一个co命令,co命令包括:uuid1、服务端1的ip,客户端1的ip,其中通信连接标识uuid1对应的通信双方中的另一方为服务端1,对应的通信双方中的一方为客户端1,则remotetcpbridge与服务端1建立tcp连接(remotetcpbridge与服务端1进行三次握手)。

处理方式二:若第二通信命令为结束tcp连接的命令时,第二网关设备根据该结束tcp连接的命令中的通信连接标识,释放对应的tcp连接(即第二网关设备释放与通信双方中的另一方的tcp连接)。

例如,remotetcpbridge接收到一个en命令,en命令包括:uuid1,其中,uuid1对应的通信双方中的另一方为服务端1,uuid1对应的通信双方中的一方为客户端1,则remotetcpbridge释放与服务端1之间tcp连接(remotetcpbridge与服务端1进行四次握手)。

处理方式三:第二通信命令中包含通信双方中的一方需要发送的数据时,第二网关设备根据第二通信命令中的通信连接标识确定通信双方中的另一方,从第二通信命令中获取数据并将数据发送给通信双方中的另一方。

例如,remotetcpbridge接收到一个da命令,da命令包括:uuid1、data、count,其中uuid1对应的通信双方中的另一方为服务端1,对应的通信双方中的一方为客户端1,则remotetcpbridge将da命令中的data发送给服务端1。

处理方式四:第二通信命令中包含tcp连接建立结果或数据接收结果时,第二网关设备将所述第二通信命令发送给所述通信双方中的另一方。

例如,remotetcpbridge接收到一个re命令(表示数据接收结果或tcp连接建立结果),re命令包括:uuid1,其中uuid1对应的通信双方中的另一方为服务端1,对应的通信双方中的一方为客户端1,则remotetcpbridge将re命令转发给服务端1。

在一种可能的实施方式中,若第二网关设备在第二预设时间内未接收到第二光闸发送的第二通信命令,则第二网关设备释放与通信双方中的另一方建立的所有tcp连接,以及向第一网关设备发送重置命令,以使第一网关设备释放与通信双方中的一方建立的所有tcp连接。

例如,位于第一网络中的有服务端1、客户端2,位于第二网络中的有客户端1、服务端2,在客户端1与服务端1之间,服务端2与客户端2之间都完成数据传输后,假设预设时间为3毫秒,第二网关设备在3毫秒之内未接收到第二光闸发送的第二通信命令,假设当前与第二网关设备建立tcp连接的有服务端2,则释放与服务端2的tcp连接,并向第一网关设备发送fl命令。

在一种可能的实施方式中,若第二网关设备接收到第一网关设备发送的重置命令,则第二网关设备释放与通信双方中的另一方建立的所有tcp连接。

例如,第二网关设备接收到第一网关设备发送的rt命令,且当前与第二网关设备建立tcp连接的有客户端1、服务端1、服务端2,则第二网关设备释放与客户端1、服务端1以及服务端2的tcp连接,并在tcp连接释放后向第一网关设备发送ra命令。

参阅图5所示,为本申请实施例提供的一种通信控制的方法的实施流程图,应用于第一网闸,该方法的具体实施流程如下:

s51:第一网闸接收第二网关设备发送的至少一个第一通信命令。

其中,第一光闸上部署有ftp软件或数据库,第一光闸接收第二网关设备发送的至少一个第二通信命令,具体表现为第二网关设备在第一光闸对应的数据库中的数据表或指定文件的文件目录下新存储至少一个第一通信命令。

可选的,第一光闸接收到的至少一个第一通信命令可以是数据包的形式,例如第一光闸对应的数据库1的数据表1中新存储了一个命令包,其中包含2个第一通信命令。

s52:第一网闸将至少一个第一通信命令通过轮询响应发送给第一网关设备,以使第一网关设备从轮询响应中获取至少一个第一通信命令,并根据至少一个第一通信命令处理通信双方之间的通信;

具体实施时,由第一网关设备向第一光闸发轮询响应,查询第一光闸对应的数据库的数据表或指定文件的文件目录下是否有新增的第一通信命令,如果有,例如数据库1的数据表1中新增了两条第一通信命令,第一光闸确定新增了两条第一通信命令,将新增的第一通信命令通过轮询响应返回给第一网关设备。

可选的,第一光闸将至少一个第一通信命令通过轮询响应发送给第一网关设备之前可以将第一通信命令组装成一个或多个命令包。

参阅图6所示,为本申请实施例提供的一种通信控制的方法的实施流程图,应用于第二网闸,该方法的具体实施流程如下:

s61:第二网闸接收第一网关设备发送的至少一个第二通信命令。

其中,第二光闸上部署有ftp软件或数据库,第二光闸接收第一网关设备发送的至少一个第二通信命令,具体表现为第一网关设备在第二光闸对应的数据库中的数据表或指定文件的文件目录下新存储至少一个第二通信命令。

可选的,第二光闸接收到的至少一个第二通信命令可以是数据包的形式,例如第二光闸对应的数据库1的数据表1中新存储了一个命令包,其中包含2个第二通信命令。

s62:第二网闸将至少一个第二通信命令发送给第二网关设备,以使第二网关设备根据至少一个第二通信命令处理通信双方之间的通信。

具体实施时,例如第二光闸对应的数据库的数据表或指定文件的文件目录下新存储第二通信命令后,例如数据库2的数据表2中新增了两条第二通信命令,第二光闸确定新增了两条第二通信命令,将新增的第二通信命令发送给第二网关设备。

可选的,第二光闸将至少一个第二通信命令通过轮询响应发送给第二网关设备之前可以将第二通信命令组装成一个或多个命令包。

在本申请实施例中,网关设备和业务系统的客户端或者服务端之间通过监听端口实现数据的收发。

例如,tcpbridge发送数据到业务系统outserver的监听端口,通过监听端口将数据发送给业务系统outserver;tcpbridge通过监听端口接收业务系统outserver返回的数据。

参阅图7所示,为本申请实施例提供的一种通信控制装置图,其中tcpbridge表示第一网关设备,remotetcpbridge表示第二网关设备,其中第一网关设备(或第二网关设备)又可以分为bridge,sockman和命令队列,sockman和servers&clients之间通过监听端口收发数据,可选的,命令队列部署于bridge上。

其中,bridge模块:负责跨边界通道的创建、维持、数据重组、收发和重试;sockman模块:负责维护连接到tcpbridge的tcp连接,将收到的数据放入bridge的命令队列,把从bridge接收的数据发给tcp连接对端;命令队列:负责用户命令缓存。其中,bridge和sockman通过命令队列进行命令传递。

可选的,bridge模块又分为指令发送处理器和指令接收处理器,其中指令发送处理器和指令接收处理器也可以通过一个指令处理器实现,该指令处理器既可以实现指令的发送也可以实现指令的接收。

参阅图8所示,为本申请实施例提供的另一种通信控制装置图,具体工作模式为数据库或文件摆渡模式,该方式具体表现为tcpbridge需要穿透裸光闸,需要以裸光闸支持的数据库或文件摆渡形式进行数据交换;remotetcpbridge的sockman接收servers&clients(remote)的请求,由bridge将请求翻译成指令(命令),以指令的形式放入第一光闸的数据库,tcpbridge中bridge的指令接收处理器从第一光闸的数据库轮询数据,获取后进行指令解析和执行,反向同理,只是remotetcpbridge的bridge不会从第二光闸的数据库轮询数据,而是直接获取;其中tcpbridge表示第一网关设备,remotetcpbridge表示第二网关设备,tcpbridge中bridge模块的指令发送处理器周期向第一光闸发起轮询请求,询问第一光闸中是否有新增的第一通信命令,第一光闸接收到轮询请求后,将新增的至少一个第一通信命令通过轮询响应发送给tcpbridge的bridge,由bridge对轮询响应中的命令进行处理,由sockman执行数据或命令的转发。

在一种可能的实施方式中,第二网关设备根据通信双方中的另一方的通信行为确定至少一个第一通信命令之后,将确定的至少一个第一通信命令缓存到待发送命令队列;之后从待发送命令队列中获取至少一个第一通信命令,并将至少一个第一通信命令发送给第一光闸。

可选的,第二网关设备将从待发送命令队列中获取至少一个第一通信命令后,将至少一个通信命令组装成一个或多个命令包发送给第一光闸。

例如,非涉密网络中客户端向涉密网络中服务端发送文件时,客户端1先发一个与服务端1建立连接的请求给tcpbridge(remote)中sockman,tcpbridge(remote)中sockman在接收到连接请求后与客户端1建立tcp连接,之后客户端1将需要发送的文件通过数据包发送给tcpbridge(remote)中sockman,sockman将建立连接的请求与数据包发送给bridge,bridge将连接请求翻译成co1(uuid为1)命令,将文件数据包翻译为da1(uuid为1)命令,将co1和da1缓存到图8所示第二待发送命令队列。一段时间后,客户端2也需要与某浏览器的服务端2建立tcp连接,因而也向tcpbridge(remote)中sockman发送了一个连接请求,tcpbridge(remote)中sockman与客户端2建立tcp连接,并将连接请求发送给bridge,由bridge翻译成co2命令(uuid为2),将co2缓存到第二待发送命令队列。一段时间后,bridge从第二待发送命令队列中获取3个第一通信命令:co1、da1、co2。

可选的,在组装成第二命令包时,可以组装成一个第二命令包,也可以组成多个第二命令包。

其中,组装成多个命令包时可以根据命令针对的通信双方或通信连接标识来确定。

例如,tcpbridge(remote)中bridge的指令发送处理器将co1、da1、co2组装成两个命令包,依据通信连接标识uuid将co1、da1组装为1个第二命令包(命令包1),将co2组装为一个第二命令包(命令包2),并将命令包1、命令包2发送给第一光闸。

可选的,第一光闸收到多个命令包时,可通过一次轮询响应发送第一网关设备,也可通过多次轮询响应发送给第一网关设备。

其中,通过多次轮询响应发送给第一网关设备,可以根据命令包的大小(命令包中命令的数量),将命令包较小(或较大)的先通过响应发送给第一网关设备,或者根据命令包中命令生成的时间将包含生成时间最早的命令包通过响应发送给第一网关设备。

例如,第一光闸在接收到tcpbridge中bridge的指令接收处理器发送的第一次轮询请求时,将命令包1通过轮询响应1发送给tcpbridge中bridge的指令接收处理器,第一光闸在接收到tcpbridge中bridge的指令接收处理器发送的第二次轮询请求时,将命令包2通过轮询响应2发送给tcpbridge中bridge的指令接收处理器。

在一种可能的实施方式中,第一网关设备将至少一个第一通信命令缓存到第一待接收命令队列中;一段时间后从第一待接收命令队列中依次获取第一通信命令;根据获取的第一通信命令处理通信双方之间的通信。

例如,tcpbridge中bridge的指令接收处理器接收到轮询响应后,从中获取到三个第一通信命令,分别为co1、da1、co2,则将这三个通信命令缓存到第一待接收命令队列中。

假设,根据第一待接收命令队列确定co1、da1、co2的处理顺序分别为co1、co2、da1,则tcpbridge中bridge的指令接收处理器从第一待接收命令队列中依次获取co1、co2、da1。tcpbridge中bridge依次执行co1、co2和da1命令,首先,tcpbridge中的bridge通知sockman与co1针对的服务端1建立tcp连接,之后通知tcpbridge的sockman与co2针对的服务端2建立tcp连接,之后bridge根据da1命令中的uuid确定针对该uuid的通信双方中的一方为服务端1后,从da1中获取数据发送给服务端1。

可选的,每一条命令中包含uuid(用于表示同一tcp连接的唯一标识),在执行时根据uuid执行对应指令,从co开始(发起tcp连接),到en结束(结束tcp连接)过程中的命令,针对同一客户端及同一服务端的所有的通信命令都使用同一个uuid。

例如,tcpbridge中bridge的指令接收处理器从轮询响应中获取到了5条第一通信命令,分别为co1、da1、co2、da2、en3,其中co1、da1中携带的uuid都为uuid1,co2、da2中携带的uuid都为uuid2,en3中携带的uuid为uuid3,表明co1、da1为同一客户端及服务端发起的命令,例如客户端1;co2、da2为同一客户端及服务端发起的命令,例如客户端2;en3为同一客户端及服务端发起的命令,例如客户端3。一般情况下,如果是同一个客户端的co和da,则会先执行co(根据命令队列确定的顺序),如果能建立连接则直接发送da,连接失败则丢弃da,并返回en。

在一种可能的实施方式中,第一网关设备将接收的第二通信命令缓存到第一待发送命令队列;一段时间后从第一待发送命令队列中获取至少一个第二通信命令,并将至少一个第二通信命令组装成第一命令包,将组装的第一命令包发送给第二网关设备。

例如,若tcpbridge的sockman通过监听端口接收到的涉密网络的客户端1发送数据的请求以及结束tcp连接的请求时,将请求发送给tcpbridge的bridge的指令发送处理器,且sockman释放与客户端1的tcp连接,由bridge将请求翻译成命令da、en,并将da、en缓存到第一待发送命令队列,一段时间后,tcpbridge中bridge的指令发送处理器从第一待发送命令队列中批量获取到da和en后,tcpbridge的指令发送处理器将da和en组装成命令包(第一命令包),将第一命令包发送给第二光闸,由第二光闸发送给tcpbridge(remote)的指令接收处理器。

在一种可能的实施方式中,第二网关设备将至少一个第二通信命令依次缓存到第二待接收命令队列中,一段时间后从第二待接收命令队列中依次获取第二通信命令,并根据获取的第二通信命令处理通信双方之间的通信。

例如,tcpbridge(remote)中bridge的指令接收处理器接收到da和en后,将da和en依次缓存到第二待接收命令队列,一段时间后tcpbridge(remote)中bridge的指令接收处理器从第二待接收命令队列中依次获取da和en后,根据da的通信连接标识确定通信双方中的另一方为非涉密网络的服务端1(da中的通信连接标识为1,非涉密网络服务端1的通信连接标识为1),则将获取数据发送给tcpbridge(remote)中sockman,由sockman通过监听端口转发给非涉密网络的服务端1,之后tcpbridge(remote)中bridge将en发送给sockman,sockman根据en(通信连接标识为1)命令结束tcpbridge(remote)与非涉密网络服务端1之间的tcp连接。

在本申请实施例中,通过命令队列可以保证命令按顺序执行,同时将通信命令缓存到命令队列还可以起到缓冲的作用,增加吞吐量。

可选的,图8所示的sockman和servers&clients之间也可以不建立tcp连接,由sockman将接收到的命令或数据通过http请求发送给servers&clients。

当通信控制方法需要应用于http轮询模式时,参阅图2所示的应用场景示意图。本申请实施例中,其中业务系统服务端10位于tcpbridge(第一网关设备20)连接的第一网络中,业务系统60位于remotetcpbridge(第二网关设备50)连接的第二网络中,当第二网络中的业务系统客户端60需要与第一网络中的业务系统服务端10进行通信(例如传输文件/下载文件)时,第二网关设备50根据业务系统客户端60的通信行为确定至少一个第一通信命令(例如接收到业务系统客户端60发送的数据,则将数据翻译成第一通信命令),第一网关设备30通过轮询第二网关设备50获取至少一个第一通信命令,并根据获取到的至少一个第一通信命令处理业务系统服务端10与业务系统客户端60之间的通信(例如第一网关设备20获取第一通信命令中的数据发送给业务服务端10);当第一网关设备20根据业务系统服务端10的通信行为确定至少一个第二通信命令(例如接收到业务系统服务端10发送的数据,则将数据翻译成第二通信命令),并将至少一个第二通信命令发送给第二网关设备50,第二网关设备50根据接收到的第二通信命令处理业务系统服务端10与业务系统客户端60之间的通信(例如第二网关设备50获取第二通信命令中的数据发送给业务客户端60),完成业务系统服务端10与业务系统客户端60之间的通信(例如数据交换)。

在http轮询模式下,本申请实施例提供的通信控制方法、装置和存储介质,由于在第一网络中部署的第一网关设备以及在第二网络中部署的第二网关设备之间通过固定发起方数据交换设备允许的http轮询等方式实现通信命令的传输,将第一网关设备作为固定发起方向第二网关设备进行轮询以及通信命令的转发,由网关设备根据通信双方的通信确定通信行为,并根据第一通信命令或第二通信命令处理通信双方之间的通信,达到数据实时同步的目的,针对通讯软件或者其他要求实时通讯的业务,使用本服务,可以达到在双向数据交换平台一样的效果在满足计算机信息系统国际互联网保密管理规定的同时,在网络边界设备上实现了双向通讯的目的,保证了通信的安全,提高了通信效率。

参阅图9所示,为本申请实施例提供的一种通信控制的方法的实施流程图,应用于基于http轮询的第一网关设备,该方法的具体实施流程如下:

s91:第一网关设备接收第二网关设备发送的轮询响应,从轮询响应中获取至少一个第一通信命令,并根据至少一个第一通信命令处理通信双方之间的通信;

其中,轮询响应是根据第一网关设备发送的http轮询请求发送的,第一通信命令为第二网关设备根据通信双方中的另一方的通信行为确定的,第二通信命令为第一网关设备根据通信双方中的一方的通信行为确定的。

可选的,第一网关设备会周期或定时向第二网关设备发起轮询请求,可以采用定时器轮询的方式,也可以开新进程进行轮询,例如第一网关设备每10分钟向第二网关设备发起一次轮询请求,询问第二网关设备是否有第一通信命令需要发送。

可选的,在第一网关设备向第二网关设备发送轮询请求后,若在第四预设时间内未接收到第二网关设备发送的轮询响应,则重新向第二网关设备发送新的轮询请求。一般预设时间为当前轮询次数*1毫秒,最大不超过50毫秒,以提高cpu使用率;若在预设时间内接收到第二网关设备发送的轮询响应,则立刻获取轮询响应中的至少一个第一通信命令,并根据获取的至少一个第一通信命令处理通信双方之间的通信,具体处理方式与s32中介绍的几种处理方式相同或类似,具体分为以下两类:

处理方式一:第一通信命令包含数据接收结果时,第一网关设备将第一通信命令通过http请求发送给通信双方中的一方。

例如,tcpbridge接收到一个re命令(表示数据成功收到),re命令包括:uuid1,其中uuid1对应的通信双方中的一方为服务端1,对应的通信双方中的另一方为客户端1,则tcpbridge将re命令通过http请求转发给服务端1。

处理方式二:第一通信命令包含通信双方中的另一方需要发送的数据时,第一网关设备根据第一通信命令中的通信连接标识确定第一通信命令涉及通信双方中的一方,从第一通信命令中获取数据并将数据通过http请求发送给通信双方中的一方。

例如,tcpbridge接收到一个da命令,da命令包括:uuid1、data、count,其中uuid1对应的通信双方中的一方为服务端1,对应的通信双方中的另一方为客户端1,则tcpbridge将da命令中的data通过http请求发送给服务端1。

在本申请实施例中,通过http请求进行数据传输或命令转发的方式不需要尽力tcp连接,这种情况下的第一通信命令或第二通信命令不包括co、en以及rt、ra、fl。

s92:第一网关设备根据通信双方中的一方的通信行为确定至少一个第二通信命令,并将至少一个第二通信命令发送给第二网关设备,以使第二网关设备根据至少一个第二通信命令处理通信双方之间的通信。

可选的,http轮询请求的类型为get类型。

可选的,第一网关设备将包含至少一个第二通信命令的post请求发送给第二网关设备。

在本申请实施例中,第一网关设备根据通信双方中的一方的通信行为确定至少一个第二通信命令时,针对不同的通信行为确定的第二通信命令也不相同,下面进行详细介绍:

确定方式一、若通信双方中的一方的通信行为为向通信双方中的另一方发送数据,则第一网关设备生成包含通信双方中的一方需要发送的数据的第二通信命令。

确定方式二、若通信双方中的一方的通信行为为接收第一网关设备发送的从第一通信命令中获取的数据,则第一网关设备生成包含数据接收结果的第二通信命令。

上述两种确定方式与s32下介绍的确定方式三和确定方式五相同,重复之处不再赘述。

可选的,第一网关设备将包含至少一个第二通信命令的post请求发送给第二网关设备,即通过post请求的方式将至少一个第二通信命令或至少一个第二通信命令组成的命令包发送给第二网关设备。

具体的,将命令或命令包放入post请求的body中发送给第二网关设备,第二网关设备在接收到post请求后,从post请求的body中获取命令。

参阅图10所示,为本申请实施例提供的一种通信控制的方法的实施流程图,应用于基于http轮询的第二网关设备,该方法的具体实施流程如下:

s101:第二网关设备根据通信双方中的另一方的通信行为确定至少一个第一通信命令,并向第一网关设备发送包含至少一个第一通信命令的轮询响应,以使第一网关设备根据至少一个第一通信命令处理通信双方之间的通信。

在本申请实施例中,第二网关设备根据通信双方中的另一方的通信行为确定至少一个第二通信命令时,针对不同的通信行为确定的第二通信命令也不相同,下面进行详细介绍:

确定方式一、若通信双方中的另一方的通信行为为向通信双方中的一方发送数据,则第二网关设备生成包含通信双方中的另一方需要发送的数据的第一通信命令。

确定方式二、若通信双方中的另一方的通信行为为接收第二网关设备发送的从第二通信命令中获取的数据,则第二网关设备生成包含数据接收结果的第一通信命令。

上述两种确定方式与s41下介绍的确定方式三和确定方式五相同,重复之处不再赘述。

可选的,第二网关设备通过向第一网关设备发送包含至少一个第一通信命令或至少一个第一通信命令组成的命令包的轮询响应,将第一通信命令发送给第一网关设备。

s102:第二网关设备在接收到第一网关设备发送的至少一个第二通信命令时,根据至少一个第二通信命令处理通信双方之间的通信。

可选的,第二网关设备在接收到第一网关设备发送的包含至少一个第二通信命令的post请求时,根据post请求中的至少一个第二通信命令处理通信双方之间的通信。

其中,第二通信命令不同时,第二网关设备对命令的处理方式也不相同,下面针对不同的第二通信命令进行详细介绍:

处理方式一:第二通信命令包含数据接收结果时,第二网关设备将第二通信命令通过http请求发送给通信双方中的另一方。

例如,remotetcpbridge接收到一个re命令(表示数据接收结果),re命令包括:uuid1,其中uuid1对应的通信双方中的另一方为服务端1,对应的通信双方中的一方为客户端1,则remotetcpbridge将re命令包装在http请求中发送给服务端1。

处理方式二、第二通信命令包含通信双方中的一方需要发送的数据时,第二网关设备根据第二通信命令中的通信连接标识确定通信双方中的另一方,从第二通信命令中获取数据并将数据通过http请求发送给通信双方中的另一方。

例如,remotetcpbridge接收到一个da命令,da命令包括:uuid1、data、count,其中uuid1对应的通信双方中的另一方为服务端1,对应的通信双方中的一方为客户端1,则remotetcpbridge将da命令中的data包装在http请求中发送给服务端1。参阅图11所示,为本申请实施例提供的一种通信控制装置图,具体工作模式为http轮询模式,该方式具体表现为tcpbridge需要穿透裸光闸进行数据交换或指令传输等;remotetcpbridge的sockman接收servers&clients(remote)的请求,由bridge将请求翻译成指令(命令),放入remotetcpbridge中bridge的指令发送处理器,tcpbridge中bridge的指令接收处理器向remotetcpbridge中bridge的指令发送处理器发送轮询请求,当接收到轮询响应后从中获取至少一个第一通信命令,并进行指令解析和执行,反向同理,只是remotetcpbridge的bridge指令接收处理器不会向tcpbridge的bridge指令发送处理器发送轮询请求,而是由tcpbridge的bridge指令发送处理器直接将至少一个第一通信命令放入post请求的body中,通过post请求发送给remotetcpbridge的bridge指令接收处理器;其中tcpbridge表示第一网关设备,remotetcpbridge表示第二网关设备,bridge对命令进行翻译、处理,由sockman执行数据或命令的转发。

在一种可能的实施方式中,第二网关设备根据通信双方中的另一方的通信行为确定至少一个第一通信命令之后,将确定的至少一个第一通信命令缓存到待发送命令队列;在第二网关设备接收到所述第一网关设备发送的轮询请求时,从待发送命令队列中获取至少一个第一通信命令,并将至少一个第一通信命令携带在轮询响应发送给第一网关设备。

可选的,第二网关设备将从待发送命令队列中获取至少一个第一通信命令后,将至少一个通信命令组装成一个或多个命令包。

例如,第二网络中客户端向第一网络中服务端发送文件时,客户端1将需要发送给服务端1的数据包装在http请求中发送给tcpbridgeb中sockman,tcpbridgeb中sockman在接收到数据后,sockman将需要发送的数据发送给bridge,bridge将数据翻译为da1(uuid为1)命令,将da1缓存到图11所示第二待发送命令队列;一段时间后,客户端2也需要向某浏览器的服务端2发送数据,因而将数据通过http请求发送给tcpbridgeb中的sockman,sockman并http请求中的数据发送给bridge,由bridge翻译成da2命令(uuid为2),将da2缓存到第二待发送命令队列。在tcpbridgeb中bridge的指令发送处理器接收到tcpbridgea中bridge的指令接收处理器发送的get请求后,从第二待发送命令队列中获取2个第一通信命令:da1、da2。

可选的,在组装成第二命令包时,可以组装成一个第二命令包,也可以组成多个第二命令包。

其中,组装成多个命令包时可以根据命令针对的通信双方或通信连接标识来确定。

例如,tcpbridgeb中bridge的指令发送处理器将da1、da2组装成两个命令包,依据通信连接标识uuid将da1组装为1个第二命令包(命令包1),将da2组装为一个第二命令包(命令包2)。

可选的,第二网关设备将至少一个第一通信命令组装成多个命令包时,可通过一次轮询响应发送第一网关设备,也可通过多次轮询响应发送给第一网关设备。

其中,通过多次轮询响应发送给第一网关设备,可以根据命令包的大小(命令包中命令的数量),将命令包较小(或较大)的先通过响应发送给第一网关设备,或者根据命令包中命令生成的时间将包含生成时间最早的命令包通过响应发送给第一网关设备。

例如,tcpbridgeb中bridge的指令发送处理器在接收到tcpbridgea中bridge的指令接收处理器发送的第一次轮询请求时,将命令包1通过轮询响应1发送给tcpbridgea中bridge的指令接收处理器,在接收到tcpbridgea中bridge的指令接收处理器发送的第二次轮询请求时,将命令包2通过轮询响应2发送给tcpbridgea中bridge的指令接收处理器。

在一种可能的实施方式中,第一网关设备将至少一个第一通信命令缓存到第一待接收命令队列中;一段时间后从第一待接收命令队列中依次获取第一通信命令;根据获取的第一通信命令处理通信双方之间的通信。

例如,tcpbridgea中bridge的指令接收处理器接收到轮询响应后,从中获取到两个第一通信命令,分别为da1、da2,则将这三个通信命令缓存到第一待接收命令队列中。

假设,根据第一待接收命令队列确定da1、da2的处理顺序分别为da1、da2,则tcpbridgea中bridge的指令接收处理器从第一待接收命令队列中依次获取da1、da2。tcpbridgea中bridge依次执行da1和da2命令,首先,tcpbridgea中bridge根据da1命令中的uuid确定针对该uuid的通信双方中的一方为服务端1后,从da1中获取数据发送给服务端1,之后根据da2命令中的uuid确定针对该uuid的通信双方中的一方为服务端2后,从da2中获取数据发送给服务端2。

可选的,每一条命令中包含uuid(用于表示同一tcp连接的唯一标识),在执行时根据uuid执行对应指令,从co开始(发起tcp连接),到en结束(结束tcp连接)过程中的命令,针对同一客户端及同一服务端的所有的通信命令都使用同一个uuid。

例如,tcpbridgea中bridge的指令接收处理器从轮询响应中获取到了5条第一通信命令,分别为re1、da1、re2、da2,其中re1、da1都是第二网关设备根据客户端1的通信行为确定的,携带的uuid都为uuid1;re2、da2都是第二网关设备根据客户端2的通信行为确定的,携带的uuid都为uuid2。

在一种可能的实施方式中,第一网关设备将接收的第二通信命令缓存到第一待发送命令队列;一段时间后从第一待发送命令队列中获取至少一个第二通信命令,并将至少一个第二通信命令组装成第一命令包,将组装的第一命令包通过post请求发送给第二网关设备。

例如,若tcpbridgea的sockman通过监听端口接收到的第一网络的客户端1以及客户端2发送数据的请求时,将请求发送给tcpbridgea的bridge的指令发送处理器,由bridge将请求翻译成命令da1、da2,并将da1、da2缓存到第一待发送命令队列,一段时间后,tcpbridgea中bridge的指令发送处理器从第一待发送命令队列中批量获取到da1、da2后,tcpbridgea的指令发送处理器将da1和da2组装成命令包(第一命令包),将第一命令包通过post请求发送给tcpbridgeb的指令接收处理器。

可选的,若第一网关设备将至少一个第一通信命令组装成多个第一命令包,着多个第一命令包可通过一次post请求发送给第二网关设备,也可通过多次post请求。其中,通过多次post请求发送时,可以根据命令包的大小(命令包中命令的数量),将命令包较小(或较大)的先通过post请求发送给第二网关设备,或者根据命令包中命令生成的时间将包含生成时间最早的命令包通过响应发送给第二网关设备。

在一种可能的实施方式中,第二网关设备将至少一个第二通信命令依次缓存到第二待接收命令队列中,一段时间后从第二待接收命令队列中依次获取第二通信命令,并根据获取的第二通信命令处理通信双方之间的通信。

例如,tcpbridgeb中bridge的指令接收处理器接收到da和en后,将da和en依次缓存到第二待接收命令队列,一段时间后tcpbridgeb中bridge的指令接收处理器从第二待接收命令队列中依次获取da和en后,根据da的通信连接标识确定通信双方中的另一方为第二网络的服务端1(da中的通信连接标识为1,第二网络服务端1的通信连接标识为1),则将获取数据发送给tcpbridgeb中sockman,由sockman通过监听端口转发给第二网络的服务端1,之后tcpbridgeb中bridge将en发送给sockman,sockman根据en(通信连接标识为1)命令结束tcpbridgeb与第二网络服务端1之间的tcp连接。

在本申请实施例中,针对基于http轮询模式的网关设备,在网关设备与通信后双方通信时,也可以不采用http请求,而是在网关设备与通信双方之间建立tcp连接,针对图11所示的装置图,则需要在tcpbridge的sockman与servers&clients之间建立tcp连接,这种情况下第一通信命令或第二通信命令还包括发起tcp连接的命令,结束tcp连接的命令,包含tcp连接建立结果的命令;此外网关设备还可生成重置命令和/或重置反馈命令,具体实现方式参见数据库/文件摆渡模式下的详细说明,不同之处在于,第一网关设备接收到的轮询响应是第二网关设备发送的,第二网关设备接收到的至少一个第二通信命令是由第一网关设备直接发送的,第一光闸和第二光闸不参与命令的转发,命令确定方式和处理方式与数据库/文件摆渡模式相类似。

参阅图12所示,为一种通信控制的交互时序图,支持数据库/文件摆渡的模式,其中的通信双方为client和server,其中client为业务服务的客户端,server为业务服务的服务端,该方法的具体实施流程如下:

步骤1200:client向tcpbridgeb发送连接请求;

步骤1201:tcpbridgeb与client建立tcp连接;

步骤1202:tcpbridgeb将连接请求翻译成co命令并发送给第一光闸;

步骤1203:第一光闸接收tcpbridgeb发送的co命令,等待轮询;

步骤1204:tcpbridgea向第一光闸发送轮询请求;

步骤1205:第一光闸接收到轮询请求后通过轮询响应向tcpbridgea发送co命令;

步骤1206:tcpbridgea根据co命令确定需要建立tcp连接的server,并与server建立tcp连接;

步骤1207:server向tcpbridgea返回成功建立连接的结果;

步骤1208:tcpbridgea生成包含成功建立连接结果的re命令;

步骤1209:tcpbridgea向第二光闸发送re命令;

步骤1210:第二光闸向tcpbridgeb发送re命令;

步骤1211:tcpbridgeb向client发送re命令;

步骤1212:client将需要发送给server的数据发送给tcpbridgeb;

步骤1213:tcpbridgeb生成包含需要发送的数据的da命令;

步骤1214:tcpbridgeb将da命令发送给第一光闸;

步骤1215:tcpbridgea向第一光闸发送轮询请求;

步骤1216:第一光闸接收到轮询请求后通过轮询响应向tcpbridgea发送da命令;

步骤1217:tcpbridgea将da命令中的数据发送给server;

步骤1218:server向tcpbridgea返回数据收到的消息;

步骤1219:tcpbridgea将生成包含数据说的消息的re命令;

步骤1220:tcpbridgea将re命令发送给第二光闸;

步骤1221:第二光闸中将re命令发送给tcpbridgeb;

步骤1222:tcpbridgeb将re命令发送给client;

步骤1223:client接收到re命令后确认server收到数据。

参阅图13所示,为一种通信控制的交互时序图,支持http轮询的模式,假设通过双方为client与server,该方法的具体实施流程如下:

步骤1300:client向tcpbridgeb发送请求;

步骤1301:tcpbridgeb将请求翻译成命令,等待轮询;

步骤1302:tcpbridgea向tcpbridgeb发送get请求;

步骤1303:tcpbridgeb接收到get请求后通过轮询响应向tcpbridgea发送命令;

步骤1304:tcpbridgea将命令通过http请求发送给server;

步骤1305:server向tcpbridgea返回数据;

步骤1306:tcpbridgea生成包含数据的da命令;

步骤1307:tcpbridgea将da命令放入post请求中的body中发送给tcpbridgeb;

步骤1308:tcpbridgeb接收到post请求后,从请求的body中获取da命令;

步骤1309:tcpbridgeb把da命令翻译成需要执行的http请求发送给client;

步骤1310:client接收tcpbridgeb发送的da命令,获取da命令中的数据。

在本申请实施例中,若是将上述通信控制的方法应用到计算机程序中,例如以软件的方式实现时,则需要在网闸两侧部署本服务,应用需要在tcpbridge两端登记业务自身的servers和clients的转发和监听端口,并响应请求,需要实时通讯的服务先在配置服务里配置通讯软件监听端口和后台服务端口(其中,一个应用可以对应一个或多个监听端口),部署过程可采用软件配置的方式,主配置项包括:

配置1、publicportsarrayofnumber,表示为sockman监听的端口数组。

例如:”publicports”:[8000,8001],则表示sockman监听的端口数组为[8000,8001]。

配置2、debugbool,表示是否记录调试信息(其中调试信息包含所有接收到的命令头,命令即第一通信命令或第二通信命令)。

例如:”debug”:true,则表示记录调试信息;”debug”:false,则表示不记录调试信息。

配置3、modestring,表示tcpbridge的工作模式,可选值列举了5种,分别为:tcp_client、tcp_server、http_client、http_server、file。

配置4、peerportmapobject,表示处理远程tcp连接时的端口映射。

例如:”peerportmap”:{“8000”:[{“host”:”127.0.0.1”,”port”:12345}],“8001”:[{“host”:”127.0.0.1”,”port”:12346}]}。

下面针对不同的tcpbridge工作模式进行详细介绍:

模式1、http_client,具体可包括如下几种配置:

配置1:httpserverstring,用于表示远端tcpbridge的ip或域名,或者是数据交换设备的映射服务器。

配置2:httpportnumber,用于表示远端tcpbridge的bridge监听端口,或者是数据交换设备的映射端口。

配置3:httppathstring,用于表示请求的url(uniformresourcelocator,统一资源定位符),有些边界需要调用边界指定的http包装服务时有意义。

配置4:httpcontenttypestring,用于表示请求的content-type,有些边界需要调用边界指定的http包装服务时有意义。

配置5:httpsbool,用于表示是否使用https发起请求,有些边界需要调用边界指定的http包装服务时有意义。

模式2、http_server,具体可包括如下几种配置:

配置1:httpportnumber;

配置2:tcpbridge的bridge监听端口。

模式3:tcp_client,具体可包括如下几种配置:

配置1:outserverarrayofobject;

配置2:远程tcpbridge的tcp监听地址,例如:"outserver":[{"host":"127.0.0.1","port":8000}]。

模式4:tcp_server,具体可包括如下几种配置:

配置1:internalportnumber;

配置2:tcpbridge的tcp监听端口。

模式5、file,具体可包括如下几种配置:

配置1:receivedirstring,用于表示接收命令包文件的目录;

配置2:senddirstring,用于表示发送命令包文件的目录。

如图14所示,其为一种第一网关设备侧实施的通信控制装置的结构示意图,可以包括:

第一处理单元1401,用于接收第一网闸发送的轮询响应,从所述轮询响应中获取至少一个第一通信命令,并根据所述至少一个第一通信命令处理通信双方之间的通信;

第一收发单元1402,用于根据所述通信双方中的一方的通信行为确定至少一个第二通信命令,并将所述至少一个第二通信命令发送给第二网闸,以使第二网关设备从所述第二网闸中获取至少一个第二通信命令,并根据所述至少一个第二通信命令处理所述通信双方之间的通信;

其中,所述轮询响应是根据第一网关设备发送的轮询请求发送的;所述第一通信命令涉及所述通信双方,所述通信双方中的一方位于第一网关设备连接的第一网络中,另一方位于第二网关设备连接的第二网络中,所述第一通信命令为所述第二网关设备根据通信双方中的另一方的通信行为确定后发送给所述第一网闸的,所述第二通信命令为所述第一网关设备根据通信双方中的一方的通信行为确定后发送给所述第二网闸的。

在一种可能的实施方式中,所述第一处理单元1401具体用于:

所述第一通信命令为发起tcp连接的命令时,和所述第一通信命令涉及所述通信双方中的一方建立tcp连接;或

所述第一通信命令为结束tcp连接的命令时,根据所述结束tcp连接的命令中的通信连接标识,释放对应的tcp连接;或

所述第一通信命令包含tcp连接建立结果或数据接收结果时,将所述第一通信命令发送给所述通信双方中的一方。

在一种可能的实施方式中,所述第一处理单元1401具体用于:

所述第一通信命令包含所述通信双方中的另一方需要发送的数据时,根据所述发送数据的命令中的通信连接标识确定所述第一通信命令涉及所述通信双方中的一方,从所述第一通信命令中获取数据并将数据发送给所述通信双方中的一方。

在一种可能的实施方式中,所述第一收发单元1402具体用于:

若所述通信双方中的一方的通信行为为主动与所述第一网关设备建立tcp连接,则将发起tcp连接的命令作为所述第二通信命令;或

若所述通信双方中的一方的通信行为为与所述第一网关设备释放tcp连接,则将结束tcp连接的命令作为所述第二通信命令;或

若所述通信双方中的一方的通信行为为向所述通信双方中的另一方发送数据,则生成包含所述通信双方中的一方需要发送的数据的所述第二通信命令;或

若所述通信双方中的一方的通信行为为在接收到第一通信命令后与所述第一网关设备建立tcp连接,则生成包含tcp连接建立结果的所述第二通信命令;

若所述通信双方中的一方的通信行为为接收所述第一网关设备发送的从第一通信命令中获取的数据,则生成包含数据接收结果的所述第二通信命令。

在一种可能的实施方式中,所述第一收发单元1402具体用于:

将所述至少一个第二通信命令存储到所述第二网闸对应的数据库或指定文件中,以使所述第二网闸将接收到的所述至少一个第二通信命令发送给所述第二网关设备。

在一种可能的实施方式中,所述装置还包括:

第一重置单元1403,用于若在第一预设时间内未接收到所述第一网闸发送的轮询响应,则释放与所述通信双方中的一方建立的所有tcp连接,以及向所述第二网关设备发送重置命令,以使所述第二网关设备释放与所述通信双方中的另一方建立的所有tcp连接;或

若接收到所述第二网关设备发送的包含重置命令的轮询响应,则释放与所述通信双方中的一方建立的所有tcp连接。

如图15所示,其为一种第二网关设备侧实施的通信控制装置的结构示意图,可以包括:

第二收发单元1501,用于根据通信双方中的另一方的通信行为确定至少一个第一通信命令,并将所述至少一个第一通信命令发送给第一网闸,以使第一网关设备在接收到所述第一网闸发送的轮询响应后,从所述轮询响应中获取所述至少一个第一通信命令,并根据所述至少一个第一通信命令处理通信双方之间的通信;

第二处理单元1502,用于从第二网闸中获取所述第一网关设备发送的至少一个第二通信命令,并根据所述至少一个第二通信命令处理所述通信双方之间的通信;

其中,所述轮询响应是根据所述第一网关设备发送的轮询请求发送的;所述第一通信命令涉及所述通信双方,所述通信双方中的一方位于第一网关设备连接的第一网络中,另一方位于第二网关设备连接的第二网络中,所述第一通信命令为所述第二网关设备根据通信双方中的另一方的通信行为确定后发送给所述第一网闸的,所述第二通信命令为所述第一网关设备根据通信双方中的一方的通信行为确定后发送给所述第二网闸的。

在一种可能的实施方式中,所述第二收发单元1501具体用于:

若所述通信双方中的另一方的通信行为为主动与所述第二网关设备建立tcp连接,则将发起tcp连接的命令作为所述第一通信命令;或

若所述通信双方中的另一方的通信行为为与所述第二网关设备释放tcp连接,则将结束tcp连接的命令作为所述第一通信命令;或

若所述通信双方中的另一方的通信行为为向所述通信双方中的一方发送数据,则生成包含所述通信双方中的另一方需要发送的数据的所述第一通信命令;或

若所述通信双方中的另一方的通信行为为在接收到第二通信命令后与所述第二网关设备建立tcp连接,则生成包含tcp连接建立结果的所述第一通信命令;

若所述通信双方中的另一方的通信行为为接收所述第二网关设备发送的从第二通信命令中获取的数据,则生成包含数据接收结果的所述第一通信命令。

在一种可能的实施方式中,所述第二收发单元1501具体用于:

将所述至少一个第一通信命令发送给第一网闸,包括:

将所述至少一个第一通信命令存储到所述第一网闸对应的数据库或指定文件中,以使所述第一网闸将接收到的所述至少一个第一通信命令发送给所述第一网关设备。

在一种可能的实施方式中,所述第二处理单元1502具体用于:

所述第二通信命令为发起tcp连接的命令时,和所述通信双方中的另一方建立tcp连接;或

所述第二通信命令为结束tcp连接的命令时,根据所述结束tcp连接的命令中的通信连接标识,释放对应的tcp连接;或

所述第二通信命令包含tcp连接建立结果或数据接收结果时,将所述第二通信命令发送给所述通信双方中的另一方。

在一种可能的实施方式中,所述第二处理单元1502具体用于:

所述第二通信命令包含所述通信双方中的一方需要发送的数据时,根据所述发送数据的命令中的通信连接标识确定所述通信双方中的另一方,从所述第二通信命令中获取数据并将数据发送给所述通信双方中的另一方。

在一种可能的实施方式中,所述装置还包括:

第二重置单元1503,若在第二预设时间内未接收到所述第二网闸发送的第二通信命令,则释放与所述通信双方中的另一方建立的所有tcp连接,以及向所述第一网关设备发送重置命令,以使所述第一网关设备释放与所述通信双方中的一方建立的所有tcp连接;或

若接收到所述第一网关设备发送的重置命令,则释放与所述通信双方中的另一方建立的所有tcp连接。

如图16所示,其为一种第一网闸侧实施的通信控制装置的结构示意图,可以包括:

第一接收单元1601,用于接收第二网关设备发送的至少一个第一通信命令;

第一发送单元1602,用于将所述至少一个第一通信命令通过轮询响应发送给第一网关设备,以使所述第一网关设备从所述轮询响应中获取至少一个第一通信命令,并根据所述至少一个第一通信命令处理通信双方之间的通信;

其中,所述轮询响应是根据所述第一网关设备发送的轮询请求发送的;所述第一通信命令涉及所述通信双方,所述通信双方中的一方位于第一网关设备连接的第一网络中,另一方位于第二网关设备连接的第二网络中,所述第一通信命令为所述第二网关设备根据通信双方中的另一方的通信行为确定后发送给所述第一网闸的。

在一种可能的实施方式中,所述第一发送单元1601还用于:

接收所述第一网关设备发送的轮询请求,并确定所述第一网闸对应的数据库或指定文件中有新存储的至少一个第一通信命令。

如图17所示,其为一种第二网闸侧实施的通信控制装置的结构示意图,可以包括:

第二接收单元1701,接收第一网关设备发送的至少一个第二通信命令;

第二发送单元1702,将所述至少一个第二通信命令发送给第二网关设备,以使所述第二网关设备根据所述至少一个第二通信命令处理通信双方之间的通信;

其中,所述通信双方中的一方位于第一网关设备连接的第一网络中,另一方位于第二网关设备连接的第二网络中,所述第二通信命令为所述第一网关设备根据通信双方中的一方的通信行为确定后发送给所述第二网闸的。

在一种可能的实施方式中,所述第二发送单元1702还用于:

确定所述第二网闸对应的数据库或指定文件中有新存储的至少一个第二通信命令。

如图18所示,其为另一种第一网关设备侧实施的通信控制装置的结构示意图,可以包括:

第三处理单元1801,用于接收第二网关设备发送的轮询响应,从所述轮询响应中获取至少一个第一通信命令,并根据所述至少一个第一通信命令处理通信双方之间的通信;

第三收发单元1802,用于根据所述通信双方中的一方的通信行为确定至少一个第二通信命令,并将所述至少一个第二通信命令发送给所述第二网关设备,以使所述第二网关设备根据所述至少一个第二通信命令处理所述通信双方之间的通信;

其中,所述轮询响应是根据所述第一网关设备发送的http轮询请求发送的;所述第一通信命令涉及所述通信双方,所述通信双方中的一方位于第一网关设备连接的第一网络中,另一方位于第二网关设备连接的第二网络中,所述第一通信命令为所述第二网关设备根据通信双方中的另一方的通信行为确定的,所述第二通信命令为所述第一网关设备根据通信双方中的一方的通信行为确定的。

在一种可能的实施方式中,所述http轮询请求的类型为get类型;

所述三收发单元1802,具体用于:

所述第一网关设备将包含所述至少一个第二通信命令的改post请求发送给所述第二网关设备。

在一种可能的实施方式中,所述第三处理单元1801具体用于:

所述第一通信命令包含数据接收结果时,将所述第一通信命令通过http请求发送给所述通信双方中的一方。

在一种可能的实施方式中,所述第三处理单元1801具体用于:

所述第一通信命令包含所述通信双方中的另一方需要发送的数据时,根据所述发送数据的命令中的通信连接标识确定所述第一通信命令涉及所述通信双方中的一方,从所述第一通信命令中获取数据并将数据通过http请求发送给所述通信双方中的一方。

在一种可能的实施方式中,所述第三收发单元1802具体用于:

若所述通信双方中的一方的通信行为为向所述通信双方中的另一方发送数据,则生成包含所述通信双方中的一方需要发送的数据的所述第二通信命令;或

若所述通信双方中的一方的通信行为为接收所述第一网关设备发送的从第一通信命令中获取的数据,则生成包含数据接收结果的所述第二通信命令。

如图19所示,其为另一种第二网关设备侧实施的通信控制装置的结构示意图,可以包括:

第四收发单元1901,用于根据通信双方中的另一方的通信行为确定至少一个第一通信命令,并向第一网关设备发送包含所述至少一个第一通信命令的轮询响应,以使所述第一网关设备根据所述至少一个第一通信命令处理通信双方之间的通信;

第四处理单元1902,用于在接收到所述第一网关设备发送的至少一个第二通信命令时,根据所述至少一个第二通信命令处理所述通信双方之间的通信;

其中,所述轮询响应是根据所述第一网关设备发送的http轮询请求发送的;所述第一通信命令涉及所述通信双方,所述通信双方中的一方位于第一网关设备连接的第一网络中,另一方位于第二网关设备连接的第二网络中,所述第一通信命令为所述第二网关设备根据通信双方中的另一方的通信行为确定的,所述第二通信命令为所述第一网关设备根据通信双方中的一方的通信行为确定的。

在一种可能的实施方式中,所述http轮询请求的类型为get类型;

所述第四处理单元1902具体用于:

在接收到所述第一网关设备发送的包含所述至少一个第二通信命令的post请求时,根据所述post请求中的至少一个第二通信命令处理所述通信双方之间的通信。

在一种可能的实施方式中,所述第四收发单元1901具体用于:

若所述通信双方中的另一方的通信行为为向所述通信双方中的一方发送数据,则生成包含所述通信双方中的另一方需要发送的数据的所述第一通信命令;或

若所述通信双方中的另一方的通信行为为接收所述第二网关设备发送的从第二通信命令中获取的数据,则生成包含数据接收结果的所述第一通信命令。

在一种可能的实施方式中,所述第四收发单元1901还用于:

将确定的所述至少一个第一通信命令缓存到待发送命令队列;

所述第四收发单元1901具体用于:

接收到所述第一网关设备发送的http轮询请求时,从所述待发送命令队列中获取所述至少一个第一通信命令,并将所述至少一个第一通信命令携带在所述轮询响应发送给所述第一网关设备。

在一种可能的实施方式中,所述第四收发单元1901具体用于:

所述第二通信命令包含数据接收结果时,将所述第二通信命令通过http请求发送给所述通信双方中的另一方。

在一种可能的实施方式中,所述第四处理单元1902具体用于:

所述第二通信命令包含所述通信双方中的一方需要发送的数据时,根据所述发送数据的命令中的通信连接标识确定所述通信双方中的另一方,从所述第二通信命令中获取数据并将数据通过http请求发送给所述通信双方中的另一方。

为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。

在介绍了本申请示例性实施方式的通信控制方法和装置之后,接下来,介绍根据本申请的另一示例性实施方式的用于通信控制的装置。

所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

在一些可能的实施方式中,根据本申请的通信控制装置可以至少包括处理器和存储器。其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行本说明书中描述的根据本申请各种示例性实施方式的通信控制方法中的步骤。例如,所述处理器可以执行如图4中所示的步骤。

这种实施方式的通信控制装置与图14~图19中任一所示的通信控制装置结构类似,这里不再赘述。

下面参照图20来描述根据本申请的这种实施方式的计算装置200。图20的计算装置200仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图20,计算装置200以通用计算装置的形式表现。计算装置200的组件可以包括但不限于:上述至少一个处理器201、上述至少一个存储器202、连接不同系统组件(包括存储器202和处理器201)的总线203。

总线203表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。

存储器202可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)2021和/或高速缓存存储器2022,还可以进一步包括只读存储器(rom)2023。

存储器202还可以包括具有一组(至少一个)程序模块2024的程序/实用工具2025,这样的程序模块2024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

计算装置200也可以与一个或多个外部设备204(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与计算装置200交互的设备通信,和/或与使得该计算装置200能与一个或多个其它计算装置进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口205进行。并且,计算装置200还可以通过网络适配器206与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器206通过总线203与用于计算装置200的其它模块通信。应当理解,尽管图中未示出,可以结合计算装置200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

在一些可能的实施方式中,本申请提供的通信控制方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的通信控制方法中的步骤,例如,计算机设备可以执行如图4或图6中所示的步骤。

程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

本申请的实施方式的通信控制的程序产品可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在计算装置上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被命令执行系统、装置或者器件使用或者与其结合使用。

可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算装置上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算装置上部分在远程计算装置上执行、或者完全在远程计算装置或服务器上执行。在涉及远程计算装置的情形中,远程计算装置可以通过任意种类的网络包括局域网(lan)或广域网(wan)连接到用户计算装置,或者,可以连接到外部计算装置(例如利用因特网服务提供商来通过因特网连接)。

应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。

此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序命令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序命令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的命令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序命令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的命令产生包括命令装置的制造品,该命令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序命令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的命令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1