一种基于udp的可配策略数据传输方法

文档序号:8301556阅读:422来源:国知局
一种基于udp的可配策略数据传输方法
【技术领域】
[0001]本发明涉及一种网络数据传输技术,属于网络传输技术领域。
【背景技术】
[0002]目前,TCP / IP协议体系是普遍采用的网络通信标准。其中UDP是面向无连接的协议,效率虽然高,但不可靠;TCP是面向连接的协议,可靠性高,但效率低。由于TCP和UDP传输层协议本身存在实时性和可靠性之间的矛盾,再加上实际网络环境的复杂性,无法直接使用现有的UDP或者TCP协议,就必须根据业务传输的需要重新设计符合业务传输特点的应用层传输协议。TCP协议在网络编程中得到了广泛的应用,可实现数据的无差错传输,但需以复杂的传输控制和较大的网络开销为代价。对于一些带宽有限的信道,例如无线信道,或者传输数据量较大的网络系统中,该协议会导致网络效率低下。UDP协议是一种无连接的协议,它有着数据传输的时延低、资源开销小、支持组播通信方式、支持对等的通信方式等特点,但由于协议本身的不可靠,导致传输的信息可能丢失。为了保证数据信息的实时可靠传输,需要在应用层进行适当的应用层传输格式设计,实现对报文的重发机制,保证基于UDP的协议能实现可靠传输。目前很难找到一种通用的基于UDP的可靠传输方法,不能够在各种项目中直接使用;在针对特定的网络应用环境下往往需要针对环境的特性进行传输方法的编码,不能够通过简单调整传输策略及可满足新的传输信道需求,且不能够实现只通过单端策略调整来达到收发双方的策略匹配,不利于软件的快速开发、快速调整和维护。

【发明内容】

