一种数据重传方法和装置与流程

文档序号:16380696发布日期:2018-12-22 09:27阅读:105来源:国知局
一种数据重传方法和装置与流程

本申请涉及数据处理领域,特别是涉及一种数据重传方法和装置。

背景技术

随着网络技术的迅速发展,用户数据包协议(userdatagramprotocol,udp)的运用场合越来越多,它相比传输控制协议(transmissioncontrolprotocol,tcp)具有简单、传输快的优势,在越来越多场景下取代了tcp。

但是udp作为无连接不可靠的协议,传输中可能出现丢包现象,一些情况下需要发送端重新传输之前丢包的数据内容。

针对数据重传,现有的技术是反馈到上层应用层进行处理,由应用层来确定如何进行数据重传,额外的信令开销无疑影响了数据重传的效率。



技术实现要素:

为了解决上述技术问题,本申请提供了一种数据重传方法和装置,不需要应用层协助处理,直接由udp发送模块确定是否数据重传,提高了数据重传的效率

本申请实施例公开了如下技术方案:

第一方面,本申请实施例提供了一种数据重传方法,所述方法包括:

udp发送端模块获取接收端返回的第一报错信息,所述第一报错信息包括出错被丢弃的第一udp报文和所述第一udp报文的标识;

所述udp发送端模块在缓存区间中查找所述标识对应的第二udp报文;其中,所述缓存区间中保存的是所述udp发送端模块历史发送的udp报文;

所述udp发送端模块比对所述第一udp报文和第二udp报文是否一致;

若不一致,所述udp发送端模块向所述接收端重新传输所述第二udp报文。

可选的,所述udp发送端模块比对所述第一udp报文和第二udp报文是否一致,包括:

若一致,所述udp发送端模块确定所述报错信息不是udp本身产生的错误,并向应用层返回比对结果。

可选的,所述方法还包括:

所述udp发送端模块根据udp报文的发送时间实时更新所述缓存区间中保存的udp报文。

可选的,所述方法还包括:

所述udp发送端模块获取第三udp报文;

所述udp发送端模块判断所述第三udp报文的目的端口是否与所述udp发送端模块当前使用的端口匹配;

若不匹配,丢弃所述第三udp报文并返回第二报错信息,所述第二报错信息包括出错被丢弃的第三udp报文和所述第三udp报文的标识。

可选的,所述出错包括无法正确处理和\或目的端口不匹配。

第二方面,本申请实施例提供了一种数据重传装置,所述装置包括接收单元、查找单元、比对单元和重传单元:

所述接收单元,用于获取接收端返回的第一报错信息,所述第一报错信息包括出错被丢弃的第一udp报文和所述第一udp报文的标识;

所述查找单元,用于在缓存区间中查找所述标识对应的第二udp报文;其中,所述缓存区间中保存的是所述udp发送端模块历史发送的udp报文;

所述比对单元,用于比对所述第一udp报文和第二udp报文是否一致;

若不一致,触发所述重传单元,用于向所述接收端重新传输所述第二udp报文。

可选的,所述装置还包括返回单元:

若所述比对单元的比对结果为一致,触发所述返回单元,用于确定所述报错信息不是udp本身产生的错误,并向应用层返回比对结果。

可选的,所述装置还包括更新单元:

所述更新单元,用于根据udp报文的发送时间实时更新所述缓存区间中保存的udp报文。

可选的,所述装置还包括判断单元和丢弃单元:

所述接收单元还用于获取第三udp报文;

所述判断单元,用于判断所述第三udp报文的目的端口是否与所述udp发送端模块当前使用的端口匹配;

若不匹配,所述丢弃单元,用于丢弃所述第三udp报文并返回第二报错信息,所述第二报错信息包括出错被丢弃的第三udp报文和所述第三udp报文的标识。

可选的,所述出错包括无法正确处理和\或目的端口不匹配。

