一种数据处理方法及相关设备转让专利

申请号 : CN202210418803.3

文献号 : CN114513418B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 包增辉

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请实施例提供了一种数据处理方法及相关设备,该数据处理方法包括:获取包括M个原始数据包的原始数据包组,M个原始数据包是按照目标协议对待传输的目标业务数据进行封装得到的,通过目标协议封装得到的每个原始数据包均不支持冗余恢复处理;获取原始数据包组中每个原始数据包各自对应的第一冗余恢复参数,第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数;将原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,得到目标数据包组;将目标数据包组发送至数据接收设备。采用本申请实施例,可以降低丢包情况下的数据传输时延,提升数据传输效率。

权利要求 :

1.一种数据处理方法,其特征在于,所述方法包括:

获取原始数据包组,所述原始数据包组包括M个原始数据包,所述M个原始数据包是按照目标协议对待传输的目标业务数据进行封装得到的,通过所述目标协议封装得到的每个原始数据包均不支持冗余恢复处理,M为正整数;

获取所述原始数据包组中的每个原始数据包各自对应的第一冗余恢复参数,所述第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数;

将所述原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,得到目标数据包组,所述目标数据包组包括M个目标数据包;

将所述目标数据包组发送至数据接收设备,以使所述数据接收设备在检测到所述目标数据包组中存在数据包丢失时,通过冗余恢复处理得到丢失的数据包。

2.如权利要求1所述的方法,其特征在于,所述将所述原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,得到目标数据包组,包括:针对所述原始数据包组中的第m个原始数据包,生成所述第m个原始数据包对应的第m个数据包体,所述第m个数据包体包括头部和主体,m为小于或等于M的正整数;

将所述第m个原始数据包对应的第一冗余恢复参数添加至所述第m个数据包体的头部,将所述第m个原始数据包添加至所述第m个数据包体的主体,得到所述第m个原始数据包对应的第m个目标数据包。

3.如权利要求2所述的方法,其特征在于,所述第m个原始数据包对应的第一冗余恢复参数包括格式标识参数,所述第m个数据包体的头部包括格式标识字段;所述将所述第m个原始数据包对应的第一冗余恢复参数添加至所述第m个数据包体的头部,包括:将所述格式标识参数添加至所述格式标识字段中,所述格式标识参数用于标识所述第m个目标数据包支持冗余恢复处理。

4.如权利要求3所述的方法,其特征在于,所述第m个原始数据包对应的第一冗余恢复参数还包括序号参数或类型参数中的任意一种或两种;所述第m个数据包体的头部还包括序号字段或类型字段中的任意一种或两种;所述将所述第m个原始数据包对应的第一冗余恢复参数添加至所述第m个数据包体的头部,还包括:在所述第m个原始数据包对应的第一冗余处理参数还包括所述序号参数、且所述第m个数据包体的头部还包括所述序号字段时,将所述序号参数添加至所述序号字段中,所述序号参数用于标识所述第m个目标数据包属于所述目标数据包组;

在所述第m个原始数据包对应的第一冗余处理参数还包括所述类型参数、且所述第m个数据包体的头部还包括所述类型字段时,将所述类型参数添加至所述类型字段中,所述类型参数用于标识所述第m个目标数据包的包类型为数据包类型。

5.如权利要求1所述的方法,其特征在于,所述方法还包括:

生成所述目标数据包组的N个目标冗余包,N为小于或等于M的正整数;

将所述N个目标冗余包发送至所述数据接收设备,以使所述数据接收设备根据所述N个目标冗余包进行冗余恢复处理,得到丢失的数据包。

6.如权利要求5所述的方法,其特征在于,所述生成所述目标数据包组的N个目标冗余包,包括:根据所述M个原始数据包生成N个原始冗余包;

获取所述N个原始冗余包中的每个原始冗余包各自对应的第二冗余恢复参数;

将所述N个原始冗余包中的每个原始冗余包与对应的第二冗余恢复参数进行拼接处理,得到N个目标冗余包,所述第二冗余恢复参数是指支持冗余恢复处理的冗余包需包含的参数。

7.如权利要求6所述的方法,其特征在于,所述将所述N个原始冗余包中的每个原始冗余包与对应的第二冗余恢复参数进行拼接处理,得到N个目标冗余包,包括:针对所述N个原始冗余包中的第n个原始冗余包,生成所述第n个原始冗余包对应的第n个冗余包体,所述第n个冗余包体包括头部和主体,n为小于或等于N的正整数;

将所述第n个原始冗余包对应的第二冗余恢复参数添加至所述第n个冗余包体的头部,将所述第n个原始冗余包添加至所述第n个冗余包体的主体,得到所述第n个原始冗余包对应的第n个目标冗余包。

8.如权利要求7所述的方法,其特征在于,所述第n个原始冗余包对应的第二冗余恢复参数包括格式标识参数,所述第n个冗余包体的头部包括格式标识字段;所述将所述第n个原始冗余包对应的第二冗余恢复参数添加至所述第n个冗余包体的头部,包括:将所述格式标识参数添加至所述格式标识字段中,所述格式标识参数用于标识所述第n个目标冗余包支持冗余恢复处理。

9.如权利要求8所述的方法,其特征在于,所述第n个原始冗余包对应的第二冗余恢复参数还包括以下至少一种:序号参数、类型参数、数据包数量参数、以及冗余包数量参数;所述第n个冗余包体的头部还包括以下至少一个字段:序号字段、类型字段、数据包数量字段、以及冗余包数量字段;所述将所述第n个原始冗余包对应的第二冗余恢复参数添加至所述第n个冗余包体的头部,还包括:在所述第n个原始冗余包对应的第二冗余恢复参数还包括所述序号参数、且所述第n个冗余包体的头部还包括所述序号字段时,将所述序号参数添加至所述序号字段中,所述序号参数用于标识所述第n个目标冗余包为所述目标数据包组的冗余包;

在所述第n个原始冗余包对应的第二冗余恢复参数还包括所述类型参数、且所述第n个冗余包体的头部还包括所述类型字段时,将所述类型参数添加至所述类型字段中,所述类型参数用于标识所述第n个目标冗余包的包类型为冗余包类型;

在所述第n个原始冗余包对应的第二冗余恢复参数还包括所述数据包数量参数、且所述第n个冗余包体的头部还包括所述数据包数量字段时,将所述数据包数量参数添加至所述数据包数量字段中,所述数据包数量参数用于标识所述目标数据包组中包含的目标数据包的数量M;

在所述第n个原始冗余包对应的第二冗余恢复参数还包括所述冗余包数量参数、且所述第n个冗余包体的头部还包括所述冗余包数量字段时,将所述冗余包数量参数添加至所述冗余包数量字段中,所述冗余包数量参数用于标识所述目标数据包组的目标冗余包的数量N。

10.如权利要求5所述的方法,其特征在于,所述原始数据包组被设置需包括X个原始数据包,X为正整数;所述方法还包括:比较M与X之间的大小关系;

根据M与X之间的大小关系,确定所述N个目标冗余包的生成时间;

所述生成所述目标数据包组的N个目标冗余包,包括:

按照确定的生成时间,生成所述目标数据包组的N个目标冗余包。

11.如权利要求10所述的方法,其特征在于,所述根据M与X之间的大小关系,确定所述N个目标冗余包的生成时间,包括:若M等于X,则将封装得到所述M个原始数据包的时间确定为所述N个目标冗余包的生成时间;

若M小于X,则将确定所述M个目标数据包中的最后一个目标数据包发送超时的时间,确定为所述N个目标冗余包的生成时间;其中,所述最后一个目标数据包发送超时是指:所述最后一个目标数据包发送目标时段后,未收到所述数据接收设备发送的确认帧。

12.如权利要求1所述的方法,其特征在于,所述方法还包括:

与所述数据接收设备进行密钥协商,得到密钥,所述密钥用于在封装所述M个原始数据包的过程中进行加密;

在与所述数据接收设备的密钥协商过程中,对所述数据接收设备的冗余恢复能力进行检测;

若确定所述数据接收设备具备所述冗余恢复能力,则触发执行所述获取原始数据包组的步骤。

13.一种数据处理方法,其特征在于,所述方法包括:

在接收来自数据发送设备的目标数据包组的过程中,若检测到所述目标数据包组中存在数据包丢失,则通过冗余恢复处理得到丢失的数据包;

其中,所述数据发送设备发送的目标数据包组包括M个目标数据包,所述目标数据包组是所述数据发送设备将原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理得到的;所述原始数据包组包括M个原始数据包,所述原始数据包组是所述数据发送设备按照目标协议对待传输的目标业务数据进行封装得到的,通过所述目标协议封装得到的每个原始数据包均不支持冗余恢复处理,所述第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数,M为正整数。

14.如权利要求13所述的方法,其特征在于,所述方法还包括:

接收来自所述数据发送设备的目标包,并读取所述目标包的头部和主体;

若根据所述目标包的头部确定所述目标包为所述目标数据包组中的目标数据包,则确定所述目标包的主体为所述原始数据包组中对应的原始数据包,将所述目标包中的原始数据包拷贝至队列中;

根据所述队列中包含的所述原始数据包组中的原始数据包的数量,对所述目标数据包组进行丢包检测。

15.如权利要求14所述的方法,其特征在于,所述目标包的头部包括格式标识字段、序号字段和类型字段;所述格式标识字段的取值用于标识所述目标包支持冗余恢复处理或不支持冗余恢复处理,所述序号字段的取值用于标识所述目标包所属的数据包组,所述类型字段的取值用于标识所述目标包的包类型;所述方法还包括:若所述格式标识字段的取值标识所述目标包支持冗余恢复处理,所述序号字段的取值标识所述目标包所属的数据包组为所述目标数据包组,且所述类型字段的取值标识所述目标包的包类型为数据包类型,则确定所述目标包为所述目标数据包组中的目标数据包。

16.如权利要求14所述的方法,其特征在于,所述根据所述队列中包含的所述原始数据包组中的原始数据包的数量,对所述目标数据包组进行丢包检测,包括:获取所述数据发送设备发送的目标数据包组中的目标数据包的数量M,所述数量M是从接收到的所述目标数据包组的目标冗余包的头部的数据包数量字段中读取到的;

若所述队列中包含的所述原始数据包组中的原始数据包的数量小于所述数量M,则确定所述目标数据包组中存在数据包丢失。

17.如权利要求13所述的方法,其特征在于,所述通过冗余恢复处理得到丢失的数据包,包括:获取所述数据发送设备发送的目标数据包的目标冗余包的数量N,所述数量N是从接收到的所述目标数据包组的目标冗余包的头部的冗余包数量字段中读取到的,N为小于或等于M的正整数;

根据所述数量N,接收所述数据发送设备发送的目标数据包组的N个目标冗余包;

根据所述N个目标冗余包对丢失的数据包进行冗余恢复处理,得到丢失的数据包。

18.一种数据处理装置,其特征在于,所述数据处理装置包括:

获取单元,用于获取原始数据包组,所述原始数据包组包括M个原始数据包,所述M个原始数据包是按照目标协议对待传输的目标业务数据进行封装得到的,通过所述目标协议封装得到的每个原始数据包均不支持冗余恢复处理,M为正整数;

所述获取单元,还用于获取所述原始数据包组中的每个原始数据包各自对应的第一冗余恢复参数,所述第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数;

处理单元,用于将所述原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,得到目标数据包组,所述目标数据包组包括M个目标数据包;

所述处理单元,还用于将所述目标数据包组发送至数据接收设备,以使所述数据接收设备在检测到所述目标数据包组中存在数据包丢失时,通过冗余恢复处理得到丢失的数据包。

19.一种数据处理装置,其特征在于,所述数据处理装置包括:

处理单元,用于在接收来自数据发送设备的目标数据包组的过程中,若检测到所述目标数据包组中存在数据包丢失,则通过冗余恢复处理得到丢失的数据包;

其中,所述数据发送设备发送的目标数据包组包括M个目标数据包,所述目标数据包组是所述数据发送设备将原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理得到的;所述原始数据包组包括M个原始数据包,所述原始数据包组是所述数据发送设备按照目标协议对待传输的目标业务数据进行封装得到的,通过所述目标协议封装得到的每个原始数据包均不支持冗余恢复处理,所述第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数,M为正整数。

20.一种计算机设备,其特征在于,所述计算机设备包括:

处理器,适于实现计算机程序;

计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1至12任一项所述的数据处理方法,或者如权利要求13至17任一项所述的数据处理方法。

说明书 :

一种数据处理方法及相关设备

技术领域

[0001] 本申请涉及互联网技术领域,尤其涉及数据传输技术领域,具体涉及一种数据处理方法及相关设备。

背景技术

[0002] 随着互联网技术的快速发展,互联网业务(例如游戏业务、音视频业务等)对数据传输的要求越来越高。数据发送方通常将数据封装为一个或多个数据包进行发送,数据接
收方通过解析这些数据包来重建传输的数据;在数据包的传输过程中,弱网(例如网络信号
差)、网络拥堵(例如网络中传输的数据量较大导致的拥堵)等情况会导致丢包(即数据包丢
失),丢包会使得数据接收方重建的数据不完整,因此互联网业务通常要求解决数据包在传
输过程中丢失的问题。
[0003] 目前,解决数据包在传输过程中丢失的问题所采用的技术手段为ARQ(Automatic Repeat‑reQuest,自动重传请求),ARQ规定数据接收方在接收到来自数据发送方的数据包
后,立即向数据发送方返回该数据包的确认帧,如果数据发送方在发送数据包一段时间后
未收到该数据包的确认帧,数据发送方便认为数据包在传输过程中丢失了,会重新发送该
数据包。ARQ虽然能够克服数据包在传输过程中丢失的问题,但是却带来了非常高的传输时
延(包括检测到数据包丢失的时延和重新传输数据包的时延),导致数据传输效率比较低。

发明内容

