本发明涉及通信技术领域,特别是涉及一种网络间的数据传输方法、存储介质、计算机设备和消息传输系统。
背景技术:
面对新型网络攻击手段的出现和高安全度网络对安全的特殊需求,全新安全防护防范理念的网络安全技术――“网络隔离技术”应运而生。网络隔离技术的目标是确保隔离有害的攻击,在可信网络之外和保证可信网络内部信息不外泄的前提下,完成网间数据(消息)的安全交换。
在两个(或者更多)可信网络之间进行数据交换时,传统技术通常采用网络安全隔离装置来割断可信网络之间的穿透性tcp连接,进行非网络方式安全的数据传输。传统技术中用于数据传输的网络安全隔离装置可以将消息从内网传输至外网或者从外网传输至内网。
但是,在使用网络安全隔离装置传输消息时,请求端只能以0xff/0x00两种形式进行消息接收结果的反馈,换言之服务端仅可以接收到已成功接收消息或者未成功接收消息两种反馈结果。然而,消息未被成功接收,除了包含消息传输过程发生丢包事件这一情形外,还可能包含请求端暂时无法接收消息或者请求端接收的消息不完整等情形。仅以请求端未成功接收这一形式进行消息的接收结果反馈,服务端无法准确判断消息未成功接收的原因,也就无法根据反馈结果及时的做出相应处理。
因此,在消息传输时,如何将多样的反馈结果发送至服务端便成为亟需解决的技术问题。
技术实现要素:
基于此,有必要提出一种可以多样反馈请求端接收消息的结果的消息传输方法。
本发明提出了一种消息传输方法,包括:
外网队列管理器的服务端基于第一网络安全装置构建外网队列管理器的服务端到内网队列管理器的请求端之间的传输通道;
所述服务端读取所述外网队列管理器的传输队列中的待传输消息以生成传输文件;
所述服务端将所述传输文件经由第二网络安全隔离装置的文件传输系统发送至请求端;所述服务端接收所述请求端经由所述传输通道返回的确认消息,并根据所述确认消息判断所述传输文件的传输结果。
在其中一个实施例中,所述方法还包括:
所述请求端处理接收到的所述传输文件,并读取所述处理后的传输文件生成传输消息,将所述传输消息放入内网队列管理器的目标队列;
所述请求端根据接收所述传输文件的结果生成所述确认消息,并将所述确认消息经由所述传输通道发送至所述服务端。
在其中一个实施例中,所述服务端读取所述外网队列管理器的传输队列中的待传输消息以生成传输文件的步骤包括:
所述服务端根据读取的所述传输队列中的待传输消息,在临时目录下写入文本消息以生成所述传输文件;
所述服务端在所述文本消息完全写入所述传输文件后,将所述传输文件移动至所述文件传输系统的指定目录。
在其中一个实施例中,所述方法还包括:
所述服务端使用添加特征标识符的文件名命名所述传输文件;
其中,所述添加特征标识符的文件名用于所述请求端识别所述传输文件。
在其中一个实施例中,所述方法还包括:
若所述服务端判断所述传输文件未被移动至指定目录,则重新移动所述传输文件至指定目录。
在其中一个实施例中,所述服务端读取所述外网队列管理器的传输队列中的待传输消息以生成传输文件的步骤,包括:
若所述服务端检测到所述传输队列中的待传输消息的条数达到第一预设阈值,则所述服务端读取所述传输队列中的至少一条待传输消息,并根据读取的至少一条消息生成传输文件。
在其中一个实施例中,所述服务端读取所述外网队列管理器的传输队列中的待传输消息以生成传输文件的步骤,包括:
若当前时刻与发送上条传输文件的时刻之间的时间间隔达到第二预设阈值,则所述服务端读取所述传输队列中的至少一条待传输消息,并根据读取的至少一条消息生成传输文件。
在其中一个实施例中,所述服务端读取所述外网队列管理器的传输队列中的待传输消息以生成传输文件的步骤,包括:
若所述传输队列中的待传输消息的总大小达到第三预设阈值,则所述服务端读取所述传输队列中的至少一条待传输消息,并根据读取的至少一条消息生成传输文件。
在其中一个实施例中,在所述服务端将所述传输文件经由第二网络安全隔离装置的文件传输系统发送至请求端的步骤之前,所述方法还包括:
压缩所述传输文件,并将压缩后的所述传输文件发送至所述请求端。
相应的,在其中一个实施例中还提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
相应的,在其中一个实施例中还提出了一种计算机设备,包括存储器、处理器,及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
相应的,在其中一个实施例中还提出了一种消息传输系统,包含外网队列管理器、内网队列管理器,所述外网队列管理器包括传输队列和服务端,所述内网队列管理器包括请求端和目标队列,所述传输队列,用于存储放入的待传输消息;
所述服务端,用于预先基于第一网络安全装置构建所述服务端到所述请求端之间的传输通道,读取所述外网队列管理器的传输队列中的待传输消息以生成传输文件,并将所述传输文件经由第二网络安全隔离装置的文件传输系统发送至请求端,以及接收所述请求端经由所述传输通道返回的确认消息,根据所述确认消息判断所述传输文件的传输结果;
所述请求端,用于接收并处理所述传输文件,并读取所述处理后的传输文件生成传输消息,将所述传输消息放入内网队列管理器的目标队列,以及将根据所述传输文件的结果生成的确认消息发送至服务端。
与传统技术相比,本发明所提出一种消息传输方法、系统、存储介质和计算机设备具有以下优点:
本发明提出的数据传输方法、存储介质、计算机设备和消息传输系统,通过外网队列管理器的传输队列将待传输消息暂存,发送端读取该待传输消息,并根据读取的消息生成传输文件,再将传输文件经由第二网络安全隔离装置的文件传输系统发送至内网队列管理器的请求端,并通过基于第一网络安全隔离装置建立的传输通道反馈传输文件的传输结果,服务端再根据传输结果处理传输队列中的待传输消息,可以保证消息传输的可靠性。
此外,上述消息传输方法,应用传输通道反馈消息传输结果,这使得消息的反馈不局限于0x00和0xff两种形式,而是可以将消息传输过程中发生的多种情形以反馈结果的形式告知服务端,便于服务端根据多样性的反馈结果有针对的解决消息传输过程中出现的问题。
附图说明
图1为本发明实施例提出的一种消息传输方法的流程图;
图2为本发明实施例提出的实际应用场景下一种数据传输方法的步骤流程图;
图3为本发明实施例提出的一种消息传输系统的结构图;
图4为本发明实施例提出的一种计算机设备的结构图。
具体实施方式
为了使本发明的发明目的、技术方案及技术效果更加清楚明白,以下结合附图对本发明的具体实施例进行描述。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,为本申请实施例提出的一种消息传输方法的步骤流程图。该方法包括:
步骤s101:外网队列管理器的服务端基于第一网络安全装置构建外网队列管理器的服务端到内网队列管理器的请求端之间的传输通道。
在本实施例使用消息中间件进行消息传输。该消息中间件包含设置在外网的外网队列管理器和设置在内网的内网队列管理器。当内网用户需从外网获取消息时,内网用户的可以通过内网队列管理器的请求端向外网队列管理器的服务端发送连接请求,外网队列管理器的服务端根据接收的请求端发送的连接请求,基于第一网络安全装置构建外网队列管理器的服务端到内网队列管理器的请求端之间的传输通道。该传输通道可以为tcp传输通道。
步骤s102:服务端读取外网队列管理器的传输队列中的待传输消息以生成传输文件。
服务端在建立传输通道后,可以创建进程对外网队列管理器的传输队列是否放入待传输消息进行检测。当检测到传输队列被放入待传输消息,会对该待传输消息进行读取,并根据读取的消息生成传输文件。
步骤s103:服务端将传输文件经由第二网络安全隔离装置的文件传输系统发送至请求端。
在本实施例中,使用第二网络安全装置的文件传输系统进行传输文件的传输。文件传输系统包括:接收外网发送的传输文件的网络安全装置客户端和向内网发送传输文件的网络安全装置服务端。因此,服务端首先将传输文件发送至第二网络安全装置的网络安全装置客户端,第二网络安全装置再将传输文件从网络安全装置客户端转移至第二网络安全装置的网络安全装置服务端,最后请求端监控网络安全装置的网络安全服务端所使用的目录得知已有传输文件到达,处理该文件。
步骤s104:服务端接收请求端经由传输通道返回的确认消息,并根据确认消息判断传输文件的传输结果。
由于本实施例使用队列进行消息传输,因此,外网用户将待传输消息放入传输队列后,会被暂存于传输队列中,直至服务端接收到请求端反馈的确认消息,再根据确认消息处理暂存于传输队列中的待传输消息。消息传输过程发生任何意外,均不会影响传输队列中的待传输消息的保存。因此,消息未成功发送时,服务端均可以再根据传输队列中保存的待传输消息再次生成传输文件发送至请求端,从而保证消息的可靠传输。
在本实施例中,在服务端读取待传输消息生成传输文件后,待传输消息会被暂存于传输队列的指定目录下。若服务端接收到请求端返回的未成功接收传输文件的确认消息,服务端会执行消息回滚操作,将待传输消息从指定目录下取出,重新读取并生成传输文件。若服务端接收到请求端返回的成功接收传输文件的确认消息,服务端会执行消息提交操作,将待传输消息从指定目录下删除。
在本实施例中,消息传输过程,会存在消息丢包、请求端暂时无法接收传输文件或者无权限查看传输文件,以及传输文件中的消息不完整等多种意外情形。本实施例中请求端可以将上述情形自定义成多种相应的确认消息,再将自定义的确认消息通过传输通道发送至服务端,服务端可以根据确认消息获知消息传输过程中出现的问题,进而服务端可以有针对的解决问题,实现消息的可靠传输。
在其中一个实施例中,在请求端成功接收到传输文件,删除传输队列中对应的待传输消息,这既保证了消息的可靠传输,又传输队列的占用内存得以合理利用。
本实施例提出的消息传输方法,通过外网队列管理器的传输队列将待传输消息暂存,服务端读取该待传输消息,并根据读取的消息生成传输文件,再将传输文件经由第二网络安全隔离装置的文件传输系统发送至内网队列管理器的请求端,并通过基于第一网络安全隔离装置建立的传输通道反馈传输文件的传输结果,可以保证数据从外网到内网的可靠传输,而且可以提供了消息传输结果的多样且可靠的反馈。
在其中一个实施例中,请求端会处理接收到的所述传输文件(例如将传输文件转化为消息格式),请求端读取所述处理后的传输文件生成传输消息,将所述传输消息放入内网队列管理器的目标队列。
在其中一个实施例中,由于通常第二传输装置的文件传输系统对传输文件的格式有要求,因此在服务端读取待传输消息生成传输文件时,需保证生成的传输文件符合文件传输系统的格式要求。例如,当文件传输系统传输的文件为文本文件(例如base64格式的文件文件)时,服务端读取所述外网队列管理器的传输队列中的待传输消息以生成传输文件的步骤则可以包括:
步骤s1021:服务端根据读取的所述传输队列中的待传输消息,在临时目录下写入文本消息以生成传输文件。
步骤s1022:服务端在所述文本消息完全写入所述传输文件后,将所述传输文件移动至所述文件传输系统的指定目录。在其中一个实施例中,服务端可以判断传输文件是否被移动至第二网络安全隔离装置的文件传输系统的指定目录。若传输文件未被移动至指定目录,服务端会重新移动传输文件。
在其中一个实施例中,若请求端发送的确认消息为未接收传输文件或接收的传输文件中信息不完整,则服务端重新执行步骤s102-s104,从而确保请求端收到传输文件。
当文件传输系统检测到指定目录下有传输文件放入,则启动服务端到文件传输系统的网络安全装置客户端之间的文件传输,使服务端将传输文件发送至文件传输系统的网络安全装置客户端,之后再由文件传输系统将传输文件发送至请求端。
由于文件传输系统会将传输至其网络安全装置客户端的所有符合格式的文件均发送至内网队列管理器的请求端。因此,在其中一个实施例中,服务端可以使用添加特征标识符的文件名命名所述文本文件;该添加特征标识符的文件名可以用于请求端识别传输文件。有利的是,请求端易于识别传输文件,从而提高消息传输效率。
在其中一个实施例中,可能存在服务端同时将多条消息经由多个第二网络安全隔离装置发送至请求端的情形。因此,为了请求端准确识别区分接收的传输文件,可以使用添加通道标识符作为特征标识符来命名传输文件。
在其中一个实施例中,传输文件的名称中可以包含序列号,序列号是服务端生成传输文件时的顺序编号,可以用于请求端判断接收到的文件是否合法,以保证消息的准确性完整性。
在其中一个实施例中,服务端会在读取待传输文件时,在生成的传输文件的消息体前添加传输头,传输头中记录消息的大小,请求端在对传输文件的完整性校验时可以通过判断实际接收的传输文件中消息内容大小与传输头中记录的大小作比较来判断传输文件中消息是否完整。此外,传输文件中消息的内容里面也会包含消息的格式,序号等信息,在解析内容的时候也可以使用这些信息来判断消息的完整性与准确性。在一个实施例中,为了提高消息的传输效率,当传输队列中存在多条待传输消息时,若所述服务端检测到所述待传输数据队列中待传输消息的条数达到第一预设阈值(例如3),则服务端读取所述传输队列中的至少一条待传输消息,并根据读取的至少一条消息生成传输文件。
在其中一个实施例中,由于外网队列管理器的传输队列在何时被放入待传输消息,具有不确定性,若每次放入待传输消息,即启动消息传输机制,会浪费占用的资源,因此,可以通过设定时间阈值的方式优化消息传输的方案。若当前时刻与发送上条传输文件的时刻之间的时间间隔达到第二预设阈值(例如30s),则服务端读取传输队列中的至少一条待传输消息,并根据读取的至少一条消息生成传输文件。
在本发明的另一个实施例中提出了,若所述传输队列中的待传输消息的总大小达到第三预设阈值(例如100kb),则服务端读取所述传输队列中的至少一条待传输消息,并根据读取的至少一条消息生成传输文件。该方法也可以提高消息的传输效率。
为了进一步提高数据传输效率,在一个实施例中还提出了,在服务端将传输文件经由第二网络安全隔离装置的文件传输系统发送至请求端的步骤之前,所述消息传输方法还包括:
服务端压缩所述传输文件,并将压缩后的所述传输文件发送至请求端。
需要说明的是,上述服务端尽管可能读取了多条待传输消息,但是将该多条待传输消息生成一个传输文件。生成的传输文件可以为读取的传输队列中所有待传输消息生成的,也可以仅是读取部分待传输消息生成的。具体采用何种方式读取待传输消息以生成传输文件,可以根据实际情形灵活设置。
还需要说明的是,上述三种同时将传输队列中的多条待传输消息处理生成一个传输文件的触发机制,可以单独应用,也可以根据实际应用场景灵活选用两种或三种,在选用两种或三种触发机制时,可以将触发条件设为达到某一预设阈值即触发机制,也可以将触发条件设为全部达到预设阈值即触发机制,具体选用何种触发条件作为触发机制可以根据实际需求做灵活选择,本发明实施例对此不作限定。
如图2所示,为本发明实施例提出的一种实际应用场景下消息传输方法的步骤流程图。该方法被应用于linux系统。本实施例中采用三种方式触发服务端读取传输队列中待传输消息,触发条件为:待传输消息的条数达到3,当前时刻与发送上条传输文件的时刻之间的时间间隔达到30s,传输队列中的待传输消息的总大小达到100kb,触发其中一个条件,即启动传输机制。
步骤s201:内网队列管理器的请求端向外网队列管理器的服务端发送连接请求,服务端根据该连接请求构建基于第一网络安全隔离装置的从服务端到请求端的传输通道。
步骤s202:服务端检测到触发条件(设置的触发条件为:传输队列中被放入3条待传输消息,或者服务端检测到当前时刻与发送上条传输文件的时刻之间的时间间隔达到30s,或者服务端检测到传输队列中的待传输消息的总大小达到100kb)时,服务端读取传输队列中的待传输消息,在临时目录下名称为to.52.qm2.req001.txt的文件中写入文本消息,并在生成的传输文件的消息体前添加传输头以生成传输文件。
其中,该传输文件名中to.52.qm2.req为通道名(即通道标识符),可用于请求端识别传输文件;001为序列号。
步骤s203:服务端将传输文件to.52.qm2.req001.txt移动至第二网络安全隔离装置的文件传输系统的指定目录。
步骤s204:服务端判断传输文件to.52.qm2.req001.txt是否被移动至指定目录。若判断结果为是,则执行步骤s205;若判断结果为否,则重新执行步骤s203。
步骤s205:服务端将传输文件to.52.qm2.req001.txt发送至第二网络安全装置的文件传输系统的网络安全装置客户端。
步骤s206:第二网络安全装置将传输文件to.52.qm2.req001.txt发送至文件传输系统的网络安全装置服务端。
步骤s207:请求端根据通道名to.52.qm2.req识别传输文件to.52.qm2.req001.txt。
请求端可以根据linux系统提供inotify功能,可以实现对网络安全装置服务端的接收目录是否有新文件放入进行检测。一旦有新文件放入,可以根据通道名识别传输文件。
步骤s208:请求端根据传输文件的序列号001以及传输文件的传输头,对接收的传输文件to.52.qm2.req001.txt的完整性进行校验。
步骤s209:请求端对完整的传输文件进行反文本化处理(即将传输文件转化为消息格式),并读取反文本处理的传输文件中消息的内容生成传输消息,将传输消息放入目标队列。
步骤s210:请求端将根据接收的传输文件的结果生成确认消息经由传输通道发送至服务端。
请求端接收的传输文件的结果包含请求端是否接收到传输文件(即是否发生丢包),请求端是否可以接收传输文件、请求端是否有权限查看传输文件、请求端接收的传输文件是否包含完整消息等情形。请求端可以按照与服务端的约定将上述情形自行定义成多种对应的确认消息。
基于同样的发明思想,本发明还提出了一个消息传输系统,该系统可以执行上述实施例所提及的方法的步骤。如图3所示,该系统包含外网队列管理器320、内网队列管理器310,所述外网队列管理器320包括:传输队列322、服务端321,所述内网队列管理器310包括:请求端312、目标队列311,
所述传输队列322,用于存储放入的待传输消息;
所述服务端321,用于预先基于第一网络安全装置340构建所述服务端321到所述请求端312之间的传输通道,读取所述外网队列管理器320的传输队列322中的待传输消息以生成传输文件,并将所述传输文件经由第二网络安全隔离装置330的文件传输系统发送至请求端312,以及接收所述请求端312经由所述传输通道返回的确认消息,根据所述确认消息判断所述传输文件的传输结果;
所述请求端312,用于接收并处理所述传输文件,将处理后的传输文件放入目标队列311,以及将根据所述传输文件的结果生成的确认消息发送至服务端321。
在其中一个实施例中,请求端312,还用于处理接收到的所述传输文件,读取处理后的传输文件生成传输消息,并将传输消息放入内网队列管理器310的目标队列311;
根据接收所述传输消息的结果生成所述确认消息,并将所述确认消息经由所述传输通道发送至所述服务端。
在其中一个实施例中,服务端321,用于读取的传输队列322中的待传输消息,在临时目录下写入文本消息以生成传输文件;在所述文本消息完全写入所述传输文件后,将所述传输文件移动至所述文件传输系统的指定目录。
在其中一个实施例中,服务端321,还用于使用添加特征标识符的文件名命名所述传输文件;其中,所述添加特征标识符的文件名用于所述请求端识别所述传输文件。
在其中一个实施例中,服务端321,用于若检测到所述传输队列中的待传输消息的条数达到第一预设阈值,则所述服务端321读取所述传输队列322中的至少一条待传输消息,并根据读取的至少一条消息生成传输文件。
在其中一个实施例中,服务端321,用于若当前时刻与发送上条传输文件的时刻之间的时间间隔达到第二预设阈值,则所述服务端321读取所述传输队列322中的至少一条待传输消息,并根据读取的至少一条消息生成传输文件。
在其中一个实施例中,服务端321,用于若所述传输队列中的待传输消息的总大小达到第三预设阈值,则所述服务端321读取所述传输队列322中的至少一条待传输消息,并根据读取的至少一条消息生成传输文件。
在其中一个实施例中,服务端321,还用于,将所述传输文件经由第二网络安全隔离装置330的文件传输系统发送至请求端312的步骤之前,压缩所述传输文件,并将压缩后的所述传输文件发送至所述请求端。
相应的,本发明还提出了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所提出的方法的步骤。
本发明还提出了一种计算机设备,如图4所示,该计算机设备包括存储器410、处理器420,及存储在存储器上并可在处理器上运行的计算机程序,所述处理器420执行所述程序时实现上述实施例所提出的方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。