由上述技术方案可以看出,udp发送端模块通过缓存区间保存了自身历史发送的udp报文,故当从接收端获取第一报错信息时,可以通过缓存区间内保存的原始报文判断udp报文被接收端丢弃的原因。如果第一报错信息中的第一udp报文与缓存区间中标识对应的第二udp报文不一致,udp发送端模块可以认为属于udp本身导致的传输错误,故可以向接收端重新发送正确的报文即第二udp报文,以完成数据重传。可见,本申请的数据重传方案在数据重传过程中并不需要应用层协助处理,直接由udp发送模块确定是否数据重传,提高了数据重传的效率。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种udp模块的结构示意图;

图2为本申请实施例提供的一种数据重传方法的方法流程图;

图3为本申请实施例提供的一种数据重传装置的装置结构图。

具体实施方式

下面结合附图,对本申请的实施例进行描述。

由于udp作为无连接不可靠的协议,传输中可能出现丢包现象,一些情况下需要发送端重新传输之前丢包的数据内容。针对数据重传,现有的技术是反馈到上层应用层进行处理,由应用层来确定如何进行数据重传,额外的信令开销无疑影响了数据重传的效率。

故此,本申请实施例提供了一种数据重传方法,应用于udp模块中,在不同的应用场景中,同一个udp模块可以具有不同类型。例如在一些应用场景中,udp模块a向其他udp模块或其他模块发送udp报文,那么该udp模块a在该场景下可以视为udp发送模块;在一些应用场景中,若该udp模块a接收其他udp模块或其他模块发送的udp报文,则该udp模块a在该场景下可以视为udp接收模块。

本申请实施例中的udp模块的结构可以如图1所示,接下来将结合图1-2说明本申请的数据重传方案。

201:udp发送端模块获取接收端返回的第一报错信息,所述第一报错信息包括出错被丢弃的第一udp报文和所述第一udp报文的标识;

udp发送端模块可以通过如图1所示的发送模块获取该第一报错信息,发送模块接收来自应用层输入的输入信息,并将处理模块打包好的udp报文传输给ip层。

需要说明的是,所述出错可以包括接收端无法正确处理的情况和\或第一udp报文的目的端口与接收端可用端口不匹配的情况。本申请实施例中的接收端可以包括ip模块。

202:所述udp发送端模块在缓存区间中查找所述标识对应的第二udp报文;其中,所述缓存区间中保存的是所述udp发送端模块历史发送的udp报文;

本申请中第一报错消息在udp发送端模块中的如图1所示的处理模块处理,而不是将报错报文返回上层应用层处理,当处理模块接收到第一报错消息时,udp发送端模块可以通过处理模块在缓存区域中查找标识对应的第二udp报文。该缓存区域可以设置在如图1所示的重传模块中。

处理模块可以将第一udp报文与重传模块保存的原始信息(例如在缓存区域中查找标识对应的第二udp报文)进行比对,如果通过比对确认是udp协议本身产生的传输错误后,可以由重传模块重新发送正确报文(例如第二udp报文)给处理模块。

在一种可能的实现方式中,所述udp发送端模块可以根据udp报文的发送时间实时更新所述缓存区间中保存的udp报文。也就是说,udp发送端模块可以将近期发送的udp报文都保存在缓存区间中用于数据重传,保存的数量可以依据缓存空间的大小而定。

203:所述udp发送端模块比对所述第一udp报文和第二udp报文是否一致;若不一致,执行步骤204。

204:所述udp发送端模块向所述udp接收端模块重新传输所述第二udp报文。

由于缓存空间中保存的是发送前的原始报文,故可以通过比对结果确定问题所在,以及是否进行数据重传。

在一种可能的实现方式中,如果通过步骤203确定第一udp报文和第二udp报文不一致,udp发送端模块可以认为属于udp本身导致的传输错误,故可以向接收端重新发送正确的报文即第二udp报文,以完成数据重传。

在一种可能的实现方式中,若通过步骤203确定出第一udp报文和第二udp报文一致,则udp发送端模块确定所述报错信息不是由于udp本身产生的错误,重新传输第二udp报文并不能解决udp接收端模块的问题,故udp发送端模块向应用层返回比对结果,由应用层确定后续处理。

