本发明涉及信息传输领域,特别是一种私有协议信息传输系统与方法。
背景技术:
信息传输是从一端将命令或状态信息经信道传送到另一端,并被对方所接收。包括传送和接收。传输介质分有线和无线两种,有线为电话线或专用电缆;无线是利用电台、微波及卫星技术等。信息传输过程中不能改变信息,信息本身也并不能被传送或接收。必须有载体,如数据、语言、信号等方式,且传送方面和接收方面对载体有共同解释。
传输协议中各层都为上一层提供业务功能。为了提供这种业务功能,下一层将上一层中的数据并入到本层的数据域中,然后通过加入报头或报尾来实现该层业务功能,该过程叫做数据封装。用户的数据要经过一次次包装,最后转化成可以在网络上传输的信号,发送到网络上。当到达目标计算机后,再执行相反的拆包过程。
技术实现要素:
本发明的目的在于克服现有技术的不足,提供一种私有协议信息传输系统与方法,支持标准HTTP协议的私有协议传输和转发,客户端直接以HTTP方式发起请求,接收应答,实现IB隔断的两个物理系统之间的信息安全传输,保证物理系统之间既能实现信息的传输,又防止网络间的非法篡改、网络攻击、病毒蔓延等问题,兼容市面上只要支持HTTP传输的各种系统,方便接入。
本发明的目的是通过以下技术方案来实现的:私有协议信息传输系统,它包括外网和内网,所述的外网包括外网交换机、外网私有协议媒体服务中心服务器、多个应用端和外网HTTP服务器;所述的外网私有协议媒体服务中心服务器、多个应用主机和外网HTTP服务器与外网交换接连接;所述的内网包括内网交换机、内网私有协议媒体服务中心服务器、多个应用端和内网HTTP服务器,所述的内网私有协议媒体服务中心服务器、多个应用主机和内网HTTP服务器分别与内网交换接连接;外网私有协议媒体服务中心服务器与内网私有协议媒体服务中心服务器之间由IB链路连接,外网和内网为两个相互隔离的网络;应用端通过私有协议访问到HTTP服务器。
所述的私有协议媒体服务中心服务器采用infiniband板卡作为传输接口。
所述的外网私有协议媒体服务中心服务器和内网私有协议媒体服务中心服务器均包括第一主机和第二主机。
私有协议信息传输系统的信息传输方法,外网向内网传输信息与内网向外网传输信息的步骤相同,外网向内网传输信息包括如下步骤:
S1:外网的私有协议媒体服务中心服务器的监控进程启动工作进程;
S2:外网的私有协议媒体服务中心服务器为内网的HTTP服务器创建、绑定端口号,并进行监听;
S3:判断应用端线程需求是否>0,若大于0则继续进程,若小于0则重复判断应用端线程需求;
S4:启动应用端线程并等待拿锁;
S5:判断应用端是否连接,若未连接则重复判断客户是否连接,若已连接则继续进程;
S6:判断内网HTTP服务器是否反向代理设置外网的私有协议媒体服务中心服务器的服务端口号,若否则实现Socks4/4a/5相关协议处理,跳转步骤S8,若是则继续进程;
S7:使用自定义封装让外网的私有协议媒体服务中心服务器的第二主机与内网HTTP服务器建立连接通道;
S8:使用自定义封装让外网的私有协议媒体服务中心服务器的第二主机监听其本身与内网HTTP服务器相关事件;
S9:使外网的私有协议媒体服务中心服务器的第一主机监听其本身与客户端相关事件;
S10:使用自定义封装取消外网的私有协议媒体服务中心服务器的第二主机的监听操作;
S11:判断是否存在反向代理;
A:若是,则在HTTP请求头中插入待传输信息;
B:若否,则使用自定义封装完成客户端、外网的私有协议媒体服务中心服务器的第一主机、外网的私有协议媒体服务中心服务器的第二主机、内网HTTP服务器之间数据转发;
S12:重复步骤S8-S11,直到完成信息传输。
所述的客户端发送的命令包括CWD命令和STOR命令。
所述的自定义封装将基础网络传输协议封装成独立API调用。
所述的反省代理指根据客户端的请求,从后端的服务器上获取资源,然后再将这些资源返回给客户端。
所述的与服务器相关事件和与客户端相关事件均包括socket编程中的可读、可写及错误事件。
该方法还能够实现应用端、外网的私有协议媒体服务中心服务器的第一主机、PCIE设备、外网的私有协议媒体服务中心服务器的第二主机、内网HTTP服务器之间数据转发。
本发明的有益效果是:本发明提供了一种私有协议信息传输系统与方法,支持标准HTTP协议的私有协议传输和转发,客户端直接以HTTP方式发起请求,接收应答,实现IB隔断的两个物理系统之间的信息安全传输,保证物理系统之间既能实现信息的传输,又防止网络间的非法篡改、网络攻击、病毒蔓延等问题,兼容市面上只要支持HTTP传输的各种系统,方便接入。
附图说明
图1为信息传输系统结构图;
图2为信息传输方法流程图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
如图1所示,私有协议信息传输系统,它包括外网和内网,所述的外网包括外网交换机、外网私有协议媒体服务中心服务器(PMSC_server)、多个应用端和外网HTTP服务器(HTTP_server);所述的外网私有协议媒体服务中心服务器、多个应用主机和外网HTTP服务器与外网交换接连接;所述的内网包括内网交换机、内网私有协议媒体服务中心服务器(PMSC_server)、多个应用端和内网HTTP服务器(HTTP_server),所述的内网私有协议媒体服务中心服务器、多个应用主机和内网HTTP服务器分别与内网交换接连接;外网私有协议媒体服务中心服务器与内网私有协议媒体服务中心服务器之间由IB链路连接,外网和内网为两个相互隔离的网络;应用端通过私有协议访问到HTTP服务器。
外网PMSC_server与内网PMSC_server组成PSMC系统,PMSC_server采用infiniband板卡作为传输介质,自主开发传输协议,实现两个网络在网络隔离的情况下可HTTP访问通信,PMSC_server采用LINUX操作系统,两台服务器的网卡分别连接两个独立的物理网络,两台服务器之间由infiniband线缆连接。
外网PC访问外网的PMSC_server端口,PSMC系统通过私有协议将外网的请求转发到内网相对应的HTTP服务器,外网客户端和内网服务器之间的通信由PMSC系统分配相应的通道,这样就完成了在网络隔离环境下的HTTP通信需求。
所述的外网私有协议媒体服务中心服务器和内网私有协议媒体服务中心服务器均包括第一主机和第二主机。应用端通过传输系统进行文件传输,应用端可以是PC机、服务器等。
如图2所示,私有协议信息传输系统的信息传输方法,外网向内网传输信息与内网向外网传输信息的步骤相同,外网向内网传输信息包括如下步骤:
S1:外网的私有协议媒体服务中心服务器的监控进程启动工作进程;
S2:外网的私有协议媒体服务中心服务器为内网的HTTP服务器创建、绑定端口号,并进行监听;
S3:判断应用端线程需求是否>0,若大于0则继续进程,若小于0则重复判断应用端线程需求;
S4:启动应用端线程并等待拿锁;
S5:判断应用端是否连接,若未连接则重复判断客户是否连接,若已连接则继续进程;
S6:判断内网HTTP服务器是否反向代理设置外网的私有协议媒体服务中心服务器的服务端口号,若否则实现Socks4/4a/5相关协议处理,跳转步骤S8,若是则继续进程;
S7:使用自定义封装让外网的私有协议媒体服务中心服务器的第二主机与内网HTTP服务器建立连接通道;
S8:使用自定义封装让外网的私有协议媒体服务中心服务器的第二主机监听其本身与内网HTTP服务器相关事件;
S9:使外网的私有协议媒体服务中心服务器的第一主机监听其本身与客户端相关事件;
S10:使用自定义封装取消外网的私有协议媒体服务中心服务器的第二主机的监听操作;
S11:判断是否存在反向代理;
A:若是,则在HTTP请求头中插入待传输信息;
B:若否,则使用自定义封装完成客户端、外网的私有协议媒体服务中心服务器的第一主机、外网的私有协议媒体服务中心服务器的第二主机、内网HTTP服务器之间数据转发;
S12:重复步骤S8-S11,直到完成信息传输。
所述的客户端发送的命令包括CWD命令和STOR命令。
所述的反省代理指根据客户端的请求,从后端的服务器上获取资源,然后再将这些资源返回给客户端。
所述的与服务器相关事件和与客户端相关事件均包括socket编程中的可读、可写及错误事件。
该方法还能够实现应用端、外网的私有协议媒体服务中心服务器的第一主机、PCIE设备、外网的私有协议媒体服务中心服务器的第二主机、内网HTTP服务器之间数据转发。
PCIE设备包括InfiniBand/VPI Adapter Cards。
所述的自定义封装将基础网络传输协议封装成独立API调用,比如需要传输数据,可以调用封装IBSend,其在内部就是发送封装请求Message Type为Send消息,并且携带具体数据的数据包。
基础网络传输协议请求头结构如下:
Length:8个字节,代整个请求包的实际长度,包括Length字段、消息类型字段、序列号、请求内容,其值最小少为1040。
Message Type:4字节,代表请求的实际类型,其取值为大于0的正整数,目前仅用到0-19分别代表常用的请求消息类型,比如(Socket消息、Send消息、Recv消息等)。
Sequence:4字节,代表请求的序列号,用来唯一标识请求的顺序。
Request Content:至少1024字节,其包括非Send消息的所有控制内容,若其MessageType字段为Send消息,那么其还包括数据内容。
基础网络传输协议应答头结构如下:
Length:8个字节,代整个请求包的实际长度,包括Length字段、消息类型字段、序列号、请求内容,其值最小少为144。
Message Type:4字节,代表应答的实际类型,其取值为大于0的正整数,目前仅用到0-19分别代表常用的请求消息类型,比如(Socket消息、Send消息、Recv消息等)。
Sequence:4字节,代表应答的序列号,用来唯一标识应答的顺序,其与请求头中的Sequence对应。
Request Content:至少128字节,其包括非Recv消息的所有控制内容,若其Message Type字段为Recv消息,那么其还包括数据内容。
本发明在HTTP请求头中插入自定义字段首先要拦截请求包,记录Http请求头字段,标记结束,根据具体业务修改Host等字段或者添加额外字段,如:X-Forwarded-Server等,最后将修改的数据包转发出去。