掌桥专利:专业的专利平台
掌桥专利
首页

一种数据传输方法、系统、存储介质及设备

文献发布时间:2024-04-18 19:58:26


一种数据传输方法、系统、存储介质及设备

技术领域

本申请涉及网闸技术领域,具体而言,涉及一种数据传输方法、系统、存储介质及设备。

背景技术

双向闸部署在不同安全等级的网络之间,通过物理逻辑隔离卡,实现数据跨网、跨安全域传输。双向硬件架构通常采用2+1架构,即由发送端主机、接收端主机和双向隔部件组成,双向隔离部件由两块隔离卡通过光纤连接构成。发送端主机和接收端主机采用代理技术接收和发送设备两边的网络数据,将网络层以下的数据卸载,根据应用协议过滤功能提取应用协议及数据,对数据进行安全检查,安全策数据采用私有协议封装,并通过双主机之间的隔离部件,实现跨网、跨安全域传输。

双主机上运行的代理技术程序采用多进程或多线程,进程或线程分成不同角色并负责不同的职责,通常分为协议代理引擎、内容检查引擎、病毒检查引擎。其中,协议代理引擎负责接收、发送协议数据、解析应用协议数据、检查协议、提取数据、封装私有协议、跨网传输、解封私有协议、向目标端发送数据;内容检查引擎负责检查数据格式、检查数据内容;病毒引擎负责检查数据病毒。相关技术中,这三个引擎之间通过网络通信并行处理一条网络连接的应用数据。这一方式虽然提高了传输性能,但是也带来了负面的影响:三个引擎之间采用网络连接传输数据,会造成额外的系统IO和内存资源,造成CPU和内存资源的额外损耗。

发明内容

本申请的目的在于提供一种数据传输方法、系统、存储介质及设备,旨在解决相关技术中存在的双主机上运行的代理技术程序的三个引擎之间采用网络连接传输数据,会造成额外的系统IO和内存资源,造成CPU和内存资源的额外损耗的问题。

第一方面,本申请提供的一种数据传输方法,应用于双向网闸系统中的主机,包括:协议代理引擎创建共享内存池,使用共享内存块保存数据后,通过网络连接将所述共享内存块的偏移地址发送给内容检查引擎和病毒检查引擎;内容检查引擎和病毒检查引擎根据接收到的偏移地址,以及共享内存初始地址,得到所述共享内存块的实际地址,在对所述实际地址中的数据进行检查后,将检查结果写在所述数据中,并通过无锁循环队列将共享内存块的偏移地址回传给协议代理引擎;协议代理引擎经偏移地址计算后,读取所述共享内存块中的检查结果,并根据所述检查结果对所述数据进行继续处理或阻断传输。

在上述实现过程中,协议代理引擎使用共享内存块保存数据,通过网络连接将共享内存块的偏移地址发送给内容检查引擎和病毒检查引擎,而内容检查引擎和病毒检查引擎经偏移地址计算后,获取共享内存块中的数据并对其进行处理,之后将检查结果写在数据中并将偏移地址回传给协议代理引擎,协议代理引擎根据共享内存块中的检查结果对数据进行继续处理或阻断传输。如此,通过共享内存池、无锁循环队列和网络连接传输的结合,解决了多进程间通信性能低的问题,减少了资源的损耗,从而有效提升了网闸数据传输数据的性能、可靠性和稳定性。

进一步地,在一些实施例中,所述协议代理引擎包括主代理进程和至少一个从代理进程;所述协议代理引擎创建共享内存池,包括:主代理进程创建共享内存,将所述共享内存分成多个共享内存块,主代理进程和从代理进程获取所述共享内存块,并将所述共享内存块的偏移地址添加到无锁循环队列,形成共享内存池。

在上述实现过程中,提供协议代理引擎创建共享内存池的具体方式,其中,协议代理引擎采用至少两个代理进程,提升处理网络连接的并发性能。

进一步地,在一些实施例中,所述通过网络连接将所述共享内存块的偏移地址发送给内容检查引擎和病毒检查引擎之前,包括:协议代理引擎与内容检查引擎建立第一网络连接,并为所述第一网络连接建立第一回收队列;所述第一回收队列记录协议代理引擎发送给内容检查引擎的偏移地址;协议代理引擎与病毒检查引擎建立第二网络连接,并为所述第二网络连接建立第二回收队列;所述第二回收队列记录协议代理引擎发送给病毒检查引擎的偏移地址。