在一种可能的实现方式中,udp发送端模块获取第三udp报文,这种情况下,可以将该udp发送端模块视为接收端,即为udp接收端模块。

所述udp发送端模块判断所述第三udp报文的目的端口是否与所述udp发送端模块当前使用的端口匹配;

若不匹配,丢弃所述第三udp报文并返回第二报错信息,所述第二报错信息包括出错被丢弃的第三udp报文和所述第三udp报文的标识。

也就是说,当本申请实施例中的udp发送端模块作为udp接收端模块时,可以通过判断端口的方式确定获取的udp报文是否需要丢弃。并在丢弃时向该udp报文的发送端返回第二报错信息,以便发送端以此确定是否进行数据重传。

udp发送端模块可以通过处理模块将来自发送模块的输入信息进行打包,同时对来自接收模块的数据进行识别端口号,判断udp报文的目的端口是否与当前使用的某个端口匹配。

通过输出模块接收ip模块传输来的udp报文,输出模块将udp报文发往处理模块,udp报文经过处理后,正确的udp报文可以通过输出模块发送到对应端口号应用层或其他模块。

可见,udp发送端模块通过缓存区间保存了自身历史发送的udp报文,故当从接收端获取第一报错信息时,可以通过缓存区间内保存的原始报文判断udp报文被接收端丢弃的原因。如果第一报错信息中的第一udp报文与缓存区间中标识对应的第二udp报文不一致,udp发送端模块可以认为属于udp本身导致的传输错误,故可以向接收端重新发送正确的报文即第二udp报文,以完成数据重传。可见,本申请的数据重传方案在数据重传过程中并不需要应用层协助处理,直接由udp发送模块确定是否数据重传,提高了数据重传的效率。

图3为本申请实施例提供了一种数据重传装置的装置结构图,所述装置包括接收单元301、查找单元302、比对单元303和重传单元304:

所述接收单元,用于获取接收端返回的第一报错信息,所述第一报错信息包括出错被丢弃的第一udp报文和所述第一udp报文的标识;

所述查找单元,用于在缓存区间中查找所述标识对应的第二udp报文;其中,所述缓存区间中保存的是所述udp发送端模块历史发送的udp报文;

所述比对单元,用于比对所述第一udp报文和第二udp报文是否一致;

若不一致,触发所述重传单元,用于向所述接收端重新传输所述第二udp报文。

可选的,所述装置还包括返回单元:

若所述比对单元的比对结果为一致,触发所述返回单元,用于确定所述报错信息不是udp本身产生的错误,并向应用层返回比对结果。

可选的,所述装置还包括更新单元:

所述更新单元,用于根据udp报文的发送时间实时更新所述缓存区间中保存的udp报文。

可选的,所述装置还包括判断单元和丢弃单元:

所述接收单元还用于获取第三udp报文;

所述判断单元,用于判断所述第三udp报文的目的端口是否与所述udp发送端模块当前使用的端口匹配;

若不匹配,所述丢弃单元,用于丢弃所述第三udp报文并返回第二报错信息,所述第二报错信息包括出错被丢弃的第三udp报文和所述第三udp报文的标识。

可选的,所述出错包括无法正确处理和\或目的端口不匹配。

可见,udp发送端模块通过缓存区间保存了自身历史发送的udp报文,故当从接收端获取第一报错信息时,可以通过缓存区间内保存的原始报文判断udp报文被接收端丢弃的原因。如果第一报错信息中的第一udp报文与缓存区间中标识对应的第二udp报文不一致,udp发送端模块可以认为属于udp本身导致的传输错误,故可以向接收端重新发送正确的报文即第二udp报文,以完成数据重传。可见,本申请的数据重传方案在数据重传过程中并不需要应用层协助处理,直接由udp发送模块确定是否数据重传,提高了数据重传的效率。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质可以是下述介质中的至少一种:只读存储器(英文:read-onlymemory,缩写:rom)、ram、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述,仅为本申请的一种具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1