发明内容
本发明实施例提供了一种单向网络传输方法及装置,用于解决单向网络中,数据传输速率较慢,难以保障实时性的问题。
在本发明实施例的第一方面,提供了一种单向网络中数据传输方法,包括:
步骤S1、获取双向网络中的一帧报文,并根据所述报文遵守的网络协议提取所述报文中关键字段信息,其中,所述关键字段信息至少包括所述报文的目的物理地址、目的IP地址和目的端口号;
步骤S2、匹配目标机的特征信息与所述关键字段信息,当所述目标机的特征信息与所述报文关键字段信息可以匹配,则识别所述报文采用的协议名称;
步骤S3、根据所述协议名称回应对应的应答报文;
步骤S4、当所述协议名称为TCP时,则识别所述TCP协议的状态标识,当所述TCP协议的状态标识为SYN符号,且TCP处于listen监听状态,则经过三次握手后进入connected状态,当所述TCP协议的状态标识为FIN符号,且TCP处于connected状态,则经过四次挥手后回到listen监听状态,如果是PUSH符号,且TCP处于connected状态,则进入步骤S5;
步骤S5、比较所述接收报文中接收的TCP序号和期望TCP序号,若序号相等,则回应ACK确认报文,若序号不相等,则不更新期望序号,且不回应ACK确认报文;
步骤S6、根据目标机特征信息生成TCP协议的物理地址首部、IP地址首部和UDP首部,并丢弃所述报文的物理地址首部、IP地址首部和UDP首部,保留TCP的数据部分;
步骤S7、计算所述报文的TCP数据部分的检验和,并组合新的UDP报文;
步骤S8、将所述新的UDP报文发送到单向网络端的目标机。
在本发明实施例的第二方面,提供了一种单向网络中数据传输装置,包括:
媒介访问控制器A,用于连接双向网络中的主机,采集报文传送到帧缓存单元和信息提取器。
帧缓存单元,用于保存一帧完整的报文;
信息提取器,用于根据所述报文遵守的网络协议提取所述报文中关键字段信息;
信息匹配器,用于匹配目标机的特征信息与所述关键字段信息;
状态存储单元,用于存储TCP连接的信息,所述TCP连接的信息至少包括发送端的物理地址、IP地址、目的端口号,以及发送给接收端的TCP序号、TCP确认序号、TCP符号,以及当前TCP连接的所处状态
协议处理单元,用于识别所述报文采用的协议名,根据所述协议名称回应对应的应答报文。
TCP处理单元,用于当所述协议名称为TCP时,则识别所述TCP协议的状态标识,当所述TCP协议的状态标识为SYN符号,且TCP处于listen监听状态,则经过三次握手后进入connected状态,当所述TCP协议的状态标识为FIN符号,且TCP处于connected状态,则经过四次挥手后回到listen监听状态,如果是PUSH符号,且TCP处于connected状态,则比较所述接收报文中接收的TCP序号和期望TCP序号,若序号相等,则回应ACK确认报文,若序号不相等,则不更新期望序号,且不回应ACK确认报文;
UDP组装单元,用于根据目标机特征信息生成TCP协议的物理地址首部、IP地址首部和UDP首部,并丢弃所述报文的物理地址首部、IP地址首部和UDP首部,保留TCP的数据部分;
还用于计算所述报文的TCP数据部分的检验和,并组合新的UDP报文;
媒介访问控制器B,用于将所述新的UDP报文发送到单向网络端的目标机。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,通过采集双向网络中的报文,获得其中报文遵循的协议并与目标机特征信息匹配,根据协议名产生应答,是TCP协议时,进行对应的状态切换,同时组装新的UDP协议,发送到目标机。本申请中将TCP与UDP的有点结合,克服传统数据摆渡方法存在的实时性差,传输速度慢的问题,在保障数据传输安全的前提下,提升传输的可靠性和实时性,加快传输速率,实现完全的网络单向。
具体实施方式
本发明实施例提供了一种单向网络中数据传输方法及系统,用于保障单向网络数据传输安全的同时提升数据传输速度。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例一:
请参阅图1,本发明实施例提供的单向网络中数据传输方法的流程示意图,包括:
S101、获取双向网络中的一帧报文,并根据所述报文遵守的网络协议提取所述报文中关键字段信息,其中,所述关键字段信息至少包括所述报文的目的物理地址、目的IP地址和目的端口号;
在双向网络中,数据报文间采用TCP/IP协议通信(支持超时重传机制),采集报文,可以解析得到报文中的目的物理地址、IP地址及目的端口号。
S102、匹配目标机的特征信息与所述关键字段信息,当所述目标机的特征信息与所述报文关键字段信息可以匹配,则识别所述报文采用的协议名称;
所述目标机为网络通信的数据接收端,所述特征信息包括所述目标机的物理地址信息、当前IP地址、以及端口号。
S103、根据所述协议名称回应对应的应答报文;
具体的,当所述协议名称为ARP协议,且所述报文是针对目标机的ARP请求,则回应ARP应答报文,当所述协议名称为ICMP协议,且所述报文是针对目标机的ICMP请求,则回应ICMP应答报文。
S104、当所述协议名称为TCP时,则识别所述TCP协议的状态标识,当所述TCP协议的状态标识为SYN符号,且TCP处于listen监听状态,则经过三次握手后进入connected状态,当所述TCP协议的状态标识为FIN符号,且TCP处于connected状态,则经过四次挥手后回到listen监听状态,如果是PUSH符号,且TCP处于connected状态,则进入步骤S5;
S105、比较所述接收报文中接收的TCP序号和期望TCP序号,若序号相等,则回应ACK确认报文,若序号不相等,则不更新期望序号,且不回应ACK确认报文;
通过比较接收的TCP序号和期望TCP序号,确认当前通信正常,并通过ACK确认报文,确定报文接收无误。
当确定成功接收到报文数据后,会组装新的UDP报文。
S106、根据目标机特征信息生成TCP协议的物理地址首部、IP地址首部和UDP首部,并丢弃所述报文的物理地址首部、IP地址首部和UDP首部,保留TCP的数据部分;
所述目标机的特征信息包含有所述物理地址信息、当前IP地址、以及端口号,根据源端口号和目的端口号可以生成UDP首部。
S107、计算所述报文的TCP数据部分的检验和,并组合新的UDP报文;
具体的,将计算得到的TCP数据部分校验和与UDP伪首部、UDP首部相加,按位取反后获得新的UDP校验和,用所述新的UDP校验和替换UDP首部校验和字段得到新的UDP首部。
可选的,将所述报文的物理首部、IP地址首部、新的UDP首部以及TCP的数据部分按顺序连接组合成新的UDP报文。
S108、将所述新的UDP报文发送到单向网络端的目标机。
在所述新的UDP报文发送后无需确认报文是否完整到达目标机,实现网络数据的单向传递,可以保证数据传输安全。
为便于理解,根据图1所描述的实施例,下面结合图2以一个实际应用场景对本发明实施例中的一种单向网络中数据传输方法进行详细描述:
在步骤S203中匹配报文的关键字段与目标机特征信息,具体的,分别匹配关键字段中的目的物理地址、IP地址及端口号,当其中存在无法匹配的信息,则进入S204丢弃当前帧,重新采集一帧报文。
在S212中通过比较TCP序号以确认报文已被成功接收,保障数据传输的可靠性,而后进入步骤S213,回应ACK确认,并利用接收报文,组件新的UDP报文。示例性的,结合图3详述步骤S215,将TCP校验和字段按位取反后,减去TCP伪首部与TCP首部之和。然后,将计算出的TCP数据部分校验和与UDP伪首部、UDP首部相加,按位取反后得出新的UDP校验和,替换到UDP首部校验和字段31得到新UDP首部.结合TCP数据部分32获得新的UDP首部信息,所述TCP数据部分32为接收的数据报文中保留的TCP数据帧缓存。
当接收的TCP序号与期望TCP序号不相等,则表明接收报文中存在数据丢失,进入S214不进行序列号的更新。
S216中发送到目标机的UDP报文是单向的,经过组装的UDP报文在确认数据可靠性后,通过单向网络传输可以确保数据的传输安全。
在本发明实施例中,在确认数据可靠传输后,组装新的UDP报文进行单向传送,既可以确保数据的安全可靠,而且克服传统数据摆渡策略存在速率较慢的问题,传统的数据摆渡方法必须采用前向纠错技术才能确保数据无差错抵达目的主机,需要在报文中填补冗余数据,进一步制约了有效带宽。本发明实时例提供的方法兼顾网络数据传输的可靠和速率,提高数据传输的实时性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
实施例二:
上面主要描述了一种单向网络中数据传输方法,下面将对一种单向网络中数据传输装置进行详细描述。
图4示出了本发明实施例中单向网络中数据传输装置一个实施例结构图,所述装置包括:
媒介访问控制器A410,用于连接双向网络中的主机,采集报文传送到帧缓存单元和信息提取器。
在图4中,媒介访问控制器A410和媒介访问控制器B480一般集成于FPGA中,用于同外部的以太网PHY通信。媒介访问控制器A410,用于连接本装置与双向网络中的主机,将接收的报文送到帧缓存单元420及信息提取器430,以及接收选择器发送的数据帧,发送到双向网络链路层。媒介访问控制器B480,用于将UDP数据报文直接发送至单向网络目标机。媒介访问控制器B与单向网络目标机之间只有一条网络链路,并在连接网络链路的输入端开路,防止高密端信息流入。
帧缓存单元420,用于保存一帧完整的报文;
帧缓存单元420,保存1帧完整报文,采用先进先出的策略。它在TCP/IP协议处理单元的控制下,全部或部分地丢弃单个报文中的数据。另外,帧缓存单元在TCP/IP协议处理单元的控制下输出剩余的报文数据,便于UDP组装单元组装报文。
信息提取器430,用于根据所述报文遵守的网络协议提取所述报文中关键字段信息;
信息提取器430是低密端的解析模块,用来解析TCP/IP协议族中的不同协议,并得到协议包含的字段信息,比如ARP请求、ICMP回显请求协议包含请求的目的IP地址,TCP报文的源物理地址、源IP地址以及源端口号等。TCP报文的解析结果交给信息匹配器440。
信息匹配器440,用于匹配目标机的特征信息与所述关键字段信息;
信息匹配器440实现了面向IP和TCP协议的匹配功能:首先检查了TCP报文源的合法性,包括使用的协议号、源IP地址、源端口等;其次,检查TCP报文目的信息的合法性,包含目的IP地址是否与单向设备IP地址匹配,目的端口号是否与单向设备已经打开的端口号一致。合法的TCP信息能够通过,交给协议处理单元460进行TCP服务端状态机管理;不合法的报文将被直接丢弃,不产生其他信息。
状态存储单元450,用于存储TCP连接的信息,所述TCP连接的信息至少包括发送端的物理地址、IP地址、目的端口号,以及发送给接收端的TCP序号、TCP确认序号、TCP符号,以及当前TCP连接的所处状态
状态存储单元450存储TCP连接的信息,包括客户端主机的物理地址、IP地址、目的端口号,发送给客户端的TCP序号、TCP确认序号、TCP符号,以及TCP连接当前的所处状态。
协议处理单元460,用于识别所述报文采用的协议名,根据所述协议名称回应对应的应答报文。
协议处理单元460,用于实现TCP服务端协议状态机管理,通常是采用软件的实现形式,比如借助现行C高级综合技术,TCP服务端的状态机管理可以采用FPGA逻辑方式实现,该实现过程一般参考标准的TCP协议状态流程图。由于状态存储单元存放低密端客户端主机信息:当TCP状态机进入已连接状态时,TCP/IP协议处理单元将客户端的信息记录到状态存储单元中,等待TCP组装单元调取使用这些预存信息。
可选的,所述协议处理单元460包括:
ARP应答单元462:当所述协议名称为ARP协议,且所述报文是针对目标机的ARP请求,则回应ARP应答报文;
ICMP应答单元463:当所述协议名称为ICMP协议,且所述报文是针对目标机的ICMP请求,则回应ICMP应答报文。
优选的,还包括选择器465:用于选择ARP、ICMP、TCP应答报文,其中ARP组装优先级最高,ICMP组装次之,TCP组装最末。
TCP处理单元461,用于当所述协议名称为TCP时,则识别所述TCP协议的状态标识,当所述TCP协议的状态标识为SYN符号,且TCP处于listen监听状态,则经过三次握手后进入connected状态,当所述TCP协议的状态标识为FIN符号,且TCP处于connected状态,则经过四次挥手后回到listen监听状态,如果是PUSH符号,且TCP处于connected状态,则比较所述接收报文中接收的TCP序号和期望TCP序号,若序号相等,则回应ACK确认报文,若序号不相等,则不更新期望序号,且不回应ACK确认报文;
针对TCP协议,当接收TCP数据帧将改变当前TCP连接所处状态,则更新TCP连接状态,保存到状态存储单元;
针对TCP协议,在当前TCP连接状态下,接收TCP数据帧要求回传一个TCP应答报文,则收集TCP应答报文的信息,发送至TCP组装单元;
针对TCP协议,当TCP连接状态为已连接时,接收TCP数据帧含有TCP数据负载,则针对目标机生成新的物理首部、IP首部、TCP首部,交给UDP组装单元,同时通告帧缓存单元仅保留TCP数据负载,丢弃其他信息;
针对TCP协议,当UDP组装单元组装UDP数据部分时,控制帧缓存单元420输出数据;
优选的,还包括:TCP窗口控制,用于设定TCP接收窗口的大小,间接控制单向UDP数据流的速率。基于流控制机制的TCP协议有效利用窗口参数减少了TCP报文重发次数,提供了稳定的网络带宽。
UDP组装单元470,用于根据目标机特征信息生成TCP协议的物理地址首部、IP地址首部和UDP首部,并丢弃所述报文的物理地址首部、IP地址首部和UDP首部,保留TCP的数据部分;
UDP组装单元重新封装剥离出的TCP数据,为其加入新的物理首部、IP首部、UDP首部,并正确地计算UDP首部校验和,采用边封装边发送的策略,最大限度地保证了TCP的有效带宽。其中,UDP校验和覆盖到了UDP数据,但UDP校验和在UDP数据前发送。如果采用先扫描TCP数据计算TCP数据的校验和,再将这部分校验和与UDP首部、伪首部一起计算UDP校验和的方式,那么在千兆网的环境下,UDP组装单元的性能无法超过500Mbps。本发明采用的方法是根据接收到的TCP报文直接反算TCP数据校验和:将TCP校验和字段按位取反后,减去TCP伪首部与TCP首部之和,然后将计算出的TCP数据部分校验和与UDP伪首部、UDP首部相加,按位取反后得出新的UDP校验和,替换到UDP首部校验和字段得到新UDP首部。也就是说,当TCP报文全部进入帧缓存单元后,也就得到了图3中的TCP数据校验和,进一步得出UDP校验和,这样就可以继续采用边封装边发送的策略。当执行到发送TCP数据的阶段时,按顺序从帧缓存单元中取出TCP数据。那么在千兆网的环境下,UDP组装单元的性能就可以超过500Mbps。
UDP组装单元组合TCP/IP协议处理单元生成的新物理首部、IP首部、UDP首部、帧缓存单元输出的数据,更新UDP校验和后形成新UDP数据报文,发送至媒介访问控制器B。由于媒介访问控制器B隔离了PHY的反向通道,因此杜绝数据从高密主机泄露至低密主机。
媒介访问控制器B480,用于将所述新的UDP报文发送到单向网络端的目标机。
上述单向网络中数据传输装置可以接收双向网络中的报文,根据采用的协议进行处理后,通过UDP组装单元组成新的UDP报文传送到单向网络的目标机,加快数据传输速率,在保障安全的同时提高实时性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实施例的模块、单元和/或方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。