在上述实现过程中,协议代理引擎与内容检查引擎和病毒检查引擎间建立唯一网络连接后,再为每个连接建立对应的回收队列,用以记录通过相应的网络连接发送的偏移地址,有利于后续查找出丢失的共享内存块偏移地址以及回收共享内存块。

进一步地,在一些实施例中,所述协议代理引擎经偏移地址计算后,读取所述共享内存块中的检查结果之前,包括:协议代理引擎根据内容检查引擎回传的偏移地址,在所述第一回收队列中按顺序逐一查找,并根据查找结果确定是否丢失数据;协议代理引擎根据病毒检查引擎回传的偏移地址,在所述第二回收队列中按顺序逐一查找,并根据查找结果确定是否丢失数据;所述读取所述共享内存块中的检查结果的步骤在确定未丢失数据的情况下执行。

在上述实现过程中,协议代理引擎将回传的偏移地址和回收队列中的偏移地址进行顺序、逐一对比,以此确定是否存在丢失的偏移地址,如此,实现对丢失的共享内存块偏移地址的有效查找。

进一步地,在一些实施例中,所述根据查找结果确定是否丢失数据,包括:若查找结果指示存在不相等的共享内存块,确定丢失数据。

在上述实现过程中,协议代理引擎在对比偏移地址时,若发现不相等的情况,即可确定丢失数据,如此,提升对丢失的共享内存块偏移地址的查找效率。

进一步地,在一些实施例中,所述方法还包括:当根据在第一回收队列中的查找结果确定丢失数据时,协议代理引擎将第一回收队列中的偏移地址移出并发送给第二回收队列;当根据在第二回收队列中的查找结果确定丢失数据时,协议代理引擎将第二回收队列中的偏移地址对应的共享内存块中的数据通过私有协议发送出去,并将所有偏移地址释放给所述共享内存池。

在上述实现过程中,提供一种确定偏移地址丢失时协议代理引擎的处理方式,实现对丢失的共享内存块的回收,从而进一步提升网闸数据传输数据的性能、可靠性和稳定性。

进一步地,在一些实施例中,所述根据所述检查结果对所述数据进行继续处理或阻断传输,包括:若所述检查结果是所述内容检查引擎的检查结果,且所述检查结果指示所述数据为合法数据,协议代理引擎将第一回收队列中的偏移地址移出并发送给第二回收队列;若所述检查结果是所述内容检查引擎的检查结果,且所述检查结果指示所述数据为非法数据,协议代理引擎阻断所述数据的传输,并将所有偏移地址释放给所述共享内存池;若所述检查结果是所述病毒检查引擎的检查结果,且所述检查结果指示所述数据为合法数据,协议代理引擎通过私有协议将所述数据发送出去;若所述检查结果是所述病毒检查引擎的检查结果,且所述检查结果指示所述数据为非法数据,协议代理引擎阻断所述数据的传输,并将所有偏移地址释放给所述共享内存池。

在上述实现过程中,提供协议代理引擎根据不同检查结果执行的不同操作,保障数据传输的可靠性,有效提升网闸的性能。

第二方面,本申请提供的一种数据传输系统,应用于双向网闸系统中的主机,所述系统包括协议代理引擎、内容检查引擎和病毒检查引擎,其中:所述协议代理引擎用于:创建共享内存池,使用共享内存块保存数据后,通过网络连接将所述共享内存块的偏移地址发送给内容检查引擎;所述内容检查引擎用于:根据接收到的偏移地址,以及共享内存初始地址,得到所述共享内存块的实际地址,在对所述实际地址中的数据进行内容检查后,将检查结果写在所述数据中,并通过无锁循环队列将共享内存块的偏移地址回传给协议代理引擎;所述协议代理引擎还用于:当接收到内容检查引擎回传的偏移地址时,经偏移地址计算后,读取所述共享内存块中的检查结果,并根据所述检查结果将所述共享内存块的偏移地址发送给病毒检查引擎或阻断所述数据的传输;所述病毒检查引擎用于:根据接收到的偏移地址,以及共享内存初始地址,得到所述共享内存块的实际地址,在对所述实际地址中的数据进行病毒检查后,将检查结果写在所述数据中,并通过无锁循环队列将共享内存块的偏移地址回传给协议代理引擎;所述协议代理引擎还用于:当接收到病毒检查引擎回传的偏移地址时,经偏移地址计算后,读取所述共享内存块中的检查结果,并根据所述检查结果将所述数据发送出去或阻断所述数据的传输。