[0004] 本申请实施例提供了一种数据处理方法及相关设备,可以降低丢包情况下的数据传输时延,提升数据传输效率。
[0005] 一方面,本申请实施例提供了一种数据处理方法,该数据处理方法包括:
[0006] 获取原始数据包组,原始数据包组包括M个原始数据包,M个原始数据包是按照目标协议对待传输的目标业务数据进行封装得到的,通过目标协议封装得到的每个原始数据
包均不支持冗余恢复处理,M为正整数;获取原始数据包组中的每个原始数据包各自对应的
第一冗余恢复参数,第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数;将
原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,得到目标数
据包组,目标数据包组包括M个目标数据包;将目标数据包组发送至数据接收设备,以使数
据接收设备在检测到目标数据包组中存在数据包丢失时,通过冗余恢复处理得到丢失的数
据包。
[0007] 本申请实施例中,第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数,原始数据包组中的每个原始数据包均不支持冗余恢复处理,数据发送设备通过将原始
数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,可以使得拼接处
理得到的目标数据包组中的每个目标数据包均支持冗余恢复处理,从而,当目标数据包组
在传输至数据接收设备的过程中发生数据包丢失时,数据接收设备可以通过冗余恢复处理
快速恢复出丢失的数据包,数据发送设备无需重新传输丢失的数据包,这样可以降低丢包
情况下的传输时延,提升数据传输效率。
[0008] 一方面,本申请实施例提供了另一种数据处理方法,该数据处理方法包括:
[0009] 在接收来自数据发送设备的目标数据包组的过程中,若检测到目标数据包组中存在数据包丢失,则通过冗余恢复处理得到丢失的数据包;其中,数据发送设备发送的目标数
据包组包括M个目标数据包,目标数据包组是数据发送设备将原始数据包组中的每个原始
数据包与对应的第一冗余恢复参数进行拼接处理得到的;原始数据包组包括M个原始数据
包,原始数据包组是数据发送设备按照目标协议对待传输的目标业务数据进行封装得到
的,通过目标协议封装得到的每个原始数据包均不支持冗余恢复处理,第一冗余恢复参数
是指支持冗余恢复处理的数据包需包含的参数,M为正整数。
[0010] 本申请实施例中,在接收来自数据发送设备的目标数据包组的过程中,若检测到目标数据包组中存在数据包丢失,则数据接收设备可以通过冗余恢复处理恢复出丢失的数
据包;数据接收设备可以通过冗余恢复处理恢复丢失的数据包的前提是,目标数据包组中
的目标数据包支持冗余恢复处理,而目标数据包组是将原始数据包组中的每个原始数据包
与对应的第一冗余恢复参数进行拼接处理得到的,原始数据包组中的每个原始数据包均不
支持冗余恢复处理,第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数;也
就是说,数据接收设备可以直接快速地恢复出丢失的数据包,无需等待数据发送设备重新
传输丢失的数据包,可以降低丢包情况下的传输时延,提升数据传输效率。
[0011] 相应地,本申请实施例提供了一种数据处理装置,该数据处理装置包括:
[0012] 获取单元,用于获取原始数据包组,原始数据包组包括M个原始数据包,M个原始数据包是按照目标协议对待传输的目标业务数据进行封装得到的,通过目标协议封装得到的
每个原始数据包均不支持冗余恢复处理,M为正整数;获取原始数据包组中的每个原始数据
包各自对应的第一冗余恢复参数,第一冗余恢复参数是指支持冗余恢复处理的数据包需包
含的参数;
[0013] 处理单元,用于将原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,得到目标数据包组,目标数据包组包括M个目标数据包;将目标数据包组发
送至数据接收设备,以使数据接收设备在检测到目标数据包组中存在数据包丢失时,通过
冗余恢复处理得到丢失的数据包。
[0014] 在一种实现方式中,处理单元,用于将原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,得到目标数据包组时,具体用于执行如下步骤:
[0015] 针对原始数据包组中的第m个原始数据包,生成第m个原始数据包对应的第m个数据包体,第m个数据包体包括头部和主体,m为小于或等于M的正整数;将第m个原始数据包对
应的第一冗余恢复参数添加至第m个数据包体的头部,将第m个原始数据包添加至第m个数
据包体的主体,得到第m个原始数据包对应的第m个目标数据包。
[0016] 在一种实现方式中,第m个原始数据包对应的第一冗余恢复参数包括格式标识参数,第m个数据包体的头部包括格式标识字段;处理单元,用于将第m个原始数据包对应的第
一冗余恢复参数添加至第m个数据包体的头部时,具体用于执行如下步骤:
[0017] 将格式标识参数添加至格式标识字段中,格式标识参数用于标识第m个目标数据包支持冗余恢复处理。
[0018] 在一种实现方式中,第m个原始数据包对应的第一冗余恢复参数还包括序号参数或类型参数中的任意一种或两种;第m个数据包体的头部还包括序号字段或类型字段中的
任意一种或两种;处理单元,用于将第m个原始数据包对应的第一冗余恢复参数添加至第m
个数据包体的头部时,还用于执行如下步骤:
[0019] 在第m个原始数据包对应的第一冗余处理参数还包括序号参数、且第m个数据包体的头部还包括序号字段时,将序号参数添加至序号字段中,序号参数用于标识第m个目标数
据包属于目标数据包组;在第m个原始数据包对应的第一冗余处理参数还包括类型参数、且
第m个数据包体的头部还包括类型字段时,将类型参数添加至类型字段中,类型参数用于标
识第m个目标数据包的包类型为数据包类型。
[0020] 在一种实现方式中,处理单元,还用于执行如下步骤:
[0021] 生成目标数据包组的N个目标冗余包,N为小于或等于M的正整数;将N个目标冗余包发送至数据接收设备,以使数据接收设备根据N个目标冗余包进行冗余恢复处理,得到丢
失的数据包。
[0022] 在一种实现方式中,处理单元,用于生成目标数据包组的N个目标冗余包时,具体用于执行如下步骤:
[0023] 根据M个原始数据包生成N个原始冗余包;获取N个原始冗余包中的每个原始冗余包各自对应的第二冗余恢复参数;将N个原始冗余包中的每个原始冗余包与对应的第二冗
余恢复参数进行拼接处理,得到N个目标冗余包,第二冗余恢复参数是指支持冗余恢复处理
的冗余包需包含的参数。
[0024] 在一种实现方式中,处理单元,用于将N个原始冗余包中的每个原始冗余包与对应的第二冗余恢复参数进行拼接处理,得到N个目标冗余包时,具体用于执行如下步骤:
[0025] 针对N个原始冗余包中的第n个原始冗余包,生成第n个原始冗余包对应的第n个冗余包体,第n个冗余包体包括头部和主体,n为小于或等于N的正整数;将第n个原始冗余包对
应的第二冗余恢复参数添加至第n个冗余包体的头部,将第n个原始冗余包添加至第n个冗
余包体的主体,得到第n个原始冗余包对应的第n个目标冗余包。
[0026] 在一种实现方式中,第n个原始冗余包对应的第二冗余恢复参数包括格式标识参数,第n个冗余包体的头部包括格式标识字段;处理单元,用于将第n个原始冗余包对应的第
二冗余恢复参数添加至第n个冗余包体的头部时,具体用于执行如下步骤:
[0027] 将格式标识参数添加至格式标识字段中,格式标识参数用于标识第n个目标冗余包支持冗余恢复处理。
[0028] 在一种实现方式中,第n个原始冗余包对应的第二冗余恢复参数还包括以下至少一种:序号参数、类型参数、数据包数量参数、以及冗余包数量参数;第n个冗余包体的头部
还包括以下至少一个字段:序号字段、类型字段、数据包数量字段、以及冗余包数量字段;处
理单元,用于将第n个原始冗余包对应的第二冗余恢复参数添加至第n个冗余包体的头部
时,还用于执行如下步骤:
[0029] 在第n个原始冗余包对应的第二冗余恢复参数还包括序号参数、且第n个冗余包体的头部还包括序号字段时,将序号参数添加至序号字段中,序号参数用于标识第n个目标冗
余包为目标数据包组的冗余包;在第n个原始冗余包对应的第二冗余恢复参数还包括类型
参数、且第n个冗余包体的头部还包括类型字段时,将类型参数添加至类型字段中,类型参
数用于标识第n个目标冗余包的包类型为冗余包类型;在第n个原始冗余包对应的第二冗余
恢复参数还包括数据包数量参数、且第n个冗余包体的头部还包括数据包数量字段时,将数
据包数量参数添加至数据包数量字段中,数据包数量参数用于标识目标数据包组中包含的
目标数据包的数量M;在第n个原始冗余包对应的第二冗余恢复参数还包括冗余包数量参
数、且第n个冗余包体的头部还包括冗余包数量字段时,将冗余包数量参数添加至冗余包数
量字段中,冗余包数量参数用于标识目标数据包组的目标冗余包的数量N。
[0030] 在一种实现方式中,原始数据包组被设置需包括X个原始数据包,X为正整数;处理单元,还用于执行如下步骤:比较M与X之间的大小关系;根据M与X之间的大小关系,确定N个
目标冗余包的生成时间;
[0031] 处理单元,用于生成目标数据包组的N个目标冗余包时,具体用于执行如下步骤:按照确定的生成时间,生成目标数据包组的N个目标冗余包。
[0032] 在一种实现方式中,处理单元,用于根据M与X之间的大小关系,确定N个目标冗余包的生成时间时,具体用于执行如下步骤:
[0033] 若M等于X,则将封装得到M个原始数据包的时间确定为N个目标冗余包的生成时间;若M小于X,则将确定M个目标数据包中的最后一个目标数据包发送超时的时间,确定为N
个目标冗余包的生成时间;其中,最后一个目标数据包发送超时是指:最后一个目标数据包
发送目标时段后,未收到数据接收设备发送的确认帧。
[0034] 在一种实现方式中,处理单元,还用于执行如下步骤:
[0035] 与数据接收设备进行密钥协商,得到密钥,密钥用于在封装M个原始数据包的过程中进行加密;在与数据接收设备的密钥协商过程中,对数据接收设备的冗余恢复能力进行
检测;若确定数据接收设备具备所述冗余恢复能力,则触发执行获取原始数据包组的步骤。
[0036] 相应地,本申请实施例提供了另一种数据处理装置,该数据处理装置包括:
[0037] 处理单元,用于在接收来自数据发送设备的目标数据包组的过程中,若检测到目标数据包组中存在数据包丢失,则通过冗余恢复处理得到丢失的数据包;其中,数据发送设
备发送的目标数据包组包括M个目标数据包,目标数据包组是数据发送设备将原始数据包
组中的每个原始数据包与对应的第一冗余参数进行拼接处理得到的;原始数据包组包括M
个原始数据包,原始数据包组是数据发送设备按照目标协议对待传输的目标业务数据进行
封装得到的,通过目标协议封装得到的每个原始数据包均不支持冗余恢复处理,第一冗余
恢复参数是指支持冗余恢复处理的数据包需包含的参数,M为正整数。
[0038] 在一种实现方式中,接收单元,还用于执行如下步骤:接收来自数据发送设备的目标包,并读取目标包的头部和主体;
[0039] 处理单元,还用于执行如下步骤:若根据目标包的头部确定目标包为所述目标数据包组中的目标数据包,则确定目标包的主体为原始数据包组中对应的原始数据包,将目
标包中的原始数据包拷贝至队列中;根据队列中包含的原始数据包组中的原始数据包的数
量,对目标数据包组进行丢包检测。
[0040] 在一种实现方式中,目标包的头部包括格式标识字段、序号字段和类型字段;格式标识字段的取值用于标识目标包支持冗余恢复处理或不支持冗余恢复处理,序号字段的取
值用于标识目标包所属的数据包组,类型字段的取值用于标识目标包的包类型;处理单元,
还用于执行如下步骤:
[0041] 若格式标识字段的取值标识目标包支持冗余恢复处理,序号字段的取值标识目标包所属的数据包组为目标数据包组,且类型字段的取值标识目标包的包类型为数据包类
型,则确定目标包为目标数据包组中的目标数据包。
[0042] 在一种实现方式中,处理单元,用于根据队列中包含的原始数据包组中的原始数据包的数量,对目标数据包组进行丢包检测时,具体用于执行如下步骤:
[0043] 获取数据发送设备发送的目标数据包组中的目标数据包的数量M,数量M是从接收到的目标数据包组的目标冗余包的头部的数据包数量字段中读取到的;若队列中包含的原
始数据包组中的原始数据包的数量小于数量M,则确定目标数据包组中存在数据包丢失。
[0044] 在一种实现方式中,处理单元,用于通过冗余恢复处理得到丢失的数据包时,具体用于执行如下步骤:
[0045] 获取数据发送设备发送的目标数据包的目标冗余包的数量N,数量N是从接收到的目标数据包组的目标冗余包的头部的冗余包数量字段中读取到的,N为小于或等于M的正整
数;根据数量N,接收数据发送设备发送的目标数据包组的N个目标冗余包;根据N个目标冗
余包对丢失的数据包进行冗余恢复处理,得到丢失的数据包。
[0046] 相应地,本申请实施例提供一种计算机设备,该计算机设备包括处理器和计算机可读存储介质。其中:
[0047] 处理器适于实现计算机程序,计算机可读存储介质存储有计算机程序,计算机程序适于由处理器加载并执行上述的数据处理方法。
[0048] 相应地,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被计算机设备的处理器读取并执行时,使得计算机设备执
行上述的数据处理方法。
[0049] 相应地,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机
设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得
该计算机设备执行上述的数据处理方法。
[0050] 本申请实施例中,第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数,通过将原始数据包组中不支持冗余恢复处理的原始数据包与对应的第一冗余恢复参数
进行拼接处理,使得拼接处理得到的目标数据包组中的目标数据包支持冗余恢复处理,从
而当目标数据包组在传输至数据接收设备的过程中发生数据包丢失时,数据接收设备可以
通过冗余恢复处理快速恢复出丢失的数据包,这样可以降低丢包情况下的传输时延,从而
提升数据传输效率。

附图说明

[0051] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
[0052] 图1a是本申请实施例提供的一种恢复丢失数据包的过程示意图;
[0053] 图1b是本申请实施例提供的另一种恢复丢失数据包的过程示意图;
[0054] 图2是本申请实施例提供的一种数据处理系统的架构示意图;
[0055] 图3是本申请实施例提供的一种云游戏场景的数据传输过程的示意图;
[0056] 图4是本申请实施例提供一种数据处理方法的流程示意图;
[0057] 图5a是本申请实施例提供的一种原始数据包的结构示意图;
[0058] 图5b是本申请实施例提供的另一种原始数据包的结构示意图;
[0059] 图5c是本申请实施例提供的再一种原始数据包的结构示意图;
[0060] 图6是本申请实施例提供的一种目标数据包的结构示意图;
[0061] 图7是本申请实施例提供的另一种数据处理方法的流程示意图;
[0062] 图8a是本申请实施例提供的一种目标冗余包的结构示意图;
[0063] 图8b是本申请实施例提供的另一种目标冗余包的结构示意图;
[0064] 图9a是本申请实施例提供的一种密钥协商过程的流程示意图;
[0065] 图9b是本申请实施例提供的另一种密钥协商过程的流程示意图;
[0066] 图10是本申请实施例提供的再一种数据处理方法的流程示意图;
[0067] 图11是本申请实施例提供的一种数据处理方法的交互流程示意图;
[0068] 图12是本申请实施例提供的一种原始冗余包的生成过程的示意图;
[0069] 图13是本申请实施例提供的一种内存分配策略的示意图;
[0070] 图14是本申请实施例提供的一种数据处理装置的结构示意图;
[0071] 图15是本申请实施例提供的另一种数据处理装置的结构示意图;
[0072] 图16是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