[0003]本发明提出一种基于UDP的可配策略数据传输方法,本方法中将传输需要的部分策略抽象出来,形成策略配置文件,用户根据实际使用的网络传输信道需求,有针对性地修改满足该信道的传输策略。
[0004]本方法在数据传输之前,自动从策略配置文件中读取用户配置的策略信息,包括报文传输模式、报文压缩策略、报文重传次数、报文超时时间、单包发送长度、发送窗口个数、主动报文延时等策略。
[0005]若传输数据量大且具有可压缩性,用户可将压缩策略配置为压缩传输,则在数据传输前先将数据按照指定的压缩算法进行数据压缩,压缩完成后再根据实际配置进行分包发送;接收端在收到所有数据包后对数据进行重组,重组完成后根据指定压缩算法进行解压缩处理。
[0006]若应用方式为点对点通信且传输信道稳定则采用单包发送模式,对每一包数据进行应答,保证数据的可靠传输;若应用方式为点对多点的组播/广播通信模式,则采取单任务发送模式,发送端将本次要发送的数据全部发送,接收端再收到所有数据\或超时等情况下进行单任务应答,由此减少往返确认交互的报文。在进行单任务模式传输时,若接收端未正确完成接收,则向发送端发送丢失报文的序号集,请求重传。接收端汇总所有丢失包集,对丢失包进行重传,如此反复,直到到达最大重传次数则停止。当达到最大重传次数还没有完成接收时,则判定本次传输任务失败。
[0007]单包数据长度与信道特性密切相关,根据信道的通信质量和特性,设置一个信道最优单包长度,由此来提升数据传输效率。
[0008]利用多发送窗口技术,在发送数据时,采用多个窗口进行发送,节省了传输报文及确认报文在网络信道中的传输时间,在单包模式下能够成线性地提高发送效率。
[0009]在无线信道或者条件苛刻的信道下传输数据时,信道的时延非常大,且处理数据的能力有限,如果不对发送数据进行有限控制,则可能存在大量数据报文丢失,效率低下的问题。在此种信道下,适当地进行主动延时发送,反而能够大大提高数据传输效率。
[0010]本方法中将单包超时时间间隔策略存放在报文头中,当用户根据信道实际情况修改超时时间时,只需要修改发送端的配置,而不需要更改接收端的策略配置,接收端根据报文头中的超时间隔时间进行自动调整,使得策略的修改变得更加灵活简单。
[0011]本发明的有益技术效果是:当用户的网络传输信道环境发生变化时,用户不需要重新修改软件代码,只需要修改策略配置文件中的对应策略就可以满足实际使用需求,传输策略可灵活配置;数据传输可适应带宽、窄带信道,稳定、高时延信道;数据传输策略只需要修改发送端,数据接收端动态适应发送端的策略。
【附图说明】
[0012]图1、本发明在网络传输模型中的位置。
[0013]图2、本发明传输协议结构体。
[0014]图3、标识头及报文类型定义。
[0015]图4、单任务数据交互流程示意图。
[0016]图5、单窗口发送示意图。
[0017]图6、多窗口发送示意图。
【具体实施方式】
[0018]根据网络层次的划分,网络传输模型分为应用层、传输层、网际层和网络接口层4层,本发明主要是在UDP传输层之上添加一个自定义的可靠传输控制层(参见图1)。用来实现数据传输的灵活可配以及可靠传输,最终提供一个简单数据收/发接口供应用层使用,形成一个通用数据传输方法。
[0019]本方法提出一种基于UDP的数据传输方法,在UDP数据报文基础之上叠加一个传输控制头(参见图2)。为简化应用层的使用,本协议实现后,用户发送数据时只需要将传输的数据直接交付给本协议模块,指定其发送目的地址和端口即可,而不需要再做任何的数据传输控制。
[0020]本协议中的标识头和报文类型字段的取值(参见图3):标识头用来识别是否本协议报文的第一个判别键,目前暂时使用0xFC、0xFD这两个取值,OxFD表示当前的报文是经过压缩后的报文,OxFC表示当前的报文是非压缩的报文。如果接收端接收到的报文标识头不是0xFC、0xFD这两个取值,则认为不是当前协议内的正确报文,予以丢弃。
[0021]关于报文类型的设计,本协议中对于传输数据有两种模式可供选择,一种是单包发送模式,一种是单任务发送模式。对于单包发送模式,接收端需要对每一个报文都进行确认应答才认为是正确接收。对于单任务模式则不必要对每一个报文都进行应答,而是发送端按照一定的发送速率进行任务内的所有分包发送,接收端在收到数据后进行统一应答。当接收端正确接收到所有的数据报文时,发送0x21 (单任务成功确认报文)。当接收端收到最后一个序号的报文或者已经超时无后续报文的情况下,通过查阅接收任务列表中的数据情况,向发送端发起0x22 (单任务重传请求报文),报文有效数据载荷中填写的是需要重传的报文序号列表。发送端收到重传请求后,将需要重传的包进行重传(参见图4)。
[0022]协议中的报文号是一个由两个字节组成的整形数字,从O— 65535循环使用,该字段针对应用层发送过程进行计数,如果应用层要发送一个大数据,数据交互协议部分需要进行分包发送,但是所有分包中的报文号是同一个序号,表示这些包同属于一个完整的报文,这样便于在同一个端口上同时发送处理多种数据时进行报文区分,接收端在接收到数据时根据发送端IP地址、发送端端口号、报文号共同决定本数据属于那一个报文,保证反向重组报文时的正确性。
[0023]当前报文序号和当前报文总包数都是一个4个字节的整形数字(若单包长度为1024字节的情况下,理论上本方法可一次实现4T数据的传输),当一个大数据报文进行分包发送时,当前报文总包数用来记录本次分包后的包个数,报文序号则是表示当前的报文是分包后的第几个子分包报文,接收端收到的分包报文总个数等于当前报文总包数时,则表示已经全部收到了所有报文,而当前报文序号的作用在于判别某些包是否是重复包,以及在最终反组包时对报文进行正确排序重组,纠正因网络问题导致的数据乱序情况的出现。
[0024]超时时间由一个字节表示,其取值范围为0—255,单位为秒。校验码完成对当前包中所有数据进行循环校验,判断数据包在网络传输过程中是否损坏。报文长度由两个字节组成,表示当前单包报文的数据总长度,因此单个数据包的长度不超过65535个字节。
[0025]在软件的使用过程中,网络环境会有不同的变化需求,在某
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1