第三方面,本申请提供的一种电子设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面任一项所述的方法的步骤。

第四方面,本申请提供的一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如第一方面任一项所述的方法。

第五方面,本申请提供的一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行如第一方面任一项所述的方法。

本申请公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本申请公开的上述技术即可得知。

为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的一种数据传输方法的流程图;

图2为本申请实施例提供的一种基于动态帧间隙参数控制隔离卡发送速度的方案的示意图;

图3为本申请实施例提供的一种数据传输系统的框图;

图4为本申请实施例提供的一种电子设备的结构框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

如背景技术记载,相关技术中存在着双主机上运行的代理技术程序的三个引擎之间采用网络连接传输数据,会造成额外的系统IO和内存资源,造成CPU和内存资源的额外损耗的问题。基于此,本申请实施例提供一种数据传输方案,以解决上述问题。

接下来对本申请实施例进行介绍:

如图1所示,图1是本申请实施例提供的一种数据传输方法的流程图,所述方法可以应用于双向网闸系统中的主机。这里的双向网闸系统是由发送端主机、接收端主机和双向隔部件组成的系统,因此,这里的主机可以是指发送端主机,也可以是指接收端主机。该主机可以是基于Linux内核的服务器操作系统配置的主机。所述方法可以实现为双主机上运行的代理技术程序。

所述方法包括:

在步骤101、协议代理引擎创建共享内存池,使用共享内存块保存数据后,通过网络连接将所述共享内存块的偏移地址发送给内容检查引擎和病毒检查引擎;

本实施例方案中,协议代理引擎、内容检查引擎和病毒检查引擎均可以认为是一个或多个进程。与相关技术不同,本实施例方案中,这三个引擎之间通过网络连接传输共享内存块的偏移地址,各个引擎再通过偏移地址获取共享内存块中的内容,即采用共享内存通信,如此,有效提升性能。

具体地,在一些实施例中,该协议代理引擎可以包括主代理进程和至少一个从代理进程;相应地,本步骤中提到的协议代理引擎创建共享内存池可以包括:主代理进程创建共享内存,将所述共享内存分成多个共享内存块,主代理进程和从代理进程获取所述共享内存块,并将所述共享内存块的偏移地址添加到无锁循环队列,形成共享内存池。也就是说,该协议代理引擎可以采用至少两个进程,其中一个进程为主代理进程,其余为从代理进程,该主代理进程和该从代理进程可以是并发进程,每个代理进程均具有相通的功能,用于提升处理网络连接的并发性能。在创建共享内存池时,主代理进程负责创建一个指定大小的共享内存,并将其分成多个共享内存块,这样,每个代理进程获取到若干个共享内存块,各自将每个共享内存块的偏移地址加入到自己的无锁循环队列进行管理,从而形成一个共享内存池。这样,当主代理进程向共享内存池申请内存时,将从无锁循环队列取出一个或多个共享内存块,释放内存时,将一个或多个共享内存块的偏移地址加入到无锁循环队列中。

共享内存块的偏移地址为共享内存块的实际地址减去共享内存起始地址得到的差值。因此,内容检查引擎和病毒检查引擎分别打开共享内存,获取共享内存起始地址,进而结合协议代理引擎传输的共享内存块的偏移地址,即可获取到共享内存块的内容。本步骤中提到的数据可以是指私有协议数据,主机采用代理技术接收或发送的设备两边的网络数据时,由协议代理引擎负责收发、解析、检查协议、提取所需信息,进而封装成私有协议数据。在实现时,协议代理引擎将数据封装成私有协议数据并拷贝到共享内存块中,再通过网络连接将共享内存块的偏移地址发送给内容检查引擎和病毒检查引擎,由内容检查引擎检查数据格式和数据内容,以及由病毒检查引擎检查数据病毒。需要说明的是,为了有效提高网闸的性能和可靠性,病毒检查的步骤可以是在内容检查完毕后再执行的,即协议代理引擎可以先将共享内存块的偏移地址发送给内容检查引擎,待内容检查引擎检查完毕并回传偏移地址后,协议代理引擎再将共享内存块的偏移地址发送给病毒检查引擎。