[0073] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于
本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他
实施例,都属于本申请保护的范围。
[0074] 为了更清楚地理解本申请实施例提供的技术方案,在此先对本申请实施例涉及的关键术语进行介绍:
[0075] (1)本申请实施例涉及数据传输技术。数据传输技术是指数据发送方和数据接收方之间通过一个或多个数据通道或链路,共同遵循一个传输协议来进行数据传输的技术。
基于数据传输技术的数据传输过程可以更具体地理解为:数据发送方按照传输协议将待传
输的数据封装为一个或多个数据包,然后将一个或多个数据包传输至数据接收方,数据接
收方通过解析一个或多个数据包来重建传输的数据。其中,传输协议是指数据发送方和数
据接收方之间进行数据传输所必须遵循的规则和约定,传输协议中定义了用于封装数据的
数据包的格式。
[0076] (2)本申请实施例涉及FEC。FEC(Forward Error Correction,前向纠错)是一种差错控制方式,它是指信号在被送入传输信道之前预先按一定的算法进行编码处理,加入带
有信号本身特征的冗余码,在接收方按照相应算法对接收到的信号进行解码,从而找出在
传输过程中产生的错误码并将其纠正的技术。在本申请实施例中,FEC用于进行冗余恢复处
理,恢复出数据传输过程中丢失的数据包。具体来说,数据发送方按照传输协议将待传输的
数据封装为一个或多个数据包,数据发送方还可以基于FEC算法生成一个或多个数据包的
冗余包,并将数据包和冗余包均发送至数据接收方,数据接收方在检测到数据包丢失时,可
以进行根据冗余包和未丢失的数据包恢复出丢失的数据包。下面结合图1a和图1b对ARQ和
FEC进行比对:
[0077] 图1a示出了ARQ恢复丢失的数据包的过程:数据发送方传输数据包A、数据包B和数据包C至数据接收方,在数据传输过程中数据包B丢失了,数据发送方在检测到数据包B丢失
(数据发送方发送数据包B一段时间后未收到数据接收方返回的确认帧)后,重新传输数据
包B至数据接收方。在上述过程中,传输时延至少包括检测到数据包B丢失的时延和重新传
输数据包B的时延(RTT/2),数据传输效率不高。其中,RTT(Round‑Trip Time,往返时延)是指从数据发送方发送数据包开始,到数据发送方接收到来自数据接收方返回的该数据包的
确认帧为止的时间段所产生的时延。
[0078] 图1b示出了FEC恢复丢失的数据包的过程:数据发送方基于FEC算法生成数据包A、数据包B和数据包C的冗余包,将数据包A、数据包B、数据包C以及冗余包发送至数据接收方,
当数据接收方检测到数据包B丢失后,可以根据数据包A、数据包C和冗余包恢复出丢失的数
据包B,无需重新传输数据包B,降低了丢包情况下的传输时延,提升了数据传输效率。
[0079] (3)本申请实施例涉及云游戏。云游戏是以云计算为基础的游戏方式,在云游戏的运行模式下,所有游戏都在游戏服务器运行,游戏服务器将渲染完毕后的游戏媒体数据(例
如游戏画面、游戏音频等)压缩后通过网络传送给游戏客户端,游戏客户端向游戏玩家呈现
游戏媒体数据;游戏玩家在游戏客户端中的操作数据会通过网络传输到游戏服务器,达到
操作游戏的目的。其中,云计算(Cloud Computing)是一种计算模式,它将计算任务分布在
大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息
服务。
[0080] 基于上述关键术语的相关描述,本申请实施例提供了一种数据处理方案,在该数据处理方案中,数据发送方通过将冗余恢复参数(冗余恢复参数是指支持冗余恢复处理的
数据包需包含的参数)与不支持冗余恢复处理的原始数据包进行拼接处理,使得拼接处理
得到的目标数据包支持冗余恢复处理;所谓数据包支持冗余恢复处理是指:检测到数据包
在传输过程中丢失时,可以通过相应的冗余包恢复出该数据包;所谓数据包不支持冗余恢
复处理是指:检测到数据包在传输过程中丢失时,不可以通过相应的冗余包恢复出该数据
包;也就是说,本申请实施例在数据发送方将支持冗余恢复处理的目标数据包以及相应的
冗余包发送至数据接收方后,若数据接收方检测到数据包丢失,则数据接收方可以通过相
应的冗余包恢复出丢失的数据包,这样可以降低丢包情况下的数据传输时延,提升数据传
输效率。
[0081] 另外,本申请实施例中数据处理方案提供的数据处理能力可以封装于数据处理工具包中,该数据处理能力具体可以包括:通过将冗余恢复参数与不支持冗余恢复处理的原
始数据包进行拼接处理,使得拼接得到的目标数据包支持冗余恢复处理的能力,或者在检
测到支持冗余恢复处理的目标数据包丢失时,通过冗余恢复处理恢复出丢失的数据包的能
力。该数据处理工具包例如可以是SDK(Software Development Kit,软件开发工具包),可
以通过将数据处理工具包接入应用程序、软件、以及设备等中,使得应用程序、软件、以及设
备等具备数据处理能力;例如,当该数据处理工具包接入数据发送方后,数据发送方便具备
了通过将冗余恢复参数与不支持冗余恢复处理的原始数据包进行拼接处理,使得拼接得到
的目标数据包支持冗余恢复处理的能力;当该数据处理工具包接入数据接收方之后,数据
接收方便具备了在检测到支持冗余恢复处理的目标数据包丢失时,通过冗余恢复处理恢复
出丢失的数据包的能力。
[0082] 下面结合图2对适于实现本申请实施例提供数据处理方案的数据处理系统进行介绍。如图2所示,数据处理系统20可以包括数据发送设备201和数据接收设备202,数据发送
设备201可以是终端或服务器,数据接收设备202可以是终端或服务器,数据发送设备201与
数据接收设备202之间可以通过有线通信方式或无线通信方式进行直接或间接地通信连
接。本申请实施例提及的终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音
箱、智能手表、智能电视、车载终端、以及游戏手柄等,但并不局限于此;本申请实施例提及
的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布
式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间
件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数
据和人工智能平台等基础云计算服务的云服务器。其中:
[0083] (1)数据发送设备201。数据发送设备对应于数据发送方,数据发送设备可以获取待传输的业务数据,然后可以按照目标协议(即上述提及的传输协议)对待传输的业务数据
进行封装,得到一个或多个原始数据包,按照目标协议封装得到的一个或多个原始数据包
均不支持冗余恢复处理;原始数据包可以数据包组为单位,每达到一定数量的原始数据包
可以组成一个数据包组(group),不同的数据包组中包含的原始数据包的数量可以相同,也
可以不同。
[0084] 针对待传输的业务数据封装得到的任一个数据包组(可以称为原始数据包组),原始数据包组中可以包括M个原始数据包,按照目标封装协议封装得到的M个原始数据包均不
支持冗余恢复处理,M为正整数。数据发送设备可以将冗余恢复参数与原始数据包组中的每
个原始数据包进行拼接处理,得到支持冗余恢复处理的M个目标数据包,M个目标数据包组
成目标数据包组,数据发送设备可以将目标数据包组发送至数据接收设备。数据发送设备
还可以生成目标数据包组的N个目标冗余包,并将目标数据包组的N个目标冗余包发送至数
据接收设备,生成的目标冗余包的数量需小于或等于原始数据包的数量,即N为小于或等于
M的正整数。
[0085] (2)数据接收设备202。数据接收设备对应于数据接收方,针对目标数据包组,数据接收设备可以接收来自数据发送设备的目标数据包组,若数据接收设备检测到目标数据包
组中存在数据包丢失,则数据接收设备可以根据接收到的来自数据发送设备的N个目标冗
余包和未丢失的数据包恢复出丢失的数据包。从而,数据接收设备可以根据接收到的数据
包和恢复出的数据包重建目标业务数据,随着数据接收设备不断地接收来自数据发送设备
的数据包组,数据接收设备最终可以重建完整的业务数据。
[0086] 通过图2所示的系统架构,当数据发送设备向数据接收设备发送的数据包组在传输过程中存在数据包丢失时,数据接收设备通过冗余恢复处理可以快速恢复丢失的数据
包,数据发送设备无需重新发送丢失的数据包,数据接收设备无需等待重新发送的丢失的
数据包,这样可以降低丢包情况下的数据传输时延,提升数据发送设备与数据接收设备之
间的数据传输效率。可以理解的是,本申请实施例描述的数据处理系统是为了更加清楚的
说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领
域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本申请实施例提供的技
术方案对于类似的技术问题,同样适用。
[0087] 本申请实施例提供的数据处理方案与云游戏相结合可以达到优秀的技术效果,下面结合图3介绍本申请实施例提供的数据处理方案在云游戏场景中的具体应用:
[0088] 在一种实现方式中,数据发送设备中可以运行有云游戏的游戏客户端,游戏玩家可以通过游戏客户端操作云游戏,或者,数据发送设备可以是云游戏的游戏手柄,游戏玩家
可以通过游戏手柄操作云游戏;数据接收设备可以是云游戏的游戏服务器,游戏服务器中
运行有Cloud Game Engine(云游戏引擎),Cloud Game Engine中运行有云游戏。当数据发
送设备检测到游戏玩家对云游戏的操作事件(例如触屏事件、键盘鼠标事件、摇杆事件等)
时,数据发送设备会将操作事件对应的操作数据(例如触屏数据、键盘鼠标数据、摇杆数据
等)发送至游戏服务器,从而游戏服务器可以将操作数据注入到云游戏引擎中,达到操作游
戏的目的。云游戏场景对游戏玩家的操作延迟是非常敏感的,在游戏客户端将操作数据发
送至游戏服务器的过程中,可以采用本申请实施例提供的数据处理方案,这样可以在网络
质量较差导致部分操作数据丢失的情况下,快速恢复出丢失的操作数据,从而可以降低云
游戏的操作延迟,提升游戏玩家的云游戏体验。
[0089] 在另一种实现方式中,数据发送设备可以是游戏服务器,数据接收设备中可以运行有游戏客户端,游戏客户端可以向游戏玩家呈现包括游戏画面、游戏音频等的游戏媒体
数据。数据发送设备可以将Cloud Game Engine渲染得到的游戏画面、游戏音频等游戏媒体
数据传输至数据接收设备,数据接收设备可以通过游戏客户端向游戏玩家呈现游戏媒体数
据,在游戏服务器将游戏媒体数据发送至游戏客户端的过程中可以采用本申请实施例提供
的数据处理方案,这样可以在网络质量较差导致部分游戏媒体数据丢失的情况下,快速恢
复出丢失的游戏媒体数据,从而可以降低云游戏的媒体呈现延迟,提升游戏玩家的云游戏
体验。
[0090] 下面结合附图对本申请实施例提供的数据处理方案进行更为详细地介绍。
[0091] 本申请实施例提供一种数据处理方法,该数据处理方法主要介绍冗余恢复参数与不支持冗余恢复处理的原始数据包的拼接处理等内容,该数据处理方法可以由上述数据处
理系统20中的数据发送设备201(即数据发送方)执行,请参见图4,该数据处理方法可以包
括以下步骤S401‑步骤S404:
[0092] S401,获取原始数据包组,原始数据包组包括M个原始数据包。
[0093] 数据发送设备可以获取待传输的业务数据,然后可以按照目标协议对待传输的业务数据进行封装,得到一个或多个原始数据包,原始数据包可以数据包组为单位,每达到一
定数量的原始数据包可以组成一个数据包组,不同的数据包组中包含的原始数据包的数量
可以相同,也可以不同。本申请实施例以对待传输的业务数据进行封装得到的任一个数据
包组(即原始数据包组)为例进行介绍,原始数据包组是按照目标协议对业务数据中的目标
业务数据进行封装得到的,原始数据包组可以包括M个原始数据包,通过目标协议封装得到
的每个原始数据包均不支持冗余恢复处理,M为正整数。
[0094] 其中,目标协议定义的包格式为非冗余恢复格式,使得目标协议封装得到的原始数据包不支持冗余恢复处理,即检测到原始数据包在传输过程中丢失时,不可以通过相应
的冗余包恢复出该原始数据包。本申请实施例以目标协议是QUIC(Quick UDP Internet 
Connection,快速UDP(User Datagram Protocol,用户数据包协议)互联网连接)协议为例
进行说明,除QUIC协议外的其他传输协议均可参见本申请实施例中关于QUIC协议的相关描
述。QUIC协议是使用UDP进行多路转发传输的协议,相对于TCP(Transmission Control 
Protocol,传输控制协议)有诸多优势。QUIC协议至少可以包括gQUIC协议或IETF QUIC协议
中的任一种,gQUIC协议是在特定的网页浏览器中实现的早期QUIC版本协议,IETF QUIC协
议是IETF(The Internet Engineering Task Force,互联网工程任务组)标准组织的QUIC
协议规范,gQUIC协议和IETF QUIC协议定义的包格式有一些差异,下面结合图5a对gQUIC协
议定义的包格式进行介绍,结合图5b和图5c对IETF QUIC协议定义的包格式进行介绍:
[0095] ①gQUIC协议定义的包格式:
[0096] 如图5a所示,gQUIC协议定义的包格式包括包头和包体;包头中可以包括Public Flags字段、Connection ID字段、Quic Version字段、Diversification Nonce字段、Packet 
Number字段;包体中可以包括payload(有效载荷)。其中:
[0097] Public Flags字段(公共标识字段):表示公共标识位,Public Flags字段的大小为8bit(比特)。第一个比特(bit0)为PUBLIC_FLAGS_VERSION(公共标志版本)字段,当数据
发送设备为客户端时,设置PUBLIC_FLAGS_VERSION字段的取值表示数据包的包头中包含
QUIC版本号,当数据发送设备为服务器时,设置PUBLIC_FLAGS_VERSION字段的取值表示数
据包为版本数据包;第二个比特(bit1)为PUBLIC_FLAGS_RESET(公共标志重置)字段,设置
PUBLIC_FLAGS_RESET字段的取值表示数据包为公共复位数据包;第三个比特(bit2)为
Diversification Nonce字段,设置Diversification Nonce字段的取值表示包头中包含
Diversification Nonce字段;设置第四个比特(bit4)的取值表示包头中包含64bit的
Connection ID字段;第五个比特(bit4)和第六个比特(bit5)的取值表示Packet Number字
段的字节数;第七个比特(bit6)当前未使用,为多路径使用保留;第八个比特(bit7)当前未
使用,必须设置为0。
[0098] Connection ID字段(连接标识字段):字段取值为数据发送设备的连接标识,用于唯一标识数据发送设备的身份。
[0099] QUIC Version字段(协议版本字段):字段取值用于标识QUIC协议版本。
[0100] Diversification Nonce字段(多样化随机数字段):字段取值为多样化随机数。
[0101] Packet Number字段(包号字段):字段取值用于标识数据包的序号,数据发送设备给每个常规数据包(特殊公共重置数据包、版本协商数据包则不需要)分配一个序号,例如,
发送的第一个数据包的序号为1,之后的数据包的序号在前一个数据包的基础上加1。
[0102] payload中可以按照数据帧(frame)封装业务数据,payload中包括Authenticated Hash字段(认证哈希字段),以及一个或多个frame,每个frame包括type字段(数据帧类型字
段),frame header(数据帧头部)和frame payload(数据帧的有效载荷),待传输的业务数
据被真正封装于frame payload中。
[0103] ②IETF QUIC协议定义的包格式:
[0104] IETF QUIC协议定义的包格式包括长报头的包格式和短报头包格式;在连接建立过程中收发的数据包都使用长报头(long header),具有长报头的数据包可以包括初始数
据包(Initial)、0‑RTT数据包(0‑RTT)、握手数据包(Handshake)和重试数据包(Retry)、以及版本协商数据包(Version Negotiation),图5b以版本协商数据包的格式为例进行介绍:
[0105] 如图5b所示,版本协商数据包的格式包括包头和包体;包头中可以包括Public Flags字段、Quic Version字段、DCID len字段、Destination Connection ID字段、SCID 
len字段、以及Source Connection ID字段;包体中可以包括payload(有效载荷)。其中:
[0106] Public Flags字段(公共标识字段):表示公共标识位,Public Flags字段的大小为8bit(比特)。当第八个比特(bit7)设置为1时表明该数据包为长报头的数据包;第七个比
特(bit6)必须设置为1,若该比特被设置为0,则认为该数据包为无效的数据包,必须直接丢
弃;第六个比特(bit5)和第五个比特(bit4)的取值用于标识数据包的具体类型,例如,0x0
表示数据包的类型为原始数据包,0x1表示数据包的类型为0‑RTT数据包,0x2表示数据包的
类型为握手数据包,0x3表示数据包的类型为重试数据包;第四个比特(bit3)至第一个比特
(bit0)用于特定类型,不同类型的数据包具有不同的含义。
[0107] QUIC Version字段(协议版本字段):字段取值用于标识QUIC协议版本。
[0108] DCID  len字段(目标连接标识长度字段):字段取值用于标识Destination Connection ID字段的长度。
[0109] Destination Connection ID字段(目标连接标识字段):字段取值为数据接收设备的连接标识,可以用于唯一标识数据接收设备的身份。
[0110] SCID len字段(源连接标识长度字段):字段取值用于标识Source Connection ID字段长度。
[0111] Source Connection ID字段(源连接标识字段):字段取值为数据发送设备的连接标识,用于唯一标识数据发送设备的身份。
[0112] payload中可以包括支持的多个版本(Supported Version 1...Supported Version P,即支持的版本1..支持的版本P)。
[0113] 短报头的数据包在版本协商和1‑RTT密钥协商之后使用,主要传输常用的数据帧。如图5c所示,短报头的数据包的格式可以包括包头和包体;包头中可以包括Public Flags
字段、Destination Connection ID字段、以及Packet Number字段;包体中可以包括被加密
的有效载荷(encrypted data)。其中:
[0114] Public Flags字段(公共标识字段):表示公共标识位,Public Flags字段的大小为8bit(比特);当第八个比特(bit7)设置为0时表明该数据包为短报头的数据包;第七个比
特(bit6)必须设置为1,若该比特被设置为0,则认为该数据包为无效的数据包,必须直接丢
弃;第六个比特(bit5)表示延迟自旋位;第五个比特(bit4)和第四个比特(bit3)为保留字
段;第三个比特(bit2)的取值用于标识是否已经更新了密钥(密钥更新在握手确认之后),
初始设置为0,在每次密钥更新之后反转,数据接收设备通过该字段可以判断密钥是否发生
了变化;第二个比特(bit1)和第一个比特(bit0)的取值用于标识包头中的Packet Number
字段的长度。
[0115] Destination Connection ID字段(目标连接标识字段):字段取值为数据发送设备的连接标识,用于唯一标识数据发送设备的身份。
[0116] Packet Number字段(包号字段):字段取值用于标识数据包的序号。
[0117] 基于以上目标协议定义的包格式的相关描述,在此对原始数据包的封装过程进行介绍,原始数据包可以是按照短报头格式进行封装的,具体来说:可以按照MTU(Maximum 
Transmission Unit,最大传输单元)指示的目标数据长度对待传输的目标业务数据进行划
分,对划分得到的长度为目标数据长度的数据进行封包体,即将划分得到的长度为目标数
据长度的数据作为原始数据包的包体,然后可以采用与数据接收设备经密钥协商确定的密
钥对包体进行加密,然后可以对加密后的包体封装包头,便可以得到一个原始数据包。其
中,MTU是数据链路层的概念,用于限制数据链路层的有效载荷的大小。
[0118] S402,获取原始数据包组中的每个原始数据包各自对应的第一冗余恢复参数,第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数。
[0119] 原始数据包组中的每个原始数据包各自对应一个第一冗余恢复参数,第一冗余恢复参数是指支持冗余恢复处理的数据包需要包含的参数。在一种实现方式中,第一冗余恢
复参数可以包括格式标识参数,格式标识参数可以用于标识冗余恢复格式(FEC格式),也就
是说,当数据包中包括冗余标识参数时,说明该数据包的包格式为冗余恢复格式,包格式为
冗余恢复格式的数据包支持冗余恢复处理。在另一种实现方式中,第一冗余恢复参数除包
括格式标识参数外,还可以包括序号参数或类型参数中的任意一种或两种,序号参数可以
用于标识数据包所属的数据包组以及数据包在数据包组中的排列序号,类型参数可以用于
标识数据包的包类型。
[0120] S403,将原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,得到目标数据包组。
[0121] 在获取到原始数据包组中的每个原始数据包各自对应的第一冗余恢复参数之后,可以将原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,得到
目标数据包组,目标数据包组包括M个目标数据包。为了便于理解,在此以原始数据包组中
的第m个原始数据包的拼接处理过程为例,对第m个原始数据包对应的第一冗余恢复参数与
第m个原始数据包进行拼接处理,可以得到第m个原始数据包对应的第m个目标数据包,m为
小于或等于M的正整数。具体的拼接过程如下:针对原始数据包组中的第m个原始数据包,可
以生成第m个原始数据包对应的第m个数据包体,第m个数据包体是指用于对第m个原始数据
包和第m个原始数据包对应的第一冗余恢复参数进行拼接处理的包结构,第m个数据包体可
以包括头部和主体;然后,可以将第m个原始数据包对应的第一冗余恢复参数添加至第m个
数据包体的头部,将第m个原始数据包添加至第m个数据包体的主体,得到第m个原始数据包
对应的第m个目标数据包,可以看出,拼接处理过程即是为第m个原始数据包添加了冗余恢
复头部(FEC header)。
[0122] 在一种实现方式中,第m个原始数据包对应的第一冗余恢复参数可以包括:格式标识参数、序号参数和类型参数,第m个数据包体的头部可以包括:格式标识字段(FEC Format 
Flags)、序号字段(FEC SEQ ID)和类型字段(FEC Type)。如图6所示,可以将格式标识参数
添加至格式标识字段中,格式标识参数可以用于标识第m个目标数据包的包格式为冗余恢
复格式,冗余恢复格式即FEC头部包裹的主体,包格式为冗余恢复格式的第m个目标数据包
支持冗余恢复处理;可以将序号参数添加至序号字段中,序号参数可以用于标识第m个目标
数据包属于目标数据包组,以及第m个目标数据包在目标数据包组中的排列序号,例如,目
标数据包组中各个包的序号为0‑7,第m个目标数据包的序号参数为3,标识第m个目标数据
包属于目标数据包组,且第m个目标数据包在目标数据包组中排列于第4位;可以将类型参
数添加至类型字段中,类型参数用于标识第m个目标数据包的包类型为数据包类型;以及可
以将第m个原始数据包添加至第m个数据包体的主体,最终得到第m个目标数据包。通过这种
方式,以头部的形式为原始数据包添加第一冗余恢复参数,没有修改目标协议定义的包格
式,这样可以兼容多种类型的目标协议,而且尤其适用于包格式不支持扩展字段或不存在
扩展字段的传输协议。
[0123] 在另一种实现方式中,第m个原始数据包对应的第一冗余恢复参数可以包括格式标识参数,第m个数据包体的头部可以包括格式标识字段。可以将格式标识参数添加至格式
标识字段中,以及可以将第m个原始数据包添加至第m个数据包体的主体,最终得到第m个目
标数据包。在此情况下,数据发送设备可以将第m个原始数据包对应的序号参数和第m个原
始数据包对应的类型参数单独发送至数据接收设备,而不是通过添加于第m个原始数据包
的头部发送至数据接收设备。相比于将格式标识参数、类型参数以及序号参数全部添加于
第m个数据包体的头部的方式,将序号参数和类型参数单独发送至数据接收设备,可以减少
目标数据包中的数据量,这样可以提升目标数据包的传输效率,进一步提升数据传输效率。
[0124] 在另一种实现方式中,第m个原始数据包对应的第一冗余恢复参数包括格式标识参数,除格式标识参数外,第m个原始数据包对应的第一冗余恢复参数还可以包括序号参数
或类型参数中的任一种;第m个数据包体的头部包括格式标识字段,除格式标识字段外,第m
个数据包体的头部还可以包括序号字段或类型字段中的任一种。可以将格式标识参数添加
至格式标识字段中;在第m个原始数据包对应的第一冗余恢复参数还包括序号参数,且第m
个数据包体的头部还包括序号字段时,可以将序号参数添加至序号字段中;在第m个原始数
据包对应的第一冗余恢复参数还包括类型参数,且第m个数据包体的头部还包括类型字段
时,可以将序号参数添加至类型字段中;以及可以将第m个原始数据包添加至第m个数据包
体的主体,最终得到第m个目标数据包。例如,第m个原始数据包对应的第一冗余恢复参数可
以包括格式标识参数和类型参数,第m个数据包体的头部包括格式标识字段和类型字段,在
此情况下,第m个原始数据包对应的序号参数可以单独发送至数据接收设备,而不是通过添
加于第m个原始数据包的头部发送至数据接收设备。
[0125] S404,将目标数据包组发送至数据接收设备,以使数据接收设备在检测到目标数据包组中存在数据包丢失时,通过冗余恢复处理得到丢失的数据包。
[0126] 将原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,得到目标数据包组后,数据发送设备可以将目标数据包组发送至数据接收设备,以使数据
接收设备在检测到目标数据包组中存在数据包丢失时,可以通过冗余恢复处理得到丢失的
数据包。数据发送设备还可以生成目标数据包组的N个目标冗余包,并将目标数据包组的N
个目标冗余包发送至数据接收设备,以使数据接收设备在检测到目标数据包组中存在数据
包丢失时,可以根据N个目标冗余包进行冗余恢复处理,得到丢失的数据包,N为小于或等于
M的正整数。
[0127] 本申请实施例中,数据发送设备通过将原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,可以使得拼接处理得到的目标数据包组中的每个目标
数据包均支持冗余恢复处理,从而,当目标数据包组在传输至数据接收设备的过程中发生
数据包丢失时,数据接收设备可以通过冗余恢复处理快速恢复出丢失的数据包,数据发送
设备无需重新传输丢失的数据包,这样可以降低丢包情况下的传输时延,提升数据传输效
率。另外,本申请实施例以头部的形式为原始数据包添加第一冗余恢复参数,没有修改目标
协议定义的包格式,这样可以兼容多种类型的目标协议,例如可以兼容gQUIC协议定义的包
格式和IETF QUIC协议定义的包格式,而且尤其适用于定义的包格式不支持扩展字段或不
存在扩展字段的传输协议。
[0128] 本申请实施例提供一种数据处理方法,该数据处理方法主要介绍生成目标数据包组的目标冗余包,在密钥协商过程中确定数据接收设备的冗余处理能力等内容,该数据处
理方法可以由上述数据处理系统20中的数据发送设备201(即数据发送方)执行,请参见图
7,该数据处理方法可以包括以下步骤S701‑步骤S706:
[0129] S701,获取原始数据包组,原始数据包组包括M个原始数据包。
[0130] 本申请实施例中步骤S701的执行过程与上述图4所示实施例中步骤S401的执行过程相同,具体可参见上述图4所示实施例中步骤S401的描述,在此不再赘述。
[0131] S702,获取原始数据包组中的每个原始数据包各自对应的第一冗余恢复参数,第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数。
[0132] 本申请实施例中步骤S702的执行过程与上述图4所示实施例中步骤S402的执行过程相同,具体可参见上述图4所示实施例中步骤S402的描述,在此不再赘述。
[0133] S703,将原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,得到目标数据包组。
[0134] 本申请实施例中步骤S703的执行过程与上述图4所示实施例中步骤S403的执行过程相同,具体可参见上述图4所示实施例中步骤S403的描述,在此不再赘述。
[0135] S704,将目标数据包组发送至数据接收设备。
[0136] 在将原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,得到目标数据包组后,数据发送设备可以将目标数据包组发送至数据接收设备。
[0137] S705,生成目标数据包组的N个目标冗余包。
[0138] 数据发送设备可以生成目标数据包组的N个目标冗余包,需生成的目标数据包组的目标冗余包的数量,可以是根据目标数据包组中包括的目标数据包的数量和冗余度参数
确定的,需生成的目标数据包组的目标冗余包的数量可以等于,目标数据包组中包括的目
标数据包的数量与冗余度参数之间的乘积,例如,目标数据包组中包括5个目标数据包,冗
余度参数为60%,则需生成5×60%=3个目标冗余包;冗余度参数为小于或等于1的正实数,N
为小于或等于M的正整数。其中,生成目标数据包组的N个目标冗余包可以包括以下子步骤
s11‑13:
[0139] s11,根据M个原始数据包生成N个原始冗余包。
[0140] 根据M个原始数据包生成N个原始冗余包的过程,可以包括:按照FEC算法对M个原始数据包进行冗余编码处理,得到N个冗余数据,以及按照目标协议对N个冗余数据进行封
装处理,得到N个原始冗余包。
[0141] FEC算法可以包括很多种,例如XOR算法(异或算法)、UPLFEC算法(一种FEC算法)、FlexFEC算法(一种FEC算法)、以及Reed‑Solomon Code(里德‑索罗门码)算法等,如下表1示出了上述几种FEC算法的特点:
[0142] 表1
[0143] FEC算法 特点XOR算法 优点:实现简单,开销小。 缺点:只能恢复一个丢失的原始数据包。
UPLFEC算法 优点:将原始数据包进行分组,一个分组产生一个原始冗余包。 缺点:只能恢复一个丢失的原始数据包。
FlexFEC算法 优点:将原始数据包进行横向、纵向分组,算法复现度大。 缺点:横向、纵向均只能恢复一个丢失的原始数据包。
Reed‑Solomon 优点:将原始数据包进行分组,一个分组内的M个原始数据包产生N个原始冗余包(N≤M)。 缺点:可以恢Code算法 复出一个分组中任意丢失的N个原始数据包。
[0144] 通过上述表1中几种FEC算法的比较,可以发现,Reed‑Solomon Code算法更加灵活,对于丢失的原始数据包的恢复率比较高,本申请实施例中以FEC算法是Reed‑Solomon 
Code算法为例进行说明。
[0145] 其中,FEC算法规定用于生成冗余数据的M个原始数据包的数据包长度需一致,因此,可以获取M个原始数据包中的最大数据包长度,按照最大数据包长度对M个原始数据包
进行填充,使得填充后的M个原始数据包的数据包长度一致,然后可以根据FEC算法对填充
后的M个原始数据包进行冗余编码处理,得到N个冗余数据;按照最大数据包长度对M个原始
数据包进行填充是指:对于M个原始数据包中数据包长度小于最大数据包长度的原始数据
包,在该原始数据包的末尾填充0,直至填充后的该原始数据包的长度达到最大数据包长
度。
[0146] 基于以上目标协议定义的包格式的相关描述,在此对原始冗余包的封装过程进行介绍,原始冗余包可以是按照短报头格式进行封装的,具体来说:针对N个冗余数据中的任
一个冗余数据,可以将该冗余数据作为原始冗余包的包体,然后可以采用与数据接收设备
经密钥协商后确定的密钥对包体进行加密,然后可以对加密后的包体封装包头,便可以得
到一个原始冗余包,同理可以得到N个原始冗余包。
[0147] s12,获取N个原始冗余包中的每个原始冗余包对应的第二冗余恢复参数。
[0148] 在根据M个原始数据包生成N个原始冗余包之后,可以获取N个原始冗余包中的每个原始冗余包对应的第二冗余恢复参数。在一种实现方式中,第二冗余恢复参数可以包括
格式标识参数,格式标识参数可以用于标识冗余恢复格式(FEC格式),也就是说,当冗余包
中包括格式标识参数时,说明该冗余包的包格式为冗余恢复格式,包格式为冗余恢复格式
的冗余包支持冗余恢复处理,冗余包支持冗余恢复处理是指:冗余包可以用于进行冗余恢
复处理。在一种实现方式中,第二冗余恢复参数除包括格式标识参数外,还可以包括以下至
少一种:序号参数、类型参数、数据包数量参数、冗余包数量参数、以及连接标识参数,序号
参数可以用于标识冗余包所属的数据包组以及冗余包在数据包组中的排列序号,类型参数
可以用于标识冗余包的包类型,数据包数量参数用于标识冗余包所属的数据包组中包含的
数据包的数量,冗余包数量参数可以用于标识冗余包所属的数据包组的冗余包的数量,连
接标识参数可以用于唯一标识数据发送设备的身份。
[0149] s13,将N个原始冗余包中的每个原始冗余包与对应的第二冗余恢复参数进行拼接处理,得到N各目标冗余包。
[0150] 在根据M个原始数据包生成N个原始冗余包,以及获取到N个原始冗余包中的每个原始冗余包对应的第二冗余恢复参数之后,可以将N个原始冗余包中的每个原始冗余包与
对应的第二冗余恢复参数进行拼接处理,得到N个目标冗余包。为了便于理解,在此以N个原
始冗余包中的第n个原始冗余包的拼接处理过程为例,对第n个原始冗余包对应的第二冗余
恢复参数与第n个原始冗余包的拼接处理,可以得到第n个原始冗余包对应的第n个目标冗
余包,n为小于后等于N的正整数。具体的拼接过程如下:针对N个原始冗余包中的第n个原始
冗余包,生成用于对第n个原始冗余包和第n个原始冗余包对应的第二冗余恢复参数进行拼
接处理的第n个冗余包体,第n个冗余包体包括头部和主体;将第n个原始冗余包对应的第二
冗余恢复参数添加至第n个冗余包体的头部,将第n个原始冗余包添加至第n个冗余包体的
主体,得到第n个原始冗余包对应的第n个目标冗余包。
[0151] 需要说明的是,与将原始数据包对应的第一冗余恢复参数与原始数据包进行拼接处理类似,可以将格式标识参数、序号参数、类型参数、数据包数量参数、以及冗余包数量参
数全部添加至第n个冗余包体的头部;与原始数据包类似,以头部的形式为原始冗余包添加
第二冗余恢复参数,没有修改目标协议定义的包格式,这样可以兼容多种类型的目标协议,
而且尤其适用于包格式不支持扩展字段或不存在扩展字段的传输协议。或者,可以将标识
冗余恢复格式的格式标识参数添加至第n个冗余包体的头部,其余参数可以单独发送至数
据接收设备;或者,可以将标识冗余恢复格式的格式标识参数添加至第n个冗余包体的头
部,其余参数可以部分添加至第n个冗余包体的头部,剩余的参数可以单独发送至数据接收
设备;与原始数据包类似,将序号参数、类型参数、数据包数量参数以及冗余包数量参数中
的任意一种或多种单独发送至数据接收设备,可以减少目标冗余包中的数据量,这样可以
提升目标冗余包的传输效率,进一步提升数据传输效率。在此以将格式标识参数、序号参
数、类型参数、数据包数量参数、以及冗余包数量参数全部添加至第n个冗余包体的头部为
例进行介绍,其余情况可以参见上述原始数据包的拼接处理的相关描述。特别地,当数据发
送设备中运行有客户端,数据接收设备为服务器时,由于服务器可以连接多个客户端,为了
便于服务器对不同的客户端进行区分,可以将用于唯一标识数据发送设备中运行的客户端
的身份的连接标识参数添加至第n个冗余包体的头部。下面结合图8a和图8b介绍将第n个原
始冗余包对应的第二冗余恢复参数添加至第n个冗余包体的头部的过程:
[0152] 在一种实现方式中,当数据发送设备为服务器,数据接收设备中运行有客户端时,第n个原始冗余包对应的第二冗余恢复参数可以包括:格式标识参数、序号参数、类型参数、
数据包数量参数和冗余包数量参数;第n个冗余包体的头部可以包括:格式标识字段(FEC 
Format Flags)、序号字段(FEC SEQ ID)、类型字段(FEC Type)、数据包数量字段(Data 
Shard Num)和冗余包数量字段(Parity Shard Num)。如图8a所示,可以将格式标识参数添
加至格式标识字段中,格式标识参数可以用于标识第n个目标冗余包的包格式为冗余恢复
格式,冗余恢复格式即FEC头部包裹的主体,包格式为冗余恢复格式的第n个目标冗余包可
以支持冗余恢复处理,第n个目标冗余包可以支持冗余恢复处理是指:第n个目标冗余包可
以用于进行冗余恢复处理;可以将序号参数添加至序号字段中,序号参数可以用于标识第n
个目标冗余包属于目标数据包组,以及第n个目标冗余包在目标数据包组中的排列序号;可
以将类型参数添加至类型字段中,类型参数可以用于标识所述第n个目标冗余包的包类型
为冗余包类型;可以将数据包数量参数添加至数据包数量字段中,数据包数量参数可以用
于标识目标数据包组中包含的目标数据包的数量M;可以将冗余包数量参数添加至冗余包
数量字段中,冗余包数量参数可以用于标识目标数据包组的目标冗余包的数量N。
[0153] 在另一种实现方式中,当数据发送设备中运行有客户端,数据接收设备未服务器时,第n个原始冗余包对应的第二冗余恢复参数可以包括:格式标识参数、序号参数、类型参
数、数据包数量参数、冗余包数量参数和连接标识参数;第n个冗余包体的头部可以包括:格
式标识字段(FEC Format Flags)、序号字段(FEC SEQ ID)、类型字段(FEC Type)、数据包数量字段(Data Shard Num)、冗余包数量字段(Parity Shard Num)和连接标识字段
(Connection ID)。如图8b所示,可以将格式标识参数添加至格式标识字段中,格式标识参
数可以用于标识第n个目标冗余包的包格式为冗余恢复格式,冗余恢复格式即FEC头部包裹
的主体,包格式为冗余恢复格式的第n个目标冗余包可以支持冗余恢复处理,第n个目标冗
余包可以支持冗余恢复处理是指:第n个目标冗余包可以用于进行冗余恢复处理;可以将序
号参数添加至序号字段中,序号参数可以用于标识第n个目标冗余包属于目标数据包组,以
及第n个目标冗余包在目标数据包组中的排列位置;可以将类型参数添加至类型字段中,类
型参数可以用于标识所述第n个目标冗余包的包类型为冗余包类型;可以将数据包数量参
数添加至数据包数量字段中,数据包数量参数可以用于标识目标数据包组中包含的目标数
据包的数量M;可以将冗余包数量参数添加至冗余包数量字段中,冗余包数量参数可以用于
标识目标数据包组的目标冗余包的数量N;可以将连接标识参数添加至连接标识字段中,连
接标识参数可以用于唯一标识数据发送设备中运行的客户端的身份。
[0154] 由前述内容可知,需生成的目标数据包组的目标冗余包的数量,可以是根据目标数据包组中包括的目标数据包的数量和冗余度参数确定的;在生成目标数据包组的目标冗
余包之前,可以获取数据发送设备与数据接收设备之间的丢包参数,丢包参数是指当前丢
包数量在当前已传输至数据接收设备的包总数量中的占比,可以根据丢包参数对需为目标
数据包组生成的目标冗余包的数量进行调整,这样便可以按照调整后的需为目标数据包组
生成的目标冗余包的数量,生成目标数据包组的N个目标冗余包。其中,可以根据丢包参数
对需为目标数据包组生成的目标冗余包的数量进行调整,具体可以是根据丢包参数对冗余
度参数进行调整,然后根据调整后的冗余度参数重新计算需为目标数据包组生成的目标冗
余包的数量。丢包参数与冗余度参数之间具备映射关系,可以根据当前丢包参数、丢包参数
与冗余度参数之间的映射关系来对冗余度参数进行调整,示例性的丢包参数与冗余度参数
之间的映射关系可参见如下表2:
[0155] 表2
[0156]丢包参数 冗余度参数
(0,1%) 25%
[1%,3%) 35%
[3%,5%) 50%
[5%,+∞) 60%
[0157] 通过这种方式,根据当前的丢包参数来调整为目标数据包生成的目标冗余包的数量,可以使得为目标数据包生成的目标冗余包的数量更加符合当前网络的丢包情况,从而
可以避免生成多余的冗余包、生成的冗余包不足以恢复全部丢失的数据包等情况发生。
[0158] 除了支持调整为目标数据包组生成的目标冗余包的数量外,原始数据包组中需包含的原始数据包的数量也支持调整。具体来说,可以获取数据发送设备与数据接收设备之
间的传输速率参数,传输速率参数可以用于指示数据发送设备与数据接收设备之间的传输
网络的传输速度,传输速率参数越大,表示数据发送设备与数据接收设备之间的传输网络
的传输速度越快,然后可以根据传输速率参数,对原始数据包组中需包含的原始数据包的
数量进行调整。进一步地,还可以根据原始数据包组中需包含的原始数据包的数量以及冗
余度参数,可以确定出需要为原始数据包组对应的目标数据包组生成的目标冗余包的数
量。传输速率参数与原始数据包组中需包含的原始数据包的数量之间具备映射关系,可以
根据当前传输速率、传输速率参数与原始数据包组中需包含的原始数据包的数量之间的映
射关系,来对原始数据包组中需包含的原始数据包的数量进行调整,示例性的传输速率参
数与原始数据包组中需包含的原始数据包的数量之间的映射关系可参见如下表3:
[0159] 表3
[0160]传输速率参数 原始数据包组中需包含的原始数据包的数量
(0,1Kbps) 4
[1Kbps,10Kbps) 10
[10Kbps,100Kbps) 20
[100Kbps,1Mbps) 30
[1Mbps,+∞) 40
[0161] 通过这种方式,根据当前的传输速率参数来调整原始数据包组中需包含的原始数据包的数量,可以使得原始数据包组中需包含的原始数据包的数量更加符合当前网络的传
输速率,尽量避免丢包,提升数据传输速率。
[0162] 值得注意的是,可以设置原始数据包组中需包含X个原始数据包,即目标数据包组中需包含X个目标数据包组,可以比较原始数据包组中包含的原始数据包的数量M与X之间
的大小关系,根据M与X之间的大小关系,确定N个目标冗余包的生成时间,然后便可以按照
确定的生成时间,生成所述目标数据包组的N个目标冗余包。其中,若M等于X,则可以将封装
得到M个原始数据包的时间确定为N个目标冗余包的生成时间;也就是说,当待传输的业务
数据的数据量较大时,按照目标协议封装得到的原始数据包达到X个(即M个),便可以将M个
原始数据包划分为原始数据包组,并根据M个原始数据包生成N个目标冗余包。或者,若M小
于X,则将确定M个目标数据包中的最后一个目标数据包发送超时的时间,确定为N个目标冗
余包的生成时间;最后一个目标数据包发送超时是指:最后一个目标数据包发送目标时段
后,未收到数据接收设备发送的确认帧;也就是说,当待传输的业务数据的数据量较小,按
照目标协议封装得到的原始数据包不足够划分为一个原始数据包组时,可以与ARQ结合,设
置一个定时器(定时器中设置的时间段为目标时段(例如可以是RTT×0.25)),若最后一个
目标数据包发送目标时段后,未收到数据接收设备发送的确认帧,便生成目标数据包组的N
个目标冗余包主动发出,若最后一个目标数据包发送目标时段之内,收到数据接收设备发
送的确认帧,说明数据包在传输过程中未丢失,可以无需生成目标冗余包。通过这种方式,
当待传输的业务数据的数据量较小时,可以在确认数据包丢失时再生成冗余包,若确认数
据包未丢失,则无需生成目标冗余包,可以节省数据发送设备的冗余编码资源。
[0163] S706,将N个目标冗余包发送至数据接收设备,以使数据接收设备在检测到目标数据包组中存在数据包丢失时,根据N个目标冗余包进行冗余恢复处理,得到丢失的数据包。
[0164] 在生成目标数据包组的N个目标冗余包之后,可以将目标数据包组的N个目标冗余包发送至数据接收设备,以使数据接收设备在检测到目标数据包组中存在数据包丢失时,
可以根据N个目标冗余包进行冗余恢复处理,得到丢失的数据包。
[0165] 需要说明的是,本申请实施例中步骤S701‑S706是在确定数据接收设备具备冗余恢复能力的情况下执行的,若数据接收设备不具备冗余恢复能力,则不会将第一冗余恢复
参数与原始数据包进行拼接处理,也不会生成相应的冗余包,并且当原始数据包在传输过
程中存在丢失时,是通过ARQ来重新传输丢失的原始数据包的;数据接收设备具备冗余恢复
能力是指数据接收设备可以用于进行冗余恢复处理。本申请实施例可以在数据发送设备与
数据接收设备进行密钥协商的过程中,对数据接收设备的冗余恢复能力进行检测,若确定
数据接收设备具备冗余恢复能力,则可以执行本申请实施例中步骤S701‑S706。其中,数据
发送设备与数据接收设备进行密钥协商发生在正式传输业务数据之前,密钥协商可以用于
确定密钥,密钥可以用于在封装M个原始数据包的过程中加密(具体可以是对原始数据包或
原始冗余包的包体进行加密)。密钥协商过程可以包括1RTT过程和0RTT过程,1RTT过程可以
用于在数据发送设备和数据接收设备首次连接时进行密钥协商,0RTT过程可以用于在数据
发送设备和数据接收设备已进行首次连接后,连接断开重新连接时进行密钥协商,下面结
合图9a对1RTT过程进行介绍,结合图9b对0RTT过程进行介绍:
[0166] 图9a所示实施例以数据发送设备中运行有客户端(client),数据接收设备是服务器(server)为例介绍1RTT过程:①客户端发送早期招呼(Inchoate Client Hello,
Inchoate CHLO)消息请求建立连接;服务器生成一组质数p以及基点g,然后根据质数p、基
点g和随机生成数a算出数值A,并将数值A、质数p和基点g放在serverConfig(server配置)
里面,通过拒绝(Rejection,REJ)消息发送到客户端。②客户端随机生成一个数b,并根据
serverConfig里面的数值A、质数p和数b可以算出初始密钥K,并将公开数B和采用初始密钥
K加密的Data数据通过完整招呼(Complete Client Hello,Complete CHLO)消息发送到服
务器,客户端还会向服务器发送加密请求(Encrypted Request)。③服务器接收到客户端的
数据,用客户端发来的公开数B和serverConfig生成同样的密钥,来解密客户端发来的数
据,然后服务器发送服务器的招呼(Server Hello,SHLO)消息,这时Server Hello消息中会
带上服务器生成的公开数(服务器这是在更新自己的私钥,实际上这就是为了保证前向安
全性),服务器还会向客户端发送加密响应(Encrypted Response)。④客户端接收到服务器
的公开数后,客户端和服务器双方便更新了密钥,采用加密算法(例如SHA‑256算法等)用可
以推倒出客户端与服务器之间的用于进行加密的密钥,客户端与服务器后续便采用该密钥
进行数据加密传输。并且,后续的连接过程中,如果客户端本地的serverConfig没过期(包
含了数值A、质数p和基点g,以及其他前次协商信息),直接可以计算出初始密钥K并加密传
输数据,实现0RTT握手。
[0167] 在上述1RTT过程中,客户端会将客户端的冗余恢复能力集(FEC能力集)嵌入Complete Client Hello消息中发送至服务器,客户端的冗余恢复能力集可以用于指示客
户端具备冗余恢复能力,以及客户端支持的FEC版本。若客户端接收到的服务器发送的
Server Hello消息中嵌入了服务器的冗余恢复能力集,则可以确定服务器(即数据接收设
备)具备冗余恢复能力,服务器的冗余恢复能力集可以用于指示服务器具备冗余恢复能力,
以及服务器支持的FEC版本。
[0168] 图9b所示实施例以数据发送设备中运行有客户端(client),数据接收设备是服务器(server)为例介绍0RTT过程:0RTT的前提是客户端必须已经拥有了ServerConfig,并且
要结合证书验证ServerConfig,验证无误后就能够获取到密钥交换算法及公钥,此时再生
成一个全新的密钥,按照DH算法(密钥交换算法)和参数,就能在本地计算出对称密钥Sc。服
务器收到客户端的Client Hello消息(CHLO消息)后,同时也包含了客户端的公钥信息,服
务端也能结合之前的公钥参数计算出密钥Ss。
[0169] 在上述0RTT过程中,客户端会将客户端的冗余恢复能力集(FEC能力集)嵌入Client Hello消息中发送至服务器,客户端的冗余恢复能力集可以用于指示客户端具备冗
余恢复能力,以及客户端支持的FEC版本。若客户端接收到的服务器发送的Server Hello消
息中嵌入了服务器的冗余恢复能力集,则可以确定服务器(即数据接收设备)具备冗余恢复
能力,服务器的冗余恢复能力集可以用于指示服务器具备冗余恢复能力,以及服务器支持
的FEC版本。
[0170] 密钥协商过程是数据发送设备与数据接收设备之间可以进行数据传输的必要前序流程,通过在数据发送设备与数据接收设备进行密钥协商的过程中确定数据接收设备是
否具备冗余恢复能力,可以兼容数据发送设备与数据接收设备之间的建立连接、收发包流
程,没有额外增加新的流程,可以减少流程上的改动,不增加更多的信令和环节;并且没有
使用硬编码逻辑,通过格式标识字段(FEC Format Flag)便可以确定数据接收设备是否具
备冗余恢复能力,这样具有较强的扩展性和可读性。
[0171] 本申请实施例中,通过为目标数据包组生成目标冗余包,并将生成的目标冗余包发送至数据接收设备,使得当目标数据包组在传输至数据接收设备的过程中发生数据包丢
失时,数据接收设备可以根据目标冗余包进行冗余恢复处理快速恢复出丢失的数据包,数
据发送设备无需重新传输丢失的数据包,这样可以降低丢包情况下的传输时延,提升数据
传输效率。此外,可以根据当前的丢包参数调整需为目标数据包组生成的目标冗余包的数
量,可以使得为目标数据包生成的目标冗余包的数量更加符合当前网络的丢包情况;可以
根据当前网络的传输速率参数调整数据包组中需包含的数据包的数量,可以使得原始数据
包组中需包含的原始数据包的数量更加符合当前网络的传输速率,尽量避免丢包,提升数
据传输速率。
[0172] 本申请实施例提供一种数据处理方法,该数据处理方法主要介绍确定目标数据包组中存在数据包丢失,以及通过冗余恢复处理恢复丢失的数据包等内容,该数据处理方法
可以由上述数据处理系统20中的数据接收设备202(即数据接收方)执行,请参见图10,该数
据处理方法可以包括步骤S1001:
[0173] S1001,在接收来自数据发送设备的目标数据包组的过程中,若检测到目标数据包组中存在数据包丢失,则通过冗余恢复处理得到丢失的数据包。
[0174] 其中,数据发送设备发送的目标数据包组包括M个目标数据包,目标数据包组是数据发送设备是将原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接
处理得到的;原始数据包组包括M个原始数据包,原始数据包组是数据发送设备按照目标协
议对待传输的目标业务数据进行封装得到的,通过目标协议封装得到的每个原始数据包均
不支持冗余恢复处理,第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数,M
为正整数。
[0175] 数据接收设备可以接收来自数据发送设备的目标包,并读取目标包的头部和主体;若根据目标包的头部确定目标包为目标数据包组中的目标数据包,则可以确定目标包
的主体为原始数据包组中对应的原始数据包,可以将目标包中的原始数据包拷贝至队列
中;若根据目标包的头部确定目标包为目标数据包组的目标冗余包,则可以确定目标包的
主体为该目标冗余包对应的原始冗余包,可以将目标包中的原始冗余包拷贝到队列中;以
此类推,数据接收设备每接收到一个包,都可以按照上述目标包的处理逻辑进行处理。在这
之后,可以根据队列中包含的原始数据包组中的原始数据包的数量,对目标数据包组进行
丢包检测;若确定目标数据包组中存在数据包丢失,则可以通过冗余恢复处理恢复丢失的
数据包;若确定目标数包组中不存在数据包丢失,则无需进行冗余恢复处理。最后,针对任
一个原始数据包,可以对该原始数据包进行解包头,得到原始数据包中加密的包体,然后可
以采用密钥协商得到的密钥对加密的包体进行解密,并对解密得到的包体进行解包体;针
对原始数据包组,可以按照原始数据包在原始数据包组中的排列位置,对解包体得到的数
据进行排列,重建得到目标业务数据。
[0176] 其中,目标包的头部可以包括格式标识字段、序号字段和类型字段;格式标识字段的取值可以用于标识目标包支持冗余恢复处理或不支持冗余恢复处理,序号字段的取值可
以用于标识目标包所属的数据包组,类型字段的取值可以用于标识目标包的包类型;若格
式标识字段的取值标识目标包支持冗余恢复处理,序号字段的取值标识目标包所属的数据
包组为目标数据包组,且类型字段的取值用于标识目标包的包类型为数据包类型,则可以
确定目标包的主体为原始数据包组中对应的原始数据包;若格式标识字段的取值标识目标
包支持冗余恢复处理,序号字段的取值标识目标包所属的数据包组为目标数据包组,且类
型字段的取值用于标识目标包的包类型为冗余包类型,则可以确定目标包的主体为原始冗
余包。
[0177] 根据队列中包含的原始数据包组中的原始数据包的数量,对目标数据包组进行丢包检测,可以包括:可以获取数据发送设备发送的目标数据包组中的目标数据包的数量M,
数量M可以是从接收到的目标数据包组的目标冗余包的头部读取到的,即目标冗余包的头
部包括数据包数量字段,或者数量M可以是数据发送设备单独发送的;若队列中包含的原始
数据包组中的原始数据包的数量小于数量M,即队列中包含的原始数据包组中的原始数据
包的数量和原始冗余包的数量等于数量M,则可以确定目标数据包组中存在数据包丢失;若
队列中包含的原始数据包组中的原始数据包的数量等于数量M,则可以确定目标数据包组
中不存在数据包丢失。
[0178] 若检测到目标数据包组中存在数据包丢失,则可以获取数据发送设备发送的目标数据包的目标冗余包的数量N,数量N是从接收到的目标数据包组的目标冗余包的头部读取
到的,即目标冗余包的头部包括冗余包数量字段,或者数量N可以是数据发送设备单独发送
的,N为小于或等于M的正整数;可以根据数量N,接收数据发送设备发送的目标数据包的N个
目标冗余包;然后可以根据目标数据包组的N个目标冗余包对丢失的数据包进行冗余恢复
处理,得到丢失的数据包。具体来说,可以读取N个目标冗余包中的每个目标冗余包的主体,
得到N个原始冗余包;针对任一个原始冗余包,可以对该原始冗余包进行解包头,得到原始
冗余包中加密的包体,然后可以采用密钥协商得到的密钥对加密的包体进行解密,并对解
密得到的包体进行解包体,得到对应的冗余数据,然后可以根据N个冗余数据和M个原始数
据包中未丢失的数据包,恢复出丢失的数据包。
[0179] 本申请实施例中,在接收来自数据发送设备的目标数据包组的过程中,若检测到目标数据包组中存在数据包丢失,则数据接收设备可以根据目标数据包组的目标冗余包进
行冗余恢复处理,恢复出丢失的数据包;数据接收设备可以通过冗余恢复处理恢复丢失的
数据包的前提是,目标数据包组中的目标数据包支持冗余恢复处理,而目标数据包组是将
原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理得到的,原始
数据包组中的每个原始数据包均不支持冗余恢复处理,第一冗余恢复参数是指支持冗余恢
复处理的数据包需包含的参数;也就是说,数据接收设备可以直接快速地恢复出丢失的数
据包,无需等待数据发送设备重新传输丢失的数据包,可以降低丢包情况下的传输时延,提
升数据传输效率。
[0180] 基于上述图4‑图10所示实施例的描述,下面结合图11对数据发送设备与数据接收设备之间的数据传输流程进行总结:
[0181] 对于数据发送设备:
[0182] (1)按照MTU指示的目标数据长度对待传输的业务数据进行划分,对划分得到的长度为目标数据长度的数据进行封包体,即将划分得到的长度为目标数据长度的数据作为原
始数据包的包体,然后可以采用与数据接收设备经密钥协商确定的密钥对包体进行加密,
然后可以对加密后的包体封装包头,便可以得到一个原始数据包。
[0183] (2)生成原始数据包后,可以将原始数据包拷贝至队列中,需要注意的是,在将原始数据包拷贝至队列的过程中,可以在原始数据包的头部加2字节的数据包长度字段(size
字段),2字节的size字段的取值用于表示原始数据包的数据包长度。然后,可以为原始数据
包拼接(即封装)FEC头部(即第一冗余恢复参数),得到目标数据包,并将目标数据包发送至
数据接收设备。
[0184] (3)在待传输的业务数据的数据量较大时,若队列中存储的原始数据包的数量达到设置的一组数据包组中需包含的原始数据包的数量,则可以根据一组原始包组中包含的
原始数据包生成N个原始冗余包,然后可以为N个原始冗余包中的每个原始冗余包拼接(即
封装)FEC头部(即第二冗余恢复参数),得到N个目标冗余包,并将N个目标冗余包发送至数
据接收设备。
[0185] 下面结合图12具体说明原始冗余包的生成过程,如图12所示,当前数据包组中包括3个原始数据包,3个原始数据包的数据包长度(Data length)分别为50字节(Byte)、70字
节和100字节,每个原始数据包的头部增加了2个字节的size字段,用于表示数据包长度;可
以获取当前数据包组中的最大数据包长度(max_length)100字节,然后分配内存空间(数据
包的内存空间大小为:max_length×当前数据包组中包含的原始数据包数量,冗余包的内
存空间大小:max_length×当前数据包组的原始冗余包的数量),将原始数据包拷贝至内存
空间中,在拷贝过程中,由于FEC算法(例如Reed‑Solomon Code算法)规定用于进行冗余编
码的各个原始数据包的数据包长度需一致,可以按照max_length对数据包长度不足100字
节的原始数据包进行填充(末尾补零),使得拷贝至内存空间中的当前数据包组中的原始数
据包的数据包长度一致,均为100字节;然后,可以基于FEC算法根据3个原始数据包生成1个
原始冗余包,原始冗余包的长度为100+2=102字节。
[0186] 需要说明的是,如图13所示,本申请实施例在为原始数据包分配内存空间时,可以在头部和尾部多分配几个字节(即保留(Reserver)空间),这样可以在为原始数据包拼接
FEC头部时,直接使用头部的Reserver空间,或者在对原始数据包进行填充时,直接使用尾
部的Reserver空间,这样可以节省分配内存空间和拷贝的次数。类似地,在为原始冗余包分
配内存空间时,可以在头部多分配几个字节(即Reserver空间),这样可以在为原始冗余包
拼接FEC头部时,直接使用头部的Reserver空间,这样可以节省分配内存空间和拷贝的次
数。另外,在使用FEC算法进行冗余编码处理时可以使用CPU SIMD(Central Processing 
Unit Single Instruction Multiple Data,中央处理器单指令多数据流)指令进行冗余编
码加速,提升冗余包的生成效率,整体提升数据传输效率。
[0187] 还需说明的是,在对业务数据进行封装之前,还可以进行流量控制、拥塞控制以及Pacing(调整节奏)处理。其中,流量控制是指为了避免数据包丢失,需控制数据发送设备的
发送速度,使得数据接收设备来得及接收;拥塞控制作用于网络,是指防止过多的数据注入
到网络中,避免出现网络负载过大的情况;Pacing处理是指设置目标频率,使得可以按照该
目标频率封装原始数据包。
[0188] 对于数据接收设备:
[0189] (1)当接收到来自数据发送设备的目标包后,可以对目标包进行解析,解析目标包的FEC头部。若根据FEC头部的类型字段的取值确定目标包为目标数据包,则可以将目标包
的主体,即原始数据包拷贝至队列中,需要注意的是,拷贝时需要在原始数据包的头部加个
2字节的size字段,2字节的size字段用于标识原始数据包的数据包长度。若根据FEC头部的
类型字段的取值确定目标包为目标冗余包,则可以将目标包的主体,即原始冗余包拷贝至
队列中。
[0190] (2)若队列中最近一组数据包组(可以通过FEC头部中的序号字段来判断是否属于同一组数据包组)中的原始数据包的数量,达到设置的数据包组中需包含的原始数据包的
数量(该数量可以通过目标冗余包的FEC头部中的数据包数量字段的取值获得),则可以说
明不存在数据包丢失,不需要恢复,此时可以确定该数据包组中的包的最大序号,若后续接
收到序号小于或等于最大序号的包则丢弃,并删除队列中存储的原始数据包和原始冗余
包。
[0191] (3)若队列中最近一组数据包组(可以通过FEC头部中的序号字段来判断是否属于同一组数据包组)中的原始数据包的数量,未达到设置的数据包组中需包含的原始数据包
的数量(该数量可以通过目标冗余包的FEC头部中的数据包数量字段的取值获得),例如,最
近一组数据包组中的原始数据包的数量和原始冗余包的数量之和,等于设置的数据包组中
需包含的原始数据包的数量,则确定存在数据包丢失,可以根据原始冗余包恢复出丢失的
原始数据包。
[0192] (4)对于未丢失的原始数据包,通过解包头、解密、解包体,可以得到原始数据包中封装的数据;对于恢复出的原始数据包,可以去掉尾部填充的零值和size字段,再通过解包
头、解密、解包体,可以得到原始数据包中封装的数据。然后可以按照序号字段的取值指示
的排列位置,重建业务数据。
[0193] 本申请实施例中,FEC头部是指支持冗余恢复处理的数据包需包含的内容,通过将不支持冗余恢复处理的原始数据包与对应的FEC头部进行拼接处理,使得拼接处理得到的
目标数据包支持冗余恢复处理,从而当目标数据包在传输至数据接收设备的过程中发生数
据包丢失时,数据接收设备可以通过冗余恢复处理快速恢复出丢失的数据包,这样可以降
低丢包情况下的传输时延,从而提升数据传输效率。
[0194] 上述详细阐述了本申请实施例的方法,为了便于更好地实施本申请实施例的上述方案,相应地,下面提供了本申请实施例的装置。
[0195] 请参见图14,图14是本申请实施例提供的一种数据处理装置的结构示意图,该数据处理装置可以设置于本申请实施例提供的计算机设备中,计算机设备可以是上述方法实
施例中提及的数据发送设备(即数据发送方)。图14所示的数据处理装置可以是运行于计算
机设备中的一个计算机程序(包括程序代码),该数据处理装置可以用于执行图4或图7所示
的方法实施例中的部分或全部步骤。请参见图14,该数据处理装置可以包括如下单元:
[0196] 获取单元1401,用于获取原始数据包组,原始数据包组包括M个原始数据包,M个原始数据包是按照目标协议对待传输的目标业务数据进行封装得到的,通过目标协议封装得
到的每个原始数据包均不支持冗余恢复处理,M为正整数;获取原始数据包组中的每个原始
数据包各自对应的第一冗余恢复参数,第一冗余恢复参数是指支持冗余恢复处理的数据包
需包含的参数;
[0197] 处理单元1402,用于将原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,得到目标数据包组,目标数据包组包括M个目标数据包;将目标数据包
组发送至数据接收设备,以使数据接收设备在检测到目标数据包组中存在数据包丢失时,
通过冗余恢复处理得到丢失的数据包。
[0198] 在一种实现方式中,处理单元1402,用于将原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,得到目标数据包组时,具体用于执行如下步骤:
[0199] 针对原始数据包组中的第m个原始数据包,生成第m个原始数据包对应的第m个数据包体,第m个数据包体包括头部和主体,m为小于或等于M的正整数;将第m个原始数据包对
应的第一冗余恢复参数添加至第m个数据包体的头部,将第m个原始数据包添加至第m个数
据包体的主体,得到第m个原始数据包对应的第m个目标数据包。
[0200] 在一种实现方式中,第m个原始数据包对应的第一冗余恢复参数包括格式标识参数,第m个数据包体的头部包括格式标识字段;处理单元1402,用于将第m个原始数据包对应
的第一冗余恢复参数添加至第m个数据包体的头部时,具体用于执行如下步骤:
[0201] 将格式标识参数添加至格式标识字段中,格式标识参数用于标识第m个目标数据包支持冗余恢复处理。
[0202] 在一种实现方式中,第m个原始数据包对应的第一冗余恢复参数还包括序号参数或类型参数中的任意一种或两种;第m个数据包体的头部还包括序号字段或类型字段中的
任意一种或两种;处理单元1402,用于将第m个原始数据包对应的第一冗余恢复参数添加至
第m个数据包体的头部时,还用于执行如下步骤:
[0203] 在第m个原始数据包对应的第一冗余处理参数还包括序号参数、且第m个数据包体的头部还包括序号字段时,将序号参数添加至序号字段中,序号参数用于标识第m个目标数
据包属于目标数据包组;在第m个原始数据包对应的第一冗余处理参数还包括类型参数、且
第m个数据包体的头部还包括类型字段时,将类型参数添加至类型字段中,类型参数用于标
识第m个目标数据包的包类型为数据包类型。
[0204] 在一种实现方式中,处理单元1402,还用于执行如下步骤:
[0205] 生成目标数据包组的N个目标冗余包,N为小于或等于M的正整数;将N个目标冗余包发送至数据接收设备,以使数据接收设备根据N个目标冗余包进行冗余恢复处理,得到丢
失的数据包。
[0206] 在一种实现方式中,处理单元1402,用于生成目标数据包组的N个目标冗余包时,具体用于执行如下步骤:
[0207] 根据M个原始数据包生成N个原始冗余包;获取N个原始冗余包中的每个原始冗余包各自对应的第二冗余恢复参数;将N个原始冗余包中的每个原始冗余包与对应的第二冗
余恢复参数进行拼接处理,得到N个目标冗余包,第二冗余恢复参数是指支持冗余恢复处理
的冗余包需包含的参数。
[0208] 在一种实现方式中,处理单元1402,用于将N个原始冗余包中的每个原始冗余包与对应的第二冗余恢复参数进行拼接处理,得到N个目标冗余包时,具体用于执行如下步骤:
[0209] 针对N个原始冗余包中的第n个原始冗余包,生成第n个原始冗余包对应的第n个冗余包体,第n个冗余包体包括头部和主体,n为小于或等于N的正整数;将第n个原始冗余包对
应的第二冗余恢复参数添加至第n个冗余包体的头部,将第n个原始冗余包添加至第n个冗
余包体的主体,得到第n个原始冗余包对应的第n个目标冗余包。
[0210] 在一种实现方式中,第n个原始冗余包对应的第二冗余恢复参数包括格式标识参数,第n个冗余包体的头部包括格式标识字段;处理单元1402,用于将第n个原始冗余包对应
的第二冗余恢复参数添加至第n个冗余包体的头部时,具体用于执行如下步骤:
[0211] 将格式标识参数添加至格式标识字段中,格式标识参数用于标识第n个目标冗余包支持冗余恢复处理。
[0212] 在一种实现方式中,第n个原始冗余包对应的第二冗余恢复参数还包括以下至少一种:序号参数、类型参数、数据包数量参数、以及冗余包数量参数;第n个冗余包体的头部
还包括以下至少一个字段:序号字段、类型字段、数据包数量字段、以及冗余包数量字段;处
理单元1402,用于将第n个原始冗余包对应的第二冗余恢复参数添加至第n个冗余包体的头
部时,还用于执行如下步骤:
[0213] 在第n个原始冗余包对应的第二冗余恢复参数还包括序号参数、且第n个冗余包体的头部还包括序号字段时,将序号参数添加至序号字段中,序号参数用于标识第n个目标冗
余包为目标数据包组的冗余包;在第n个原始冗余包对应的第二冗余恢复参数还包括类型
参数、且第n个冗余包体的头部还包括类型字段时,将类型参数添加至类型字段中,类型参
数用于标识第n个目标冗余包的包类型为冗余包类型;在第n个原始冗余包对应的第二冗余
恢复参数还包括数据包数量参数、且第n个冗余包体的头部还包括数据包数量字段时,将数
据包数量参数添加至数据包数量字段中,数据包数量参数用于标识目标数据包组中包含的
目标数据包的数量M;在第n个原始冗余包对应的第二冗余恢复参数还包括冗余包数量参
数、且第n个冗余包体的头部还包括冗余包数量字段时,将冗余包数量参数添加至冗余包数
量字段中,冗余包数量参数用于标识目标数据包组的目标冗余包的数量N。
[0214] 在一种实现方式中,原始数据包组被设置需包括X个原始数据包,X为正整数;处理单元1402,还用于执行如下步骤:比较M与X之间的大小关系;根据M与X之间的大小关系,确
定N个目标冗余包的生成时间;
[0215] 处理单元1402,用于生成目标数据包组的N个目标冗余包时,具体用于执行如下步骤:按照确定的生成时间,生成目标数据包组的N个目标冗余包。
[0216] 在一种实现方式中,处理单元1402,用于根据M与X之间的大小关系,确定N个目标冗余包的生成时间时,具体用于执行如下步骤:
[0217] 若M等于X,则将封装得到M个原始数据包的时间确定为N个目标冗余包的生成时间;若M小于X,则将确定M个目标数据包中的最后一个目标数据包发送超时的时间,确定为N
个目标冗余包的生成时间;其中,最后一个目标数据包发送超时是指:最后一个目标数据包
发送目标时段后,未收到数据接收设备发送的确认帧。
[0218] 在一种实现方式中,处理单元1402,还用于执行如下步骤:
[0219] 与数据接收设备进行密钥协商,得到密钥,密钥用于在封装M个原始数据包的过程中进行加密;在与数据接收设备的密钥协商过程中,对数据接收设备的冗余恢复能力进行
检测;若确定数据接收设备具备所述冗余恢复能力,则触发执行获取原始数据包组的步骤。
[0220] 根据本申请的另一个实施例,图14所示的数据处理装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功
能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效
果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个
单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,数据处理装
置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由
多个单元协作实现。
[0221] 根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运
行能够执行如图4或图7所示的部分或全部方法所涉及的各步骤的计算机程序(包括程序代
码),来构造如图14中所示的数据处理装置,以及来实现本申请实施例的数据处理方法。计
算机程序可以记载于例如计算机可读存储介质上,并通过计算机可读存储介质装载于上述
计算设备中,并在其中运行。
[0222] 本申请实施例中,第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数,原始数据包组中的每个原始数据包均不支持冗余恢复处理,数据发送设备通过将原始
数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,可以使得拼接处
理得到的目标数据包组中的每个目标数据包均支持冗余恢复处理,从而,当目标数据包组
在传输至数据接收设备的过程中发生数据包丢失时,数据接收设备可以通过冗余恢复处理
快速恢复出丢失的数据包,数据发送设备无需重新传输丢失的数据包,这样可以降低丢包
情况下的传输时延,提升数据传输效率。
[0223] 请参见图15,图15是本申请实施例提供的另一种数据处理装置的结构示意图,该数据处理装置可以设置于本申请实施例提供的计算机设备中,计算机设备可以是上述方法
实施例中提及的数据接收设备(即数据接收方)。图15所示的数据处理装置可以是运行于计
算机设备中的一个计算机程序(包括程序代码),该数据处理装置可以用于执行图10所示的
方法实施例中的部分或全部步骤。请参见图15,该数据处理装置可以包括如下单元:
[0224] 处理单元1501,用于在接收来自数据发送设备的目标数据包组的过程中,若检测到目标数据包组中存在数据包丢失,则通过冗余恢复处理得到丢失的数据包;其中,数据发
送设备发送的目标数据包组包括M个目标数据包,目标数据包组是数据发送设备将原始数
据包组中的每个原始数据包与对应的第一冗余参数进行拼接处理得到的;原始数据包组包
括M个原始数据包,原始数据包组是数据发送设备按照目标协议对待传输的目标业务数据
进行封装得到的,通过目标协议封装得到的每个原始数据包均不支持冗余恢复处理,第一
冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数,M为正整数。
[0225] 在一种实现方式中,接收单元1502,还用于执行如下步骤:接收来自数据发送设备的目标包,并读取目标包的头部和主体;
[0226] 处理单元1501,还用于执行如下步骤:若根据目标包的头部确定目标包为所述目标数据包组中的目标数据包,则确定目标包的主体为原始数据包组中对应的原始数据包,
将目标包中的原始数据包拷贝至队列中;根据队列中包含的原始数据包组中的原始数据包
的数量,对目标数据包组进行丢包检测。
[0227] 在一种实现方式中,目标包的头部包括格式标识字段、序号字段和类型字段;格式标识字段的取值用于标识目标包支持冗余恢复处理或不支持冗余恢复处理,序号字段的取
值用于标识目标包所属的数据包组,类型字段的取值用于标识目标包的包类型;处理单元
1501,还用于执行如下步骤:
[0228] 若格式标识字段的取值标识目标包支持冗余恢复处理,序号字段的取值标识目标包所属的数据包组为目标数据包组,且类型字段的取值标识目标包的包类型为数据包类
型,则确定目标包为目标数据包组中的目标数据包。
[0229] 在一种实现方式中,处理单元1501,用于根据队列中包含的原始数据包组中的原始数据包的数量,对目标数据包组进行丢包检测时,具体用于执行如下步骤:
[0230] 获取数据发送设备发送的目标数据包组中的目标数据包的数量M,数量M是从接收到的目标数据包组的目标冗余包的头部的数据包数量字段中读取到的;若队列中包含的原
始数据包组中的原始数据包的数量小于数量M,则确定目标数据包组中存在数据包丢失。
[0231] 在一种实现方式中,处理单元1501,用于通过冗余恢复处理得到丢失的数据包时,具体用于执行如下步骤:
[0232] 获取数据发送设备发送的目标数据包的目标冗余包的数量N,数量N是从接收到的目标数据包组的目标冗余包的头部的冗余包数量字段中读取到的,N为小于或等于M的正整
数;根据数量N,接收数据发送设备发送的目标数据包组的N个目标冗余包;根据N个目标冗
余包对丢失的数据包进行冗余恢复处理,得到丢失的数据包。
[0233] 根据本申请的另一个实施例,图15所示的数据处理装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功
能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效
果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个
单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,数据处理装
置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由
多个单元协作实现。
[0234] 根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运
行能够执行如图10所示的部分或全部方法所涉及的各步骤的计算机程序(包括程序代码),
来构造如图15中所示的数据处理装置,以及来实现本申请实施例的数据处理方法。计算机
程序可以记载于例如计算机可读存储介质上,并通过计算机可读存储介质装载于上述计算
设备中,并在其中运行。
[0235] 本申请实施例中,在接收来自数据发送设备的目标数据包组的过程中,若检测到目标数据包组中存在数据包丢失,则数据接收设备可以通过冗余恢复处理恢复出丢失的数
据包;数据接收设备可以通过冗余恢复处理恢复丢失的数据包的前提是,目标数据包组中
的目标数据包支持冗余恢复处理,而目标数据包组是将原始数据包组中的每个原始数据包
与对应的第一冗余恢复参数进行拼接处理得到的,原始数据包组中的每个原始数据包均不
支持冗余恢复处理,第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数;也
就是说,数据接收设备可以直接快速地恢复出丢失的数据包,无需等待数据发送设备重新
传输丢失的数据包,可以降低丢包情况下的传输时延,提升数据传输效率。
[0236] 基于上述方法以及装置实施例,本申请实施例提供了一种计算机设备,该计算机设备可以是前述所提及的数据发送设备(即数据发送方)。请参见图16,图16是本申请实施
例提供的一种计算机设备的结构示意图。图16所示的计算机设备至少包括处理器1601、输
入接口1602、输出接口1603以及计算机可读存储介质1604。其中,处理器1601、输入接口
1602、输出接口1603以及计算机可读存储介质1604可通过总线或其他方式连接。
[0237] 计算机可读存储介质1604可以存储在计算机设备的存储器中,计算机可读存储介质1604用于存储计算机程序,计算机程序包括计算机指令,处理器1601用于执行计算机可
读存储介质1604存储的程序指令。处理器1601(或称CPU(Central Processing Unit,中央
处理器))是计算机设备的计算核心以及控制核心,其适于实现一条或多条计算机指令,具
体适于加载并执行一条或多条计算机指令从而实现相应方法流程或相应功能。
[0238] 本申请实施例还提供了一种计算机可读存储介质(Memory),计算机可读存储介质是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储
介质既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备支持的扩展存
储介质。计算机可读存储介质提供存储空间,该存储空间存储了计算机设备的操作系统。并
且,在该存储空间中还存放了适于被处理器加载并执行的一条或多条的计算机指令,这些
计算机指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的
计算机可读存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(Non‑Volatile 
Memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算
机可读存储介质。
[0239] 在一些实施例中,可由处理器1601加载并执行计算机可读存储介质1604中存放的一条或多条计算机指令,以实现上述有关图4或图7所示的数据处理方法的相应步骤。具体
实现中,计算机可读存储介质1604中的计算机指令由处理器1601加载并执行如下步骤:
[0240] 获取原始数据包组,原始数据包组包括M个原始数据包,M个原始数据包是按照目标协议对待传输的目标业务数据进行封装得到的,通过目标协议封装得到的每个原始数据
包均不支持冗余恢复处理,M为正整数;获取原始数据包组中的每个原始数据包各自对应的
第一冗余恢复参数,第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数;将
原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,得到目标数
据包组,目标数据包组包括M个目标数据包;将目标数据包组发送至数据接收设备,以使数
据接收设备在检测到目标数据包组中存在数据包丢失时,通过冗余恢复处理得到丢失的数
据包。
[0241] 在一种实现方式中,计算机可读存储介质1604中的计算机指令由处理器1601加载并执行将原始数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,得
到目标数据包组时,具体用于执行如下步骤:
[0242] 针对原始数据包组中的第m个原始数据包,生成第m个原始数据包对应的第m个数据包体,第m个数据包体包括头部和主体,m为小于或等于M的正整数;将第m个原始数据包对
应的第一冗余恢复参数添加至第m个数据包体的头部,将第m个原始数据包添加至第m个数
据包体的主体,得到第m个原始数据包对应的第m个目标数据包。
[0243] 在一种实现方式中,第m个原始数据包对应的第一冗余恢复参数包括格式标识参数,第m个数据包体的头部包括格式标识字段;计算机可读存储介质1604中的计算机指令由
处理器1601加载并执行将第m个原始数据包对应的第一冗余恢复参数添加至第m个数据包
体的头部时,具体用于执行如下步骤:
[0244] 将格式标识参数添加至格式标识字段中,格式标识参数用于标识第m个目标数据包支持冗余恢复处理。
[0245] 在一种实现方式中,第m个原始数据包对应的第一冗余恢复参数还包括序号参数或类型参数中的任意一种或两种;第m个数据包体的头部还包括序号字段或类型字段中的
任意一种或两种;计算机可读存储介质1604中的计算机指令由处理器1601加载并执行将第
m个原始数据包对应的第一冗余恢复参数添加至第m个数据包体的头部时,还用于执行如下
步骤:
[0246] 在第m个原始数据包对应的第一冗余处理参数还包括序号参数、且第m个数据包体的头部还包括序号字段时,将序号参数添加至序号字段中,序号参数用于标识第m个目标数
据包属于目标数据包组;在第m个原始数据包对应的第一冗余处理参数还包括类型参数、且
第m个数据包体的头部还包括类型字段时,将类型参数添加至类型字段中,类型参数用于标
识第m个目标数据包的包类型为数据包类型。
[0247] 在一种实现方式中,计算机可读存储介质1604中的计算机指令由处理器1601加载并还用于执行如下步骤:
[0248] 生成目标数据包组的N个目标冗余包,N为小于或等于M的正整数;将N个目标冗余包发送至数据接收设备,以使数据接收设备根据N个目标冗余包进行冗余恢复处理,得到丢
失的数据包。
[0249] 在一种实现方式中,计算机可读存储介质1604中的计算机指令由处理器1601加载并执行生成目标数据包组的N个目标冗余包时,具体用于执行如下步骤:
[0250] 根据M个原始数据包生成N个原始冗余包;获取N个原始冗余包中的每个原始冗余包各自对应的第二冗余恢复参数;将N个原始冗余包中的每个原始冗余包与对应的第二冗
余恢复参数进行拼接处理,得到N个目标冗余包,第二冗余恢复参数是指支持冗余恢复处理
的冗余包需包含的参数。
[0251] 在一种实现方式中,计算机可读存储介质1604中的计算机指令由处理器1601加载并执行将N个原始冗余包中的每个原始冗余包与对应的第二冗余恢复参数进行拼接处理,
得到N个目标冗余包时,具体用于执行如下步骤:
[0252] 针对N个原始冗余包中的第n个原始冗余包,生成第n个原始冗余包对应的第n个冗余包体,第n个冗余包体包括头部和主体,n为小于或等于N的正整数;将第n个原始冗余包对
应的第二冗余恢复参数添加至第n个冗余包体的头部,将第n个原始冗余包添加至第n个冗
余包体的主体,得到第n个原始冗余包对应的第n个目标冗余包。
[0253] 在一种实现方式中,第n个原始冗余包对应的第二冗余恢复参数包括格式标识参数,第n个冗余包体的头部包括格式标识字段;计算机可读存储介质1604中的计算机指令由
处理器1601加载并执行将第n个原始冗余包对应的第二冗余恢复参数添加至第n个冗余包
体的头部时,具体用于执行如下步骤:
[0254] 将格式标识参数添加至格式标识字段中,格式标识参数用于标识第n个目标冗余包支持冗余恢复处理。
[0255] 在一种实现方式中,第n个原始冗余包对应的第二冗余恢复参数还包括以下至少一种:序号参数、类型参数、数据包数量参数、以及冗余包数量参数;第n个冗余包体的头部
还包括以下至少一个字段:序号字段、类型字段、数据包数量字段、以及冗余包数量字段;计
算机可读存储介质1604中的计算机指令由处理器1601加载并执行将第n个原始冗余包对应
的第二冗余恢复参数添加至第n个冗余包体的头部时,还用于执行如下步骤:
[0256] 在第n个原始冗余包对应的第二冗余恢复参数还包括序号参数、且第n个冗余包体的头部还包括序号字段时,将序号参数添加至序号字段中,序号参数用于标识第n个目标冗
余包为目标数据包组的冗余包;在第n个原始冗余包对应的第二冗余恢复参数还包括类型
参数、且第n个冗余包体的头部还包括类型字段时,将类型参数添加至类型字段中,类型参
数用于标识第n个目标冗余包的包类型为冗余包类型;在第n个原始冗余包对应的第二冗余
恢复参数还包括数据包数量参数、且第n个冗余包体的头部还包括数据包数量字段时,将数
据包数量参数添加至数据包数量字段中,数据包数量参数用于标识目标数据包组中包含的
目标数据包的数量M;在第n个原始冗余包对应的第二冗余恢复参数还包括冗余包数量参
数、且第n个冗余包体的头部还包括冗余包数量字段时,将冗余包数量参数添加至冗余包数
量字段中,冗余包数量参数用于标识目标数据包组的目标冗余包的数量N。
[0257] 在一种实现方式中,原始数据包组被设置需包括X个原始数据包,X为正整数;计算机可读存储介质1604中的计算机指令由处理器1601加载并还用于执行如下步骤:比较M与X
之间的大小关系;根据M与X之间的大小关系,确定N个目标冗余包的生成时间;
[0258] 计算机可读存储介质1604中的计算机指令由处理器1601加载并执行生成目标数据包组的N个目标冗余包时,具体用于执行如下步骤:按照确定的生成时间,生成目标数据
包组的N个目标冗余包。
[0259] 在一种实现方式中,计算机可读存储介质1604中的计算机指令由处理器1601加载并执行根据M与X之间的大小关系,确定N个目标冗余包的生成时间时,具体用于执行如下步
骤:
[0260] 若M等于X,则将封装得到M个原始数据包的时间确定为N个目标冗余包的生成时间;若M小于X,则将确定M个目标数据包中的最后一个目标数据包发送超时的时间,确定为N
个目标冗余包的生成时间;其中,最后一个目标数据包发送超时是指:最后一个目标数据包
发送目标时段后,未收到数据接收设备发送的确认帧。
[0261] 在一种实现方式中,计算机可读存储介质1604中的计算机指令由处理器1601加载并还用于执行如下步骤:
[0262] 与数据接收设备进行密钥协商,得到密钥,密钥用于在封装M个原始数据包的过程中进行加密;在与数据接收设备的密钥协商过程中,对数据接收设备的冗余恢复能力进行
检测;若确定数据接收设备具备所述冗余恢复能力,则触发执行获取原始数据包组的步骤。
[0263] 本申请实施例中,第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数,原始数据包组中的每个原始数据包均不支持冗余恢复处理,数据发送设备通过将原始
数据包组中的每个原始数据包与对应的第一冗余恢复参数进行拼接处理,可以使得拼接处
理得到的目标数据包组中的每个目标数据包均支持冗余恢复处理,从而,当目标数据包组
在传输至数据接收设备的过程中发生数据包丢失时,数据接收设备可以通过冗余恢复处理
快速恢复出丢失的数据包,数据发送设备无需重新传输丢失的数据包,这样可以降低丢包
情况下的传输时延,提升数据传输效率。
[0264] 本申请实施例提供了一种计算机设备,该计算机设备可以是前述所提及的数据接收设备(即数据接收方)。请参见图16,图16是本申请实施例提供的一种计算机设备的结构
示意图。图16所示的计算机设备至少包括处理器1601、输入接口1602、输出接口1603以及计
算机可读存储介质1604。其中,处理器1601、输入接口1602、输出接口1603以及计算机可读
存储介质1604可通过总线或其他方式连接。
[0265] 计算机可读存储介质1604可以存储在计算机设备的存储器中,计算机可读存储介质1604用于存储计算机程序,计算机程序包括计算机指令,处理器1601用于执行计算机可
读存储介质1604存储的程序指令。处理器1601(或称CPU(Central Processing Unit,中央
处理器))是计算机设备的计算核心以及控制核心,其适于实现一条或多条计算机指令,具
体适于加载并执行一条或多条计算机指令从而实现相应方法流程或相应功能。
[0266] 本申请实施例还提供了一种计算机可读存储介质(Memory),计算机可读存储介质是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储
介质既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备支持的扩展存
储介质。计算机可读存储介质提供存储空间,该存储空间存储了计算机设备的操作系统。并
且,在该存储空间中还存放了适于被处理器加载并执行的一条或多条的计算机指令,这些
计算机指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的
计算机可读存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(Non‑Volatile 
Memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算
机可读存储介质。
[0267] 在一些实施例中,可由处理器1601加载并执行计算机可读存储介质1604中存放的一条或多条计算机指令,以实现上述有关图10所示的数据处理方法的相应步骤。具体实现
中,计算机可读存储介质1604中的计算机指令由处理器1601加载并执行如下步骤:
[0268] 在接收来自数据发送设备的目标数据包组的过程中,若检测到目标数据包组中存在数据包丢失,则通过冗余恢复处理得到丢失的数据包;其中,数据发送设备发送的目标数
据包组包括M个目标数据包,目标数据包组是数据发送设备将原始数据包组中的每个原始
数据包与对应的第一冗余参数进行拼接处理得到的;原始数据包组包括M个原始数据包,原
始数据包组是数据发送设备按照目标协议对待传输的目标业务数据进行封装得到的,通过
目标协议封装得到的每个原始数据包均不支持冗余恢复处理,第一冗余恢复参数是指支持
冗余恢复处理的数据包需包含的参数,M为正整数。
[0269] 在一种实现方式中,计算机可读存储介质1604中的计算机指令由处理器1601加载并还用于执行如下步骤:接收来自数据发送设备的目标包,并读取目标包的头部和主体;若
根据目标包的头部确定目标包为所述目标数据包组中的目标数据包,则确定目标包的主体
为原始数据包组中对应的原始数据包,将目标包中的原始数据包拷贝至队列中;根据队列
中包含的原始数据包组中的原始数据包的数量,对目标数据包组进行丢包检测。
[0270] 在一种实现方式中,目标包的头部包括格式标识字段、序号字段和类型字段;格式标识字段的取值用于标识目标包支持冗余恢复处理或不支持冗余恢复处理,序号字段的取
值用于标识目标包所属的数据包组,类型字段的取值用于标识目标包的包类型;计算机可
读存储介质1604中的计算机指令由处理器1601加载并还用于执行如下步骤:
[0271] 若格式标识字段的取值标识目标包支持冗余恢复处理,序号字段的取值标识目标包所属的数据包组为目标数据包组,且类型字段的取值标识目标包的包类型为数据包类
型,则确定目标包为目标数据包组中的目标数据包。
[0272] 在一种实现方式中,计算机可读存储介质1604中的计算机指令由处理器1601加载并执行根据队列中包含的原始数据包组中的原始数据包的数量,对目标数据包组进行丢包
检测时,具体用于执行如下步骤:
[0273] 获取数据发送设备发送的目标数据包组中的目标数据包的数量M,数量M是从接收到的目标数据包组的目标冗余包的头部的数据包数量字段中读取到的;若队列中包含的原
始数据包组中的原始数据包的数量小于数量M,则确定目标数据包组中存在数据包丢失。
[0274] 在一种实现方式中,计算机可读存储介质1604中的计算机指令由处理器1601加载并执行通过冗余恢复处理得到丢失的数据包时,具体用于执行如下步骤:
[0275] 获取数据发送设备发送的目标数据包的目标冗余包的数量N,数量N是从接收到的目标数据包组的目标冗余包的头部的冗余包数量字段中读取到的,N为小于或等于M的正整
数;根据数量N,接收数据发送设备发送的目标数据包组的N个目标冗余包;根据N个目标冗
余包对丢失的数据包进行冗余恢复处理,得到丢失的数据包。
[0276] 本申请实施例中,在接收来自数据发送设备的目标数据包组的过程中,若检测到目标数据包组中存在数据包丢失,则数据接收设备可以通过冗余恢复处理恢复出丢失的数
据包;数据接收设备可以通过冗余恢复处理恢复丢失的数据包的前提是,目标数据包组中
的目标数据包支持冗余恢复处理,而目标数据包组是将原始数据包组中的每个原始数据包
与对应的第一冗余恢复参数进行拼接处理得到的,原始数据包组中的每个原始数据包均不
支持冗余恢复处理,第一冗余恢复参数是指支持冗余恢复处理的数据包需包含的参数;也
就是说,数据接收设备可以直接快速地恢复出丢失的数据包,无需等待数据发送设备重新
传输丢失的数据包,可以降低丢包情况下的传输时延,提升数据传输效率。
[0277] 根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算
机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使
得该计算机设备执行上述各种可选方式中提供的数据处理方法。
[0278] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵
盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。