一种丢包重传方法、装置及系统与流程

文档序号:14942711发布日期:2018-07-13 21:26阅读:138来源:国知局

本公开涉及数据传输领域,尤其涉及一种丢包重传方法、装置及系统。



背景技术:

随着视频传输技术的发展,目前大多数视频流是通过ip网络进行传输,ip网络数据传输方式包括:单播传输、广播传输和组播传输,具体采用何种传输方式主要根据应用场景进行选择。当应用场景为一个发送设备和多个接收设备时,可采用组播进行数据传输。但是,数据在传输过程中,在一定概率上会出现丢包情况,而且丢失的数据包难易补充修复,导致接收设备播放视频时出现马赛克或卡顿的情况,影响用户体验。



技术实现要素:

本公开实施例提供一种丢包重传方法、装置及系统,能够解决现有组播丢包无法重传的问题。所述技术方案如下:

根据本公开实施例的第一方面,提供一种丢包重传方法,该方法包括:

接收发送设备通过组播链路发送的数据包,并存储至接收队列中;

检测接收队列中的数据包是否连续;

当检测到接收队列中的数据包不连续时,通过单播链路发送重传请求给发送设备,重传请求中包括重传数据包的标识;

接收发送设备通过单播链路发送的重传数据包。

该方法通过组播链路进行数据包的接收,并通过单播链路进行重传数据包的请求和发送,实现对丢失数据包的重传,解决现有组播丢包无法重传的问题,提高用户体验。

在一个实施例中,数据包中包含数据包的序列号;

检测接收队列中的数据包是否连续包括:检测接收队列中数据包的序列号是否连续。

通过对序列号的检测,能够方便的检测到缺失的数据包,即需要重传的数据包。

在一个实施例中,当检测到接收队列中的数据包不连续时,通过单播链路发送重传请求给发送设备包括:

当检测到接收队列中的数据包不连续时,建立与发送设备之间的单播链路;

通过单播链路发送重传请求给发送设备。

在检测到接收队列的数据包不连续的情况下,再建立单播链路,能够提高链路利用率,避免单播链路建立后一段时间内或长期不使用的链路冗余。

根据本公开实施例的第二方面,提供一种丢包重传方法,包括:

通过组播链路将数据包发送给至少两个接收设备;

接收第一接收设备通过第一单播链路发送的重传请求,重传请求中包括重传数据包的标识;

根据重传请求,从暂存队列中获取重传数据包,暂存队列用于存储发送设备已发送的数据包;

将重传数据包通过第一单播链路发送给第一接收设备。

通过组播链路进行数据包的发送,并通过单播链路进行重传数据包的请求和发送,实现对丢失数据包的重传,解决现有组播丢包无法重传的问题,提高用户体验。

在一个实施例中,通过组播链路将数据包发送给至少两个接收设备之前,方法还包括:

建立与至少两个接收设备的组播链路;

建立与每个接收设备对应的单播链路。

在一个实施例中,通过组播链路将数据包发送给至少两个接收设备之后,该方法还包括:将已发送的数据包存储至暂存队列中。

通过保存已发送的数据包,便于在接收到重传请求时,能够从已发送的数据包中找到需要重传的数据包,易于寻找,提高查找效率。

根据本公开实施例的第三方面,提供一种接收设备,包括:

接收模块,用于接收发送设备通过组播链路发送的数据包;

存储模块,用于将数据包存储至接收队列中;

检测模块,用于检测接收队列中的数据包是否连续;

发送模块,用于当检测到接收队列中的数据包不连续时,通过单播链路发送重传请求给发送设备,重传请求中包括重传数据包的标识;

接收模块,用于接收发送设备通过单播链路发送的重传数据包。

在一个实施例中,数据包中包含数据包的序列号;

检测模块,用于检测接收队列中数据包的序列号是否连续。

在一个实施例中,接收设备还包括:建立模块;

建立模块,用于当检测模块检测到接收队列中的数据包不连续时,建立与发送设备之间的单播链路;

发送模块,用于通过单播链路发送重传请求给发送设备。

根据本公开实施例的第四方面,提供一种发送设备,包括:

发送模块,用于通过组播链路将数据包发送给至少两个接收设备;

接收模块,用于接收第一接收设备通过第一单播链路发送的重传请求,重传请求中包括重传数据包的标识;

获取模块,用于根据重传请求,从暂存队列中获取重传数据包,暂存队列用于存储发送设备已发送的数据包;

发送模块,用于将重传数据包通过第一单播链路发送给第一接收设备。

在一个实施例中,发送设备还包括:建立模块;

建立模块,用于建立与至少两个接收设备的组播链路,以及建立与每个接收设备对应的单播链路。

在一个实施例中,发送设备还包括:存储模块;

存储模块,用于将已发送的数据包存储至暂存队列中。

根据本公开实施例的第五方面,提供一种丢包重传系统,包括:第三方面及第三方面中任一实施例所描述的至少两个接收设备、以及第四方面及第四方面中任一实施例所描述的发送设备。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1是本公开实施例提供的一种丢包重传方法的流程图;

图2是本公开实施例提供的一种丢包重传方法的流程图;

图3是本公开实施例提供的一种丢包重传方法的应用场景示意图;

图4是本公开实施例提供的一种视频发送设备和视频接收设备的示意图;

图5是本公开实施例提供的一种接收设备的结构图;

图6是本公开实施例提供的一种接收设备的结构图;

图7是本公开实施例提供的一种发送设备的结构图;

图8是本公开实施例提供的一种发送设备的结构图;

图9是本公开实施例提供的一种发送设备的结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

本公开实施例提供一种丢包重传方法,该方法应用于接收设备,如图1所示,该丢包重传方法包括以下步骤:

101、接收发送设备通过组播链路发送的数据包,并存储至接收队列中。

本公开实施例的执行主体为接收设备,接收设备在接收发送设备发送的数据之前,建立与发送设备的组播链路,通过组播链路接收发送设备发送的数据,并存储至接收队列中。

102、检测接收队列中的数据包是否连续。

在一个实施例中,接收设备接收的数据包中包含数据包的序列号,那么,检测接收队列中的数据包是否连续包括:检测接收队列中数据包的序列号是否连续。当检测到接收队列中数据包的序列号连续时,意味着接收设备对发送设备发送的数据包全部接收,没有出现丢包现象;当检测到接收队列中数据包的序列号不连续时,意味着接收设备未对发送设备发送的数据包全部接收,出现丢包现象,则继续执行步骤103。

103、当检测到接收队列中的数据包不连续时,通过单播链路发送重传请求给发送设备。

当检测到接收队列中数据包的序列号不连续时,意味着出现丢包现象,此时,建立接收设备与发送设备之间的单播链路,通过该单播链路将重传请求发送给发送设备,重传请求中包括重传数据包的标识。当然,也可以是在建立该接收设备与发送设备之间的组播链路的同时,建立该接收设备与发送设置之间的单播链路,这样,当检测到接收队列中的数据包不连续时,直接通过对应的单播链路将重传请求发送给发送设备。

104、接收发送设备通过单播链路发送的重传数据包。

本公开实施例提供的丢包重传方法,接收发送设备通过组播链路发送的数据包,并存储至接收队列中,检测接收队列中的数据包是否连续,当检测到接收队列中的数据包不连续时,通过单播链路发送重传请求给发送设备,重传请求中包括重传数据包的标识,接收发送设备通过单播链路发送的重传数据包。该方法通过组播链路进行数据包的接收,并通过单播链路进行重传数据包的请求和发送,实现对丢失数据包的重传,解决了现有组播丢包无法重传的问题,提高用户体验。

本公开实施例提供一种丢包重传方法,该方法应用于发送设备,如图2所示,该丢包重传方法包括以下步骤:

201、通过组播链路发送数据包给至少两个接收设备。

在步骤201之前,发送设备建立与至少两个接收设备的组播链路,同时,发送设备建立与每个接收设备对应的单播链路,也就是说,每个接收设备与发送设备之间有一对一的单播链路。其中,组播链路用于发送设备发送数据包给至少两个接收设备,同时,发送设备将已发送给接收设备的数据包存储至暂存队列中。