在实际应用中,当一进程异常重启后,被其使用的共享内存将无法再被利用,因此,在一些实施例中,协议代理引擎在通过网络连接将所述共享内存块的偏移地址发送给内容检查引擎和病毒检查引擎之前,可以与内容检查引擎建立第一网络连接,并为所述第一网络连接建立第一回收队列;所述第一回收队列记录协议代理引擎发送给内容检查引擎的偏移地址;以及与病毒检查引擎建立第二网络连接,并为所述第二网络连接建立第二回收队列;所述第二回收队列记录协议代理引擎发送给病毒检查引擎的偏移地址。也就是说,协议代理引擎与内容检查引擎和病毒检查引擎间建立唯一网络连接后,再为每个连接建立对应的回收队列,用以记录通过相应的网络连接发送的偏移地址,有利于后续查找出丢失的共享内存块偏移地址以及回收共享内存块。

在步骤102、内容检查引擎和病毒检查引擎根据接收到的偏移地址,以及共享内存初始地址,得到所述共享内存块的实际地址,在对所述实际地址中的数据进行检查后,将检查结果写在所述数据中,并通过无锁循环队列将共享内存块的偏移地址回传给协议代理引擎;

本实施例方案中,内容检查引擎和病毒检查引擎可以根据接收到的偏移地址,加上共享内存初始地址,获取到共享内存块的内容,之后,内容检查引擎和病毒检查引擎分别根据对应的私有协议处理数据,将检查结果填写在私有协议中,最后将偏移地址通过网络连接发送给协议代理引擎。其中,内容检查引擎和病毒检查引擎对数据进行检查的具体处理过程与相关技术一致,在此不作赘述。

在步骤103、协议代理引擎经偏移地址计算后,读取所述共享内存块中的检查结果,并根据所述检查结果对所述数据进行继续处理或阻断传输。

本步骤是指:协议代理引擎读取网络连接中的偏移地址,经偏移地址计算后,读取共享内存块私有协议中的结果值,并根据该结果值执行不同的处理操作,从而有效解决多进程间通信性能低和共享内存泄露问题。

在一些实施例中,本步骤中提到的根据所述检查结果对所述数据进行继续处理或阻断传输可以包括:若所述检查结果是所述内容检查引擎的检查结果,且所述检查结果指示所述数据为合法数据,协议代理引擎将第一回收队列中的偏移地址移出并发送给第二回收队列;若所述检查结果是所述内容检查引擎的检查结果,且所述检查结果指示所述数据为非法数据,协议代理引擎阻断所述数据的传输,并将所有偏移地址释放给所述共享内存池;若所述检查结果是所述病毒检查引擎的检查结果,且所述检查结果指示所述数据为合法数据,协议代理引擎通过私有协议将所述数据发送出去;若所述检查结果是所述病毒检查引擎的检查结果,且所述检查结果指示所述数据为非法数据,协议代理引擎阻断所述数据的传输,并将所有偏移地址释放给所述共享内存池。也就是说,针对内容检查引擎的检查结果,如果该检查结果是合法数据,即内容检查通过,则协议代理引擎将偏移地址出队并发送给第二回收队列进行病毒检查,如果该检查结果是非法数据,即内容检查不通过,则协议代理引擎阻断数据传输,将所有偏移地址释放给共享内存池;相应地,针对病毒检查引擎的检查结果,如果该检查结果是合法数据,即病毒检查通过,则协议代理引擎将偏移地址中数据通过私有协议发送出去,如果该检查结果是非法数据,即病毒检查不通过,则协议代理引擎阻断数据传输,将所有偏移地址释放给共享内存池。如此,保障数据传输的可靠性,有效提升网闸的性能。

此外,在一些实施例中,协议代理引擎在读取所述共享内存块中的检查结果之前,可以根据内容检查引擎回传的偏移地址,在所述第一回收队列中按顺序逐一查找,并根据查找结果确定是否丢失数据;还可以根据病毒检查引擎回传的偏移地址,在所述第二回收队列中按顺序逐一查找,并根据查找结果确定是否丢失数据;所述读取所述共享内存块中的检查结果的步骤在确定未丢失数据的情况下执行。也就是说,在内容检查引擎执行完内容检查并将偏移地址回传给协议代理引擎后,协议代理引擎可以将返回的偏移地址和第一回收队列中的地址按顺序进行逐一对比,以此来确定是否丢失数据,若没有丢失数据,则读取共享内存块中的检查结果;同样地,在病毒检查引擎执行完病毒检查并将偏移地址回传给协议代理引擎后,协议代理引擎可以根据返回的偏移地址在第二回收队列中按顺序、逐一查找,以此来确定是否丢失数据,若没有丢失数据,则读取共享内存块中的检查结果。如此,实现对丢失的共享内存块偏移地址的有效查找。

