本发明涉及一种跨网段的数据报头压缩实现方法,属于无线网络通信领域。利用跨网段并且数据报头压缩的方式进行信息的传输,可以满足实际应用中不同局域网内视频数据的通信要求,同时减少数据传输量,提高无线信道利用率,提高视频数据通信的抗干扰能力。
背景技术:
跨网段通信是指在不同的局域网的主机需要进行数据传输而提出的一种通信方式,这种通信方式能方便的解决不同网段的主机数据互通的功能,由于互联网的发展,用户可以将数据发送到公网上,再利用公网传输到另一个局域网上,从而实现跨网段通信,这种通信方式已经得到普遍的应用。而在某些领域内,对数据的安全性有很高的要求,不同局域网之间不能通过上述方法进行数据传输。
为了满足局域网间跨网段的数据高效通信要求,本发明提供了一个能实现跨局域网数据压缩处理的通信系统,系统能进行冗长的数据帧头压缩,实现局域网内任意定向数据的发送或接收;
目前很多这种封闭的局域网之间通信都是基于nat(networkaddresstranslation)技术,网络地址转换的方式,即在不同的网段之间加入路由器,每一个跨网段的数据都通过路由器进行地址转换,将地址转换到同一个局域网内再进行数据通信,路由器在处理每一个数据帧时都会为其加入一个内部ip(internetprotocol)地址和外部ip地址,内部ip地址设置为同一局域网内的地址,设置内部ip地址是为了在同一个局域网内查找到外部ip数据包,这些方式在发送和接收时都需要加入一个静态路由表,并在需要查看数据源端时还需要经过繁琐的转换处理;一个网络数据包中包含了许多的协议头,而协议头之间存在很多的冗余数据,例如一个视频数据流,其rtp(real-timetransportprotocol)数据包包含了以太帧头、ip协议头、udp(userdatagramprotocol)协议头、rtp协议头,诸如udp中的网络源地址和目的地址和以太帧头中的源地址和目的地址相同,并且数据包中包含了一个静态部分,在数据流的一系列包中都是不变,在一个rtp数据包中这样冗余的数据有53字节,而传输这样的数据造成了带宽资源 的浪费,因此需要对数据进行压缩处理之后再发送。
技术实现要素:
本发明的目的在于提供一种跨网段的数据报头压缩实现方法,能实现特定的硬件系统上跨网段通信,实现网络数据协议头的压缩功能。具有实现方式简单,通信效率高、抗干扰能力强等特点。
本发明是采用以下技术实现的:
1.一种跨网段的数据报头压缩实现方法如下:
1.1在两个arm(acornriscmachine)设备上移植嵌入式网络协议栈,并利用它以中断处理的方式封装网络接口驱动程序,在各个设备上搭建网关,并开启接收,发送数据线程,将网关的物理地址相互通报对方;
1.2各个网关将arp(addressresolutionprotocol)数据包与ip数据包分类处理,共分为3个处理进程,将arp数据包交给网络连接进程,将ip数据包交给数据处理进程,将各个数据包的网络地址与物理地址提交给映射表管理进程;
1.3网关1将接收到的以太网数据复制一份到缓存区中,并剥去以太帧头,将负载数据进行数据压缩,压缩端采用有限状态机设置3种不同的状态,特定的条件下对数据作对应的处理并进行状态转移。最后将处理完的数据发送到网关2;
1.4网关2等待接收网关1的压缩数据,检测有数据时,提取以太网数据,交给解压缩线程,等待数据解压完成,网关2向网关1回复ack(acknowledgement)消息,将解压缩数据交由显示端显示。
2.根据权利要求1所述一种跨网段的数据报头压缩实现方法,其特征在于:所述的1.1、1.2中arm设备搭建网关、建立网络连接、分类处理数据包步骤如下:
2.1读取网口接收缓冲区内的以太网数据,判断数据包类型,若值为0x0806则是是arp数据包,跳转至2.2,若值为0x0800则是ip数据包,跳转至2.3;
2.2判断数据包中请求的ip地址,丢弃非本机的数据包获取源ip地址和物理地址,查找网络协议栈中是否存在arp缓存表,若表中不存在该表项则定义一个包含远端ip地址、远端网关ip地址表项状态、时间戳的表项;
2.3解析数据包类型,若是ip数据包则网关根据本地arp映射表物理地址与ip地址的关系改写以太帧的目的物理地址并调用网络协议栈中的发送函数(以下内容中该步骤简称发送线程)将数据包发往对应的目的地址,最后更新arp映射表;
3.根据权利要求1所述一种跨网段的数据报头压缩实现方法,所述的1.3对数据压缩时状态机实现步骤如下:
3.1首先提取数据包的ip地址,通过ip地址查找上下文,上下文中存储了数据流对应的ip地址,将上下文的压缩器状态置为ir(initializationandrefresh)状态跳转至3.2;
3.2判断上下文的压缩器状态信息,若该值为ir则构建一个ir数据包,跳转至3.3,若该值为fo(firstorder)则构建一个ir-dyn数据包,跳转至3.4,若该值为so(secondorder)则构建一个u0数据包,跳转至3.5;
3.3构建ir数据包,将收到的数据中协议头静态部分的内容存储到上下文结构体中对应的位置,将数据包交给发送线程;
3.4构建ir-dyn(initializationandrefresh-dynamic)数据包,将数据包对应的tos、ttl、ip_id字段,添加到上下文结构体中对应的位置,将数据包交给发送线程;
3.5构建u0数据包,将数据包交给发送线程;
4.根据权利要求1所述一种跨网段的数据报头压缩实现方法,所述的1.4对数据解压缩状态机实现步骤如下:
4.1收到压缩端的数据包,查找对应的上下文,判断数据包的类型;
4.2解压缩器有nc(nonecontext)、sc(staticcontext)、fc(fullcontext)三种状态,查看上下文中解压缩器的状态信息,根据上下文信息选择发送正反馈信息给压缩端;
4.3根据上下文信息还原数据包的协议头,并将发送的数据附加到协议头后面传输到网络协议上层。
本发明是一种跨网段的数据报头压缩实现方法,其优点如下:
1.该方法在嵌入式网络协议栈上实现,嵌入式网络协议栈是开源代码,并且对ip报文、以太帧头、udp报文等都定义了规范的数据结构,对网络协议栈的分层比较清晰,各个网络数据层之间的关联性比较小,对于网络接口的物理底层而言,不同的网口厂商都会提供不同的驱动函数,协议栈可以根据这些api封装出自定义的接收、发送、控制函数。
2.采取arp地址映射和更改物理地址的方式实现跨网段通信,能避免基于nat技术添加内部ip地址的繁琐操作,能节约在处理数据帧时处理器的内存资源;
3.压缩算法主要是用于减少数据报头中的冗余数据,只在无线网络中传输压缩的数据包,有效的节省了传输信道的带宽资源。
附图说明
图1:系统框图
图2(a):压缩模块流程图
图2(b):压缩模块状态转移子流程图
图3:解压缩模块流程图
图4:跨网段通信网络拓扑图
具体实施方案
以下结合说明书附图对本发明的实施方案做进一步说明:
本发明的系统结构如图1所示:
图中以太网用于提供数据源;网关1用于接收数据源端的数据帧,负责对数据帧头进行压缩处理,对数据进行重定向处理,且与数据源为同一个网段;网关2:用于接收网关1的数据帧,负责将接收到数据进行解压缩处理,反馈ack信息,网关1和网关2不在同一个网段;由图1可以看出,系统采用分模块的方式进行设计,模块与模块之间形成一个完整的双向数据通路,系统中共分为6个模块,数据接收模块用于接收网络数据吧或者压缩数据包;数据报头压缩模块用于压缩数据包的报头;数据重定向模块用于处理以太帧头实现跨网段;数据整合和发送模块用于发送压缩完的数据;数据解压缩模块用于处理压缩数据包;反馈模块用于生成和发送反馈数据包。图1中的网关1负责发送端的跨网段功能以及数据压缩,网关2负责接收端的数据解压缩和显示功能。整个系统中数据有两种形态,一种是原始的网络数据,一种是压缩数据,网关1和网关2之间传输的是压缩数据。
图2(a)为压缩模块流程图:程序在建立上下文时会初始化当中的所有值,压缩端出现状态转移、发送压缩包或者接收反馈信号时会更新对应的字段值,当数据流长时间未出现时需要主动清除对应的上下文,释放占用的内存空间,其次要根据上下文判 断压缩器现在所处的状态,通过状态决定需要发送的数据包类型,最终调用对应的数据处理模块完成数据包构造、发送。在图2(b)中具体的状态转移步骤如下:
1.为新的数据流建立一个空的上下文信息,压缩器的初始化状态为ir状态,在构造初始化数据包时加入了动态信息部分,ir状态下需要等待第一个数据包的反馈信息,这里设置了对应的定时器,如果超时还未收到反馈数据包时需要重新发送ir数据包,直到收到了一定量的正反馈数据包之后向高级状态迁移;
2.由于ir数据包当中包含了完整的动态信息,所以ir状态可以直接向so状态迁移,当压缩器处于so状态时,之后的数据包仅需处理协议头中动态部分,将动态域经过编码之后发送到解压器端,压缩器端ir状态不会迁移到fo状态;
3.当so状态下收到了负反馈信息时,so状态会首先迁移到fo状态,在fo状态下,只发送协议头的动态域信息,当在fo状态下发送了ir-dyn数据包后还未能同步上下文信息,则fo状态会往ir状态迁移,从ir状态中获取完整的静态动态信息。
图3为解压缩模块流程图,解压端的3个状态下的数据解压缩都是以上下文中的参考值为依据,在接收到了一定数量的压缩包后需要返回反馈数据包。反馈包的生成方式和机制是解压端的关键点,该算法采用压缩端和解压缩端协商处理数据包的方式完成数据处理,而每端都以不同状态加以区分,压缩端的状态转移是通过解压缩端的反馈数据包断定,解压缩端的状态是根据压缩端的数据包类型进行断定,因此若要两者之间能正确处理数据需要及时同步两端的上下文,反馈数据包机制决定了算法的可靠性、有效性。
解压缩端首先需要建立起一个上下文,在nc状态下通过发来的数据包建立上下文信息,在nc状态下首先会收到压缩端发来的初始化包,初始化包的结构中除了报头的cid值和基本配置信息外负载是一个完整的rtp数据包,此时需要从这个完整的数据包当中提取出数据流中的静态部分信息和动态部分信息,并维持在nc状态下等待ir包和ir-dyn包,确认得到的数据的正确性,确认完毕之后向sc状态迁移。sc状态下负责将上下文的动态信息补充完整,由于在压缩端发来的第一个数据包已经包含了完整的信息,该状态下确认了上下文信息完整会直接迁移到更高级的状态。
利用arp请求地址时会遇到不同网段下丢弃数据包的问题,为了实现跨网段的通信,在图4网络拓扑中加入了两个设备(主机b和主机c),这两个设备分属不同的 网段,当主机a需要和主机d进行通信时,会发送arp请求包,此时网关1和主机a在同一个网段,并且会解析这个arp请求包,当网关1发现数据包并非是自己的,但是数据包是请求其他网段的主机地址时,网关1会主动的告诉主机a,让主机a把需要发送的数据发送到网关1上,网关1会拦截这段arp请求包,并构造一个arp回复包,回复包中将自己的物理地址伪装为d主机物理地址,当主机a收到了这样的回复包时,会将该地址映射到主机d的arp表项中,以后主机a与主机d的通信都必须通过网关1。主机a发送数据给主机d时,数据包会直接发送到网关1上,网关1接收并解析这样的数据包时发现,数据包的物理地址是本机而目的ip地址并非是主机,网关1首先会判断该ip地址,如果与本机的ip网段相同,则会查找arp映射表,进行对应的arp处理;如果与本机的ip网段不相同,则会更改以太帧的目的地址、源地址,将数据包发送到网关2上。网关2接收到一段数据包后,解析数据内容,若数据的目的ip地址与网关2的ip地址在相同网段,则查看arp映射表,进行对应的arp处理,如果与网关2的ip网段不相同,则会更改以太帧的目的地址、源地址,将数据包发送到网关1上。
本发明的目的在于能实现跨网段的通信,在通信过程中进行协议头压缩达到减少传输数据的目的,提高通信信道的传输效率。该跨网段通信方法能适用于以osi(opensysteminterconnection)七层模型为基础的网络协议环境。