202、接收第一接收设备通过第一单播链路发送的重传请求。

由于数据传输中会出现丢包的问题,因此,每个接收设备会对接收的数据包进行检测,当第一接收设备检测到接收的数据包缺失或者不完整时,通过对应的第一单播链路发送重传请求给发送设备,发送设备接收到第一接收设备通过第一单播链路发送的重传请求,重传请求中包括重传数据包的标识,该标识能够唯一标识重传数据包的身份,本公开实施例对标识的形式不加限定。

203、根据重传请求,从暂存队列中获取重传数据包。

由于暂存队列中存储发送设备已发送的数据包,因此,当发送设备接收到重传请求时,根据重传数据包的标识,从暂存队列中找到该重传数据包。

204、将重传数据包通过第一单播链路发送给第一接收设备。

本公开实施例提供的丢包重传方法,发送设备通过组播链路发送数据包给至少两个接收设备,接收第一接收设备通过第一单播链路发送的重传请求,重传请求中包括重传数据包的标识,根据重传请求,从暂存队列中获取重传数据包,将重传数据包通过第一单播链路发送给第一接收设备。该方法通过组播链路进行数据包的发送,并通过单播链路进行重传数据包的请求和发送,实现对丢失数据包的重传,解决了现有组播丢包无法重传的问题,提高用户体验。

基于上述图1和图2对应的实施例提供的丢包重传方法,本公开另一实施例提供一种丢包重传方法,本实施例以发送音视频数据为例进行说明,并不代表本公开局限于此。该方法的应用场景如图3所示,该应用场景中包含一个视频发送设备(如图3中的视频源s)和三个视频接收设备(如图3中的显示终端a、显示终端b、显示终端c)。其中,视频源s与显示终端a、显示终端b、显示终端c建立图3中加粗虚线所示的组播链路,视频源s和显示终端a采用tcp(传输控制协议,transmissioncontrolprotocol)建立图3中实线所示的单播链路tcp-s.a,视频源s和显示终端b采用tcp建立图3中点划线所示的单播链路tcp-s.b,视频源s和显示终端c采用tcp建立图3中虚线所示的单播链路tcp-s.c。

如图4所示为视频发送设备和视频接收设备中所包含的数据和数据处理模块,图4中仅以一个视频接收设备为例说明。其中,视频发送设备中包含两个数据队列,一个是视频发送队列,即原始的视频流,另一个是视频暂存队列,把发送出去的视频数据暂存一段时间。每个视频接收设备中包含三个数据队列,分别为接收队列、缓冲队列、播放队列,视频接收设备还包括丢包重传处理模块和视频播放模块(图4中未示出),丢包重传处理模块用于检测接收队列中的视频数据包是否连续,若连续将视频数据包放入缓冲队列;视频播放模块通过缓冲队列提取视频数据,并放入播放队列进行播放。

根据图3和图4所示,以显示终端a为例,本实施例提供的丢包重传方法包括以下步骤:

301、视频源s采用组播链路发送视频报文,将发送后的报文保存在暂存队列中。

其中,报文中包含报文序号字段,为两个字节,序号范围为0~65535。

302、显示终端a通过组播链路接收视频报文,放入接收队列,丢包重传处理模块检查报文序列是否连续,如果连续将报文放入缓冲队列。

303、如果丢包重传处理模块检查报文序列不连续,显示终端a会把缺失报文相对应的序号通过单播链路tcp-s.a发送给视频源s,发起重传请求。

304、视频源s通过单播链路tcp-s.a收到重传请求,会在暂存队列里查找报文序号,找到后通过单播链路tcp-s.a将对应的报文发送给显示终端a。

305、显示终端a收到重传报文后,将报文放入接收队列中。

306、重复步骤302~305,直至报文连续。

307、视频播放模块通过缓冲队列提取视频数据,并放入播放队列中进行播放。