可选地,前面提到的根据查找结果确定是否丢失数据的步骤可以包括:若查找结果指示存在不相等的共享内存块,确定丢失数据。例如,协议代理引擎向内容检查引擎发送8个偏移地址,即第一回收队列中存储8个偏移地址,假设其偏移地址值是1至8,当内容检查引擎回传的偏移地址值仅为1和8时,协议代理引擎通过逐一查找,发现存在不相等的共享内存块,则确定丢失数据,其可能是因进程异常退出导致偏移地址值2至7丢失。反之,当内容检查引擎回传的偏移地址值也是1至8时,协议代理引擎通过逐一查找,发现对应的共享内存块均相等,此时可以确定偏移地址未丢失,则协议代理引擎可以继续对共享内存块中的检查结果进行读取。

进一步地,在一些实施例中,上述方法还可以包括:当根据在第一回收队列中的查找结果确定丢失数据时,协议代理引擎将第一回收队列中的偏移地址移出并发送给第二回收队列;当根据在第二回收队列中的查找结果确定丢失数据时,协议代理引擎将第二回收队列中的偏移地址对应的共享内存块中的数据通过私有协议发送出去,并将所有偏移地址释放给所述共享内存池。也就是说,当内容检查引擎丢失了部分或全部偏移地址时,协议代理引擎将第一回收队列中的偏移地址移出并发送给第二回收队列,同时通过网络连接发送给病毒检查引擎;相应地,当病毒检查引擎丢失了部分或全部偏移地址时,协议代理引擎将第二回收队列中的偏移地址中的数据通过私有协议发送出去,并将所有偏移地址释放给共享内存池。如此,实现对丢失的共享内存块的回收,从而进一步提升网闸数据传输数据的性能、可靠性和稳定性。

本申请实施例,协议代理引擎使用共享内存块保存数据,通过网络连接将共享内存块的偏移地址发送给内容检查引擎和病毒检查引擎,而内容检查引擎和病毒检查引擎经偏移地址计算后,获取共享内存块中的数据并对其进行处理,之后将检查结果写在数据中并将偏移地址回传给协议代理引擎,协议代理引擎根据共享内存块中的检查结果对数据进行继续处理或阻断传输。如此,通过共享内存池、无锁循环队列和网络连接传输的结合,解决了多进程间通信性能低的问题,减少了资源的损耗,从而有效提升了网闸数据传输数据的性能、可靠性和稳定性。

为了对本申请的方案做更为详细的说明,接下来介绍一具体实施例:

在双向网闸系统中,双主机上运行的代理技术程序采用多进程或多线程,进程或线程分成不同角色并负责不同的职责,通常分为协议代理引擎、内容检查引擎、病毒检查引擎。相关技术中,这三个引擎之间通过网络通信并行处理一条网络连接的应用数据,提高了传输性能。然而,在试验中发现,这一方式会造成额外的系统IO和内存资源,造成CPU和内存资源的额外损耗。本实施例方案在初始阶段,为了解决这一问题,提出三个引擎之间采用共享内存通信,有效提升性能,但是采用共享内存通信的方式在一些复杂场景中也可能存在如下两方面的弊端:第一、使用信号量等互斥机制保护共享内存造成性能损耗;第二、使用共享内存通信时出现共享内存资源无法回收的情况,例如其中一个引擎异常重启后,被其使用的共享内存将无法再被利用。

基于此,本实施例提供一种基于多进程间共享内存回收方案,该方案中涉及的双向网闸设备的架构如图2所示,具体地,以国产化8核CPU、Linux系统和1GB共享内存为例开展应用设计,双向网闸设备采用双主机架构,发送端主机21和接收端主机22分别采用上述CPU和操作系统;主机上分别运行相互独立的协议代理引擎23、内容检查引擎24和病毒检查引擎25,分别实现不同方向的网络协议代理和数据安全检查。图2是采用由左向右的网络传输、检查为例开展描述,而实际应用中,由右向左的原理与由左到右的方向原理相同。

该协议代理引擎采用4个进程,分别为代理进程A1、代理进程A2、代理进程A3和代理进程A4;内容检查引擎采用1个进程,为内容检查进程B1;病毒检查引擎采用1个进程,为病毒检查进程C1。本实施例方案基于以下工作流程实现网络数据代理和安全检查:

S201、代理进程A1负责创建1GB共享内存,并将共享内存按2KB/块分为524288个共享内存块,4个代理进程各获取到131072块共享内存块,各自将每块共享内偏移存地址加入到自己的无锁循环队列进行管理,形成了一个名称是“pp1_mp”的共享内存池;

S202、内容检查进程B1和病毒检查进程C1分别打开共享内存,获取共享内存的起始地址,进程可以根据共享内存块的偏移地址加上共享内存起始地址,获取到共享内存块的内容;同时,内容检查进程B1为每个代理进程创建不同的网络连接侦听端口,并与各个代理进程建立唯一的网络进程连接通信通道,如内容检查进程B1侦听依次对应于代理进程A1、A2、A3、A4的100001端口、100002端口、100003端口、100004端口,多个内容检查进程依据代理进程数从100000开始进行累加打开侦听端口;同样地,病毒检查进程C1为每个代理进程创建不同的网络连接侦听端口,并与各个代理进程建立唯一的网络进程连接通信通道,如病毒检查进程C1侦听依次对应于代理进程A1、A2、A3、A4的200001端口、200002端口、200003端口、200004端口,多个病毒检查进程依据代理进程数从200000开始进行累加打开侦听端口;

S203、代理进程A1分别与内容检查进程B1和病毒检查进程C1建立唯一网络连接后,再为对应的连接建立一个名称是“pp1_qc1”和“pp1_qv1”的回收队列;其他进程创建的回收队列名称按前面的命名格式,再根据代理进程数量和检查进程数量基于1进行累加替换;

S204、代理进程A1从pp1_mp中申请共享内存块,将数据封装成私有协议数据并拷贝到共享内存块中,通过网络连接将共享内存块的偏移地址发送给内容检查进程B1,并将内存块的偏移地址入队到pp1_qc1回收队列中;

S205、内容检查进程B1读取网络连接数据,获取共享内存块的偏移地址后,加上本进程共享内存的起始地址,获取共享内存块的地址,并根据私有协议处理数据,将检查结果填写到私有协议中,最后将偏移地址通过网络连接发送给代理进程A1;

S206、代理进程A1读取网络连接中的偏移地址,经偏移地址计算后,读取共享内存块私有协议中的结果值,并根据不同结果值执行不同的处理,具体地,代理进程A1根据返回的偏移地址在pp1_qc1中顺序、逐一查找,若二者对比完全一致,确定未丢失偏移地址,则如果检查结果是合法数据,将偏移地址出队并发送给pp1_qv1进行病毒检查,如果检查结果是非法数据,阻断数据传输,将所有的偏移地址释放给内存池pp1_mp;若二者对比不一致,即出现不相等的情况,确定丢失偏移地址,此时代理进程A1将pp1_qc1中的偏移地址移出,并发送给pp1_qv1,同时通过网络连接发送给病毒检查进程C1;

S207、病毒检查进程C1进程读取网络连接数据,获取共享内存块的偏移地址后,加上本进程共享内存的起始地址,获取共享内存块的地址,并根据私有协议处理数据,将检查结果填写到私有协议中,最后将偏移地址通过到网络连接发送给代理进程A1;

S208、代理进程A1读取网络连接中的偏移地址,经偏移地址计算后,读取共享内存块私有协议中的结果值,并根据不同结果值执行不同的处理,具体地,代理进程A1根据返回的偏移地址在pp1_qv1中顺序、逐一查找,若二者对比完全一致,确定未丢失偏移地址,则如果检查结果是合法数据,将偏移地址中数据通过私有协议发送出去,如果检查结果是非法数据,阻断数据传输,将所有的偏移地址释放给内存池pp1_mp;若二者对比不一致,即出现不相等的情况,确定丢失偏移地址,此时代理进程A1将偏移地址中数据通过私有协议发送出去。最后将所有偏移地址释放给内存池pp1_mp。

本申请实施例的方案,采用回收队列、共享内存池、无锁循环队列和网络连接传输的方法,可以有效解决多进程间通信性能低和共享内存泄露问题;代理进程通过对比发送和接收共享内存块偏移地址,查找出丢失的共享内存块,并将丢失的共享快内存回收,进一步提升网闸数据传输数据的性能、可靠性和稳定性;方案简单且易于实现,可以有效提高网闸的性能、可靠性等数据综合能力,并降低系统运维的成本。