本公开实施例提供的丢包重传方法,接收发送设备通过组播链路发送的数据包,并存储至接收队列中,检测接收队列中的数据包是否连续,当检测到接收队列中的数据包不连续时,通过单播链路发送重传请求给发送设备,重传请求中包括重传数据包的标识,接收发送设备通过单播链路发送的重传数据包。该方法通过组播链路进行数据包的接收,并通过单播链路进行重传数据包的请求和发送,实现对丢失数据包的重传,解决了现有组播丢包无法重传的问题,避免出现马赛克或卡顿的情况,提高用户体验。

基于上述图1和图2对应的实施例中所描述的丢包重传方法,下述为本公开装置实施例,可以用于执行本公开方法实施例。

本公开实施例提供一种接收设备,如图5所示,该接收设备50包括:接收模块501、存储模块502、检测模块503和发送模块504;

接收模块501,用于接收发送设备通过组播链路发送的数据包;

存储模块502,用于将数据包存储至接收队列中;

检测模块503,用于检测接收队列中的数据包是否连续;

发送模块504,用于当检测到接收队列中的数据包不连续时,通过单播链路发送重传请求给发送设备,重传请求中包括重传数据包的标识;

接收模块501,用于接收发送设备通过单播链路发送的重传数据包。

在一个实施例中,数据包中包含数据包的序列号;

检测模块503,用于检测接收队列中数据包的序列号是否连续。

在一个实施例中,如图6所示,接收设备50还包括:建立模块505;

建立模块505,用于当检测模块503检测到接收队列中的数据包不连续时,建立与发送设备之间的单播链路;

发送模块504,用于通过单播链路发送重传请求给发送设备。

本公开实施例提供的接收设备,接收发送设备通过组播链路发送的数据包,并存储至接收队列中,检测接收队列中的数据包是否连续,当检测到接收队列中的数据包不连续时,通过单播链路发送重传请求给发送设备,重传请求中包括重传数据包的标识,接收发送设备通过单播链路发送的重传数据包。该方法通过组播链路进行数据包的接收,并通过单播链路进行重传数据包的请求和发送,实现对丢失数据包的重传,解决了现有组播丢包无法重传的问题,提高用户体验。

本公开实施例提供一种发送设备,如图7所示,该发送设备70包括:发送模块701、接收模块702和获取模块703;

发送模块701,用于通过组播链路将数据包发送给至少两个接收设备;

接收模块702,用于接收第一接收设备通过第一单播链路发送的重传请求,重传请求中包括重传数据包的标识;

获取模块703,用于根据重传请求,从暂存队列中获取重传数据包,暂存队列用于存储发送设备已发送的数据包;

发送模块701,用于将重传数据包通过第一单播链路发送给第一接收设备。

在一个实施例中,如图8所示,发送设备70还包括:建立模块704;

建立模块704,用于建立与至少两个接收设备的组播链路,以及建立与每个接收设备对应的单播链路。

在一个实施例中,如图9所示,发送设备70还包括:存储模块705;

存储模块705,用于将已发送的数据包存储至暂存队列中。

本公开实施例提供的发送设备,发送设备通过组播链路发送数据包给至少两个接收设备,接收第一接收设备通过第一单播链路发送的重传请求,重传请求中包括重传数据包的标识,根据重传请求,从暂存队列中获取重传数据包,将重传数据包通过第一单播链路发送给第一接收设备。该方法通过组播链路进行数据包的发送,并通过单播链路进行重传数据包的请求和发送,实现对丢失数据包的重传,解决了现有组播丢包无法重传的问题,提高用户体验。

本公开实施例还提供一种丢包重传系统,包括图5~图6中任一描述的至少两个接收设备、以及图7~图9中任一描述的发送设备。其中,发送设备与至少两个接收设备建立组播链路,发送设备与每个接收设备建立一对一的单播链路,发送设备执行图2对应实施例所描述的丢包重传方法,接收设备执行图1对应实施例所描述的丢包重传方法。

基于上述图1和图2对应的实施例中所描述的丢包重传方法,本公开实施例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(英文:readonlymemory,rom)、随机存取存储器(英文:randomaccessmemory,ram)、cd-rom、磁带、软盘和光数据存储装置等。该存储介质上存储有计算机指令,用于执行上述图1和图2对应的实施例中所描述的丢包重传方法,此处不再赘述。

本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

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