与前述方法的实施例相对应,本申请还提供数据传输系统及其应用的终端的实施例:

如图3所示,图3是本申请提供的一种数据传输系统的示意图,所述系统应用于双向网闸系统中的主机,所述系统包括协议代理引擎31、内容检查引擎32和病毒检查引擎33,其中:

所述协议代理引擎31用于:创建共享内存池,使用共享内存块保存数据后,通过网络连接将所述共享内存块的偏移地址发送给内容检查引擎32;

所述内容检查引擎32用于:根据接收到的偏移地址,以及共享内存初始地址,得到所述共享内存块的实际地址,在对所述实际地址中的数据进行内容检查后,将检查结果写在所述数据中,并通过无锁循环队列将共享内存块的偏移地址回传给协议代理引擎31;

所述协议代理引擎31还用于:当接收到内容检查引擎32回传的偏移地址时,经偏移地址计算后,读取所述共享内存块中的检查结果,并根据所述检查结果将所述共享内存块的偏移地址发送给病毒检查引擎33或阻断所述数据的传输;

所述病毒检查引擎33用于:根据接收到的偏移地址,以及共享内存初始地址,得到所述共享内存块的实际地址,在对所述实际地址中的数据进行病毒检查后,将检查结果写在所述数据中,并通过无锁循环队列将共享内存块的偏移地址回传给协议代理引擎31;

所述协议代理引擎31还用于:当接收到病毒检查引擎33回传的偏移地址时,经偏移地址计算后,读取所述共享内存块中的检查结果,并根据所述检查结果将所述数据发送出去或阻断所述数据的传输。

上述系统中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

本申请还提供一种电子设备,请参见图4,图4为本申请实施例提供的一种电子设备的结构框图。电子设备可以包括处理器410、通信接口420、存储器430和至少一个通信总线440。其中,通信总线440用于实现这些组件直接的连接通信。其中,本申请实施例中电子设备的通信接口420用于与其他节点设备进行信令或数据的通信。处理器410可以是一种集成电路芯片,具有信号的处理能力。

上述的处理器410可以是通用处理器,包括中央处理器(CPU,Central ProcessingUnit)、网络处理器(NP,Network Processor)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。该处理器410可以是微处理器,或者该处理器410也可以是任何常规的处理器等。

存储器430可以是,但不限于,随机存取存储器(RAM,Random Access Memory),只读存储器(ROM,Read Only Memory),可编程只读存储器(PROM,Programmable Read-OnlyMemory),可擦除只读存储器(EPROM,Erasable Programmable Read-Only Memory),电可擦除只读存储器(EEPROM,Electric Erasable Programmable Read-Only Memory)等。存储器430中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器410执行时,电子设备可以执行上述图1方法实施例涉及的各个步骤。

可选地,电子设备还可以包括存储控制器、输入输出单元。

所述存储器430、存储控制器、处理器410、外设接口、输入输出单元各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通信总线440实现电性连接。所述处理器410用于执行存储器430中存储的可执行模块,例如电子设备包括的软件功能模块或计算机程序。

输入输出单元用于提供给用户创建任务以及为该任务创建启动可选时段或预设执行时间以实现用户与服务器的交互。所述输入输出单元可以是,但不限于,鼠标和键盘等。

可以理解,图4所示的结构仅为示意,所述电子设备还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。图4中所示的各组件可以采用硬件、软件或其组合实现。

本申请实施例还提供一种存储介质,所述存储介质上存储有指令,当所述指令在计算机上运行时,所述计算机程序被处理器执行时实现方法实施例所述的方法,为避免重复,此处不再赘述。

本申请还提供一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行方法实施例所述的方法。

在本申请所提供的几个实施例中,应该理解到,所揭露的方法,也可以通过其它的方式实现。另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

相关技术
  • 一种数据传输方法、设备及计算机可读存储介质
  • 一种数据传输方法、装置、电子设备及存储介质
  • 通信数据传输方法、系统、设备及计算机可读存储介质
  • 一种数据传输方法、系统、切换装置及可读存储介质
  • 一种数据存储方法、调度装置、系统、设备及存储介质
  • 信息处理系统、信息处理设备、外围设备、数据传输方法和存储数据传输程序的非暂时性存储介质
  • 一种数据传输方法、数据传输系统、设备及存储介质
技术分类

06120116495084