CN111953454B - 丢包重传方法、设备及存储介质 - Google Patents

丢包重传方法、设备及存储介质 Download PDF

Info

Publication number
CN111953454B
CN111953454B CN202010686294.3A CN202010686294A CN111953454B CN 111953454 B CN111953454 B CN 111953454B CN 202010686294 A CN202010686294 A CN 202010686294A CN 111953454 B CN111953454 B CN 111953454B
Authority
CN
China
Prior art keywords
data packet
packet
packet loss
receiving end
sequence number
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010686294.3A
Other languages
English (en)
Other versions
CN111953454A (zh
Inventor
朱英龙
范志刚
卢涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Wanxiang Electronics Technology Co Ltd
Original Assignee
Xian Wanxiang Electronics Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xian Wanxiang Electronics Technology Co Ltd filed Critical Xian Wanxiang Electronics Technology Co Ltd
Priority to CN202010686294.3A priority Critical patent/CN111953454B/zh
Publication of CN111953454A publication Critical patent/CN111953454A/zh
Application granted granted Critical
Publication of CN111953454B publication Critical patent/CN111953454B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/08Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开提供一种丢包重传方法、设备及存储介质,涉及数据传输技术领域,能够降低现有UDP传输中发生丢包的问题。具体技术方案为:获取接收端发送的窗口同步确认SAK控制消息;获取与第一数据包的包序号对应的第一数据包,并将第一数据包添加至发送端的丢包队列中;检测目标范围内的数据包是否存在丢包;在检测到目标范围内的第二数据包丢包时,将第二数据包添加至发送端的丢包队列中;将丢包队列中的数据包发送至接收端。本发明用于丢包重传。

Description

丢包重传方法、设备及存储介质
技术领域
本公开涉及数据传输技术领域,尤其涉及一种丢包重传方法、设备及存储介质。
背景技术
为了提高发送效率,视频帧会采用UDP(User Datagram Protocol,用户数据报协议)方式进行传输,但是,UDP是一种不可靠的传输协议,当数据包发送之后,无法得知其是否安全完整的到达接收端,因此,在这种情况下,若出现丢包则会造成接收端视频花屏。
发明内容
本公开实施例提供一种丢包重传方法、设备及存储介质,能够降低现有UDP传输中发生丢包的问题。所述技术方案如下:
根据本公开实施例的第一方面,提供一种丢包重传方法,应用于发送端,该方法包括:
获取接收端发送的窗口同步确认SAK控制消息,SAK控制消息至少包括:接收窗口的边界序号、接收端当前接收到的数据包的包序号、第一数据包的包序号,接收窗口的边界序号以及第一数据包的包序号均小于当前接收到的数据包的包序号;
获取与第一数据包的包序号对应的第一数据包,并将第一数据包添加至发送端的丢包队列中;
检测目标范围内的数据包是否存在丢包,目标范围用于指示接收窗口的边界序号与接收端当前接收到的数据包的包序号之间的范围;
在检测到目标范围内的第二数据包丢包时,将第二数据包添加至发送端的丢包队列中;
将丢包队列中的数据包发送至接收端。
通过设置SAK响应机制,不仅能够使接收端直接通知发送端哪些数据包发生了丢包,而且能够使发送端根据SAK控制消息主动判断哪些数据包发生了丢失,这样,在两种方式相结合的情况下,能够尽可能降低丢包比例,保证接收端尽可能完整的接收发送端发送的数据包,降低UDP传输中发生丢包的可能性。
在一个实施例中,检测目标范围内的数据包是否存在丢包包括:
获取在接收到SAK控制消息时对应的到达时间;
根据接收端当前接收到的数据包的包序号,获取发送端发送接收端当前接收的数据包的发送时间;
根据到达时间与发送时间计算得到参考往返时延;
根据参考往返时延检测目标范围内的数据包是否存在丢包。
在一个实施例中,根据到达时间与发送时间计算得到参考往返时延包括:
根据到达时间与发送时间计算得到当前往返时延;
将当前往返时延插入预设的链表尾部,并根据链表中每个节点对应的往返时延确定得到参考往返时延,参考往返时延为链表中所有往返时延中的最小值、最大值或平均值。
在一个实施例中,根据参考往返时延检测目标范围内的数据包是否存在丢包包括:
检测在参考往返时延内是否接收到接收端发送的目标数据包对应的目标SAK控制消息,目标数据包为满足反馈SAK控制消息的数据包。
在一个实施例中,在检测到目标范围内的第二数据包丢包时,将第二数据包添加至发送端的丢包队列中包括:
在参考往返时延内未接收到接收端发送的目标数据包对应的目标SAK控制消息时,确定目标数据包丢包;
将目标数据包添加至发送端的丢包队列中。
在一个实施例中,获取接收端发送的SAK控制消息包括:
获取接收端按照预设周期发送的SAK控制消息;
或者,获取接收端在确定丢包时发送的SAK控制消息;
或者,获取接收端在接收到目标数据包时发送的SAK控制消息。
在一个实施例中,该方法还包括:
获取发送端对应的发送窗口的边界序号;
根据发送窗口的边界序号以及接收窗口的边界序号,确定发送队列中待发送数据包的最小序号;
将发送队列中的数据包发送给接收端。
在一个实施例中,将丢包队列和发送队列中的数据包通过同一个数据传输通道发生给接收端,丢包队列的优先级高于发送队列。
根据本公开实施例的第二方面,提供一种丢包重传设备,丢包重传设备包括处理器和存储器,存储器中存储有至少一条计算机指令,指令由处理器加载并执行以实现第一方面以及第一方面的任一实施例所描述的丢包重传方法中所执行的步骤。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,存储介质中存储有至少一条计算机指令,指令由处理器加载并执行以实现第一方面以及第一方面的任一实施例所描述的丢包重传方法中所执行的步骤。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是本公开实施例提供的一种丢包重传方法的流程图;
图2是本公开实施例提供的一种SAK响应机制的框架示意图;
图3是本公开实施例提供的一种SAK控制消息的发送机制示意图;
图4是本公开实施例提供的一种RTT链表的结构示意图;
图5是本公开实施例提供的一种丢包重传装置的结构图;
图6是本公开实施例提供的一种丢包重传装置的结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开实施例提供一种丢包重传方法,应用于发送端,如图1所示,该丢包重传方法包括以下步骤:
101、获取接收端发送的SAK控制消息。
SAK(窗口同步确认)控制消息至少包括:接收窗口的边界序号、接收端当前接收到的数据包的包序号、第一数据包的包序号,接收窗口的边界序号以及第一数据包的包序号均小于接收端当前接收到的数据包的包序号。
在本公开实施例中,获取接收端发送的SAK控制消息包括:
获取接收端按照预设周期发送的SAK控制消息;或者,获取接收端在确定丢包时发送的SAK控制消息;或者,获取接收端在接收到目标数据包时发送的SAK控制消息。
在实际中,接收端可以对接收到的每个数据包发送一个SAK控制消息,但是,这样会增加SAK控制消息的发送数量;因此,为了减少SAK控制消息的发送数量,接收端并不会对每个接收到的数据包都发送一次SAK控制消息,在以下三种情况下任意一种情况发生时,三种情况具体包括:(1)接收端周期发送;(2)接收端发现丢包时;(3)接收端收到必须要响应SAK控制消息的数据时,接收端会向发送端发送SAK控制消息。
102、获取与第一数据包的包序号对应的第一数据包,并将第一数据包添加至发送端的丢包队列中。
在本公开实施例中,当接收端发现丢包时,会将该第一数据包的包序号发送给发送端,发送端根据第一数据包的包序号找到相应的第一数据包,并将该第一数据包加入到丢包队列中。
103、检测目标范围内的数据包是否存在丢包。
目标范围用于指示接收窗口的边界序号与接收端当前接收到的数据包的包序号之间的范围。其中,接收窗口的边界序号用于指示该边界序号之前的数据包不再需要发送端重复发送。
在本公开实施例中,检测目标范围内的数据包是否存在丢包包括:
获取在接收到SAK控制消息时对应的到达时间;
根据接收端当前接收到的数据包的包序号,获取发送端发送接收端当前接收到的数据包的发送时间;
根据到达时间和发送时间计算得到参考往返时延;
根据参考往返时延检测目标范围内的数据包是否存在丢包。
具体的,在发送端接收到接收端反馈的SAK控制消息时,记录接收到SAK控制消息的到达时间,由于发送端在发送数据包时都会记录一个发送时间,因此,根据SAK控制消息中接收端当前接收到的数据包的包序号,获取该数据包的发送时间;将到达时间与发送时间的差值确定为参考往返时延,参考往返时延可以用作丢包重传的超时时间确认,因此,根据参考往返时延对目标范围内的数据包是否存在丢包。
由于网络时延会随着网络状态在不断的变化,同时,为了控制依赖网络时延时间丢包重传,必须对网络时延的一个变化趋势做一个判断,这就需要保存一段时间内的网络时延时间,而且需要不断的更新。本公开采用链表的结构来保存网络时延,该链表的容量为N,即链接中所有节点的数量为N,在链表没有满时,每收到一个SAK控制消息,就计算出一个网络时延,并将插入到链表尾部;在链表满时,先将链表头部的节点删除,再将计算得到的网络时延插入到链表尾部,并把链表指针后移,通过链表中不断更新的网络时延计算得到参考网络时延。
那么,对于根据到达时间与发送时间计算得到参考往返时延包括:
根据到达时间与发送时间计算得到当前往返时延;
将当前往返时延插入预设的链表尾部,并根据链表中每个节点对应的往返时延确定得到参考往返时延,参考往返时延为链表中所有往返时延中的最小值、最大值或平均值。
在确定好参考网络时延后,根据确定的参考网络时延检测目标范围内的数据包是否存在丢包包括:检测在参考往返时延内是否接收到接收端发送的目标数据包对应的目标SAK控制消息,目标数据包为满足反馈SAK控制消息的数据包。根据步骤101中所描述的,接收端在上述三种情况下任意一种情况发生时会向发送端发送SAK控制消息,因此,在满足响应条件的数据包发送之后进行计时,判断在参考网络时延内是否收到该数据包的SAK的控制消息。
104、在检测到目标范围内的第二数据包丢包时,将第二数据包添加至发送端的丢包队列中。
根据步骤103中所描述的,在检测到目标范围内的第二数据包丢包时,将第二数据包添加至发送端的丢包队列中包括:在参考往返时延内未接收到接收端发送的目标数据包对应的目标SAK控制消息时,确定目标数据包丢包;将目标数据包添加至发送端的丢包队列中。
105、将丢包队列中的数据包发送至接收端。
在将丢包队列中的数据包发送后,丢包队列重置数据包的超时计时。
在本公开的一个实施例中,该方法还包括:
获取发送端对应的发送窗口的边界序号;
根据发送窗口的边界序号以及接收窗口的边界序号,确定发送队列中待发送数据包的最小序号。
接收窗口的边界序号用于指示接收端所确定的该边界序号之前的数据包不再需要发送端重复发送,只发该边界序号之上的数据包;发送窗口的边界序号用于指示发送端所确定的该边界序号之前的数据包不再需要发送,只发该边界序号之上的数据包。因此,对于发送队列中待发送数据包的最小序号,可以根据发送窗口的边界序号以及接收窗口的边界序号进行确定,可以取两者的较大值,或者取两者的较小值,具体可以根据实际情况进行确定。这样,在确定好发送队列中待发送数据包的最小序号后,将丢包队列和发送队列中的数据包进行发送。其中,丢包队列和发送队列中的数据包可以通过同一个数据传输通道进行传输,也可以分别通过不同的数据传输通道进行传输。对于通过同一个数据传输通道进行传输的,丢包队列的优先级更高,也就是,当丢包队列中有数据包时,则优先对丢包队列中的数据包进行发送。
本公开实施例提供的丢包重传方法,通过设置SAK响应机制,不仅能够使接收端直接通知发送端哪些数据包发生了丢包,而且能够使发送端根据SAK控制消息主动判断哪些数据包发生了丢失,这样,在两种方式相结合的情况下,能够尽可能降低丢包比例,保证接收端尽可能完整的接收发送端发送的数据包,降低UDP传输中发生丢包的可能性。
基于上述图1对应的实施例提供的丢包重传方法,本公开另一实施例提供一种丢包重传方法,针对UDP传输中发生丢包的问题。为了使用网络传输,根据协议规定,每个数据包不能大于最大传输单元(MTU,Maximum Transmission Unit),因此,视频数据在发送前都会进行拆包,保证每个包的大小不大于MTU。下文示例中,都将视频帧拆分为1472字节大小的数据包,并且以实时传输协议(RTP,Real-time Transport Protocol)方式对其进行封装。
本公开实施例在视频数据传输中提出了一种SAK(窗口同步确认)机制,在数据传输过程中,接收端向发送端发送SAK控制消息,其中,SAK控制信息中至少携带:窗口边界信息、收到的包信息、丢失的包信息等。其实现原理可参照图2所示,具体的:
1)发送端设置一个发送窗口和一个丢包队列,接收端设置一个接收窗口和一个丢包队列;
2)发送端的发送窗口维持一个最小可发送包序号,该序号默认为-1,发送端的丢包队列里面存放的是没有被接收端确认接收的数据包;
3)接收端的接收窗口维持一个最小可接收包序号,该序号默认为-1,接收端的丢包队列里面存放的是没有收到的包序号,即被接收端认为丢失的数据包的包序号;
4)发送端和接收端的窗口和丢包队列可以通过SAK控制消息进行同步。
具体的,SAK控制消息的格式形如(x,y,z...),其中:
(1)x表示接收端的接收窗口边界,是一个确定的序号,根据接收端检测的情况进行设置,默认为-1;发送端根据x的值决定发送包序号的最小值,这样不会给接收端发送无效数据。发送包序号的值由发送端和接收端共同决定,取两者的较大值。比如,发送端的窗口边界为100,发送端根据某种规则认为序号120之前的包不再需要发送,发送端可以主动更新窗口下限,只发送序号120以上的包。而接收端也可以根据其它规则来设置x的取值,比如,接收窗口大小为100,但此时接收到的数据包的序号最大为200,接收端可以根据某种规则认为序号150之前的包不再需要重复发送,此时可以将x值设置为151。当发送端接收到该SAK控制消息后,将发送窗口边界更新为151。
(2)y表示接收端收到某个数据包的确认序号;根据该数据包的确认到达时间和该包的发送时间两者差值就可以计算一段网络时间内的往返时延(RTT,round-trip time),根据计算出的RTT来用作丢包重传的超时时间确认,具体实现在后面详述。
3)z表示当前窗口下丢包序号列表,没有发生丢包时该值可无,z>x。
下面对本公开实施例的详细处理流程介绍如下:
步骤301、在数据发送过程中,接收端按照预设规则向发送端返回SAK控制消息。
在实际实现时,为了减少SAK控制消息的发送数量,接收端并不会对每个接收包都发送一次SAK控制消息,在本公开实施例中,在以下三种情况下任意一种情况发生时,接收端会向发送端发送SAK控制消息:
A、接收端周期发送(比如以10ms为周期);
B、接收端发现丢包时;
C、接收端收到必须要响应SAK的数据时。
接收端发送SAK控制消息的机制参考图3所示。发送端采用RTP方式对数据包进行封装后进行发送,210~216为数据包的序号,示例性的,RTP210(TAG)表示采用RTP方式对序号为210的数据包进行封装后发送,TAG表示需要响应SAK控制消息的标签,RTP211~RTP216表示采用RTP方式对序号为210~216的数据包进行封装后发送。接收端在接收到RTP210(TAG)时,由于序号为210的数据包为必须要响应SAK控制消息的数据包,因此,反馈SAK(x,210)给发送端;本公开实施例以发送5个数据包为一个周期T,那么,发送端将RTP214发送给接收端后,接收端在接收到RTP214时,周期性的反馈SAK(x,214)给发送端;发送端将RTP215和RTP216两个数据包依次发送给接收端后,接收端未接收到RTP215数据包,在接收到RTP216数据包后立马反馈SAK(x,216,215)给发送端,告知发送端已接收到RTP216数据包,RTP215数据包丢失。
步骤302、发送端接收到SAK控制消息之后,进行如下处理:
1)根据x值确定发送数据包的最小序号值;
2)根据y值计算出参考RTT,根据计算出的参考RTT对后续发送的数据包是否发生丢失进行判断,并将判断为丢失的数据包加入当前丢包队列;
3)根据z值确定出丢包序号,根据丢包序号找出相应的数据包,将相应数据包加入当前丢包队列。
可以看出,发送端所维护的丢包队列中的数据来自两方面,一方面是接收端主动告知的丢包序号;另一方面是,由发送端经过主动计算后判断出可能发生的丢包。
该步骤中,发送端根据接收到的SAK控制消息计算出一个RTT值,RTT值的计算方法为:发送端在发送数据包时会记录一个发送时间t1,当接收到相应数据包的确认收到信息(包含在SAK中)时,记录接收到该确认收到信息的时间t2,这样,该数据包的RTT=t2-t1,也就是网络数据包的一个来回的时间。
由于RTT时间会随着网络状态在不断的变化中,同时为了控制依赖RTT时间丢包重传,必须对RTT的一个变化趋势做一个判断,这就需要保存一段时间内的RTT时间,而且是需要更新的,所以建议采用链表的结构来保存RTT时间,相应链表结构参考图4所示。
具体的,定义一个链表,容量为n,即设置n个节点,每个节点用于存放RTT(示例性,可以设置n为30),初始表头指针指=0;在链表没有满的时候,发送端每收到一个接收端发送的SAK控制消息,对应计算出一个RTT,并将相应RTT插入链表中;在链表满的时候,首先将链表头部的头结点删除,再将新计算得到的RTT插入链表尾部,并把表头指针后移;通过不断更新,链表内的RTT为最近一段时间内计算得到的若干个RTT值,这样可以根据链表中的RTT值不断计算出参考RTT值。
具体的,计算参考RTT值的具体方式是:
当链表内容发生更新时,根据链表内的各个RTT值确定出参考RTT值,参考RTT值可以为链表内所有RTT中的最小值、或者,最大值,或者,所有RTT的平均值。
实际应用中,可以根据需要确定参考RTT值,参考RTT值越小则丢包识别更为细致,有可能导致重复发送的数据包更多(有一些数据包并没有真正丢包,而是在接收端的接收时间有延迟,此时就可能导致很多延迟的数据包被重复发送);但是,参考RTT值设置的过高,则有可能导致某些丢包不能被检测到。因此,一般会根据需要来在[最小RTT,最大RTT]这个区间内来选取参考RTT的取值,优选的,可以将RTT参考值取为当前RTT链表中的所有RTT的平均值。
确定参考RTT的取值之后,根据所确定的参考RTT来判断是否发生丢包的具体实现方式是:根据步骤101可知,对于满足响应条件的数据包,接收端都应该发送SAK控制消息,但是有些情况下,由于丢包等情况,会导致发送端收不到SAK控制消息,因此,可以在满足响应条件的数据包发送之后,进行计时,如果超过参考RTT的时长还没有收到该数据包的SAK控制消息,则认为该数据包丢失,此时将该数据包加入丢包队列。
步骤303、对丢包队列和发送队列中的数据包进行发送;数据包发送后,发送队列开启数据包的超时计时,丢包队列重置数据包的超时计时。
这一步骤中,丢包队列和发送队列中的数据包通过同一个数据传输通道进展传输,只是丢包队列的优先级越高,也就是,当丢包队列中有数据包时,则优先对丢包队列中的数据包进行发送。
本公开实施提供一种丢包重传方法,针对UDP传输中发生丢包的问题,通过设置SAK响应机制,一方面,能够使接收端直接通知发送端哪些数据包发生了丢包,另一方面,能够由发送端根据SAK中的y参数计算出参考RTT后,根据参考RTT来主动判断哪些数据包有可能发生了丢失,这样,两种方式相结合的情况下,能够尽可能降低丢包比例,保证接收端尽可能完整的接收发送端发送的数据包。
基于上述图1对应的实施例中所描述的丢包重传方法,下述为本公开装置实施例,可以用于执行本公开方法实施例。
本公开实施例提供一种丢包重传装置,如图5所示,该丢包重传装置50包括:接收模块501、获取模块502、添加模块503、检测模块504和发送模块505;
接收模块501,用于获取接收端发送的窗口同步确认SAK控制消息,SAK控制消息至少包括:接收窗口的边界序号、接收端当前接收到的数据包的包序号、第一数据包的包序号,接收窗口的边界序号以及第一数据包的包序号均小于当前接收到的数据包的包序号;
获取模块502,用于获取与第一数据包的包序号对应的第一数据包;
添加模块503,用于并将第一数据包添加至发送端的丢包队列中;
检测模块504,用于检测目标范围内的数据包是否存在丢包,目标范围用于指示接收窗口的边界序号与接收端当前接收到的数据包的包序号之间的范围;
添加模块503,用于在检测到目标范围内的第二数据包丢包时,将第二数据包添加至发送端的丢包队列中;
发送模块505,用于将丢包队列中的数据包发送至接收端。
如图6所示,该丢包重传装置50还包括:计算模块506和确定模块507;
在一个实施例中,获取模块502,用于获取在接收到SAK控制消息时对应的到达时间;
获取模块502,用于根据接收端当前接收到的数据包的包序号,获取发送端发送接收端当前接收的数据包的发送时间;
计算模块506,用于根据到达时间与发送时间计算得到参考往返时延;
检测模块504,用于根据参考往返时延检测目标范围内的数据包是否存在丢包。
在一个实施例中,计算模块506,用于根据到达时间与发送时间计算得到当前往返时延;
确定模块507,用于将当前往返时延插入预设的链表尾部,并根据链表中每个节点对应的往返时延确定得到参考往返时延,参考往返时延为链表中所有往返时延中的最小值、最大值或平均值。
在一个实施例中,检测模块504,用于检测在参考往返时延内是否接收到接收端发送的目标数据包对应的目标SAK控制消息,目标数据包为满足反馈SAK控制消息的数据包。
在一个实施例中,确定模块507,用于在参考往返时延内未接收到接收端发送的目标数据包对应的目标SAK控制消息时,确定目标数据包丢包;
添加模块503,用于将目标数据包添加至发送端的丢包队列中。
在一个实施例中,接收模块501,用于获取接收端按照预设周期发送的SAK控制消息;或者,获取接收端在确定丢包时发送的SAK控制消息;或者,获取接收端在接收到目标数据包时发送的SAK控制消息。
在一个实施例中,获取模块502,用于获取发送端对应的发送窗口的边界序号;
确定模块507,用于根据发送窗口的边界序号以及接收窗口的边界序号,确定发送队列中待发送数据包的最小序号;
发送模块505,用于将发送队列中的数据包发送给接收端。
在一个实施例中,发送模块505,用于将丢包队列和发送队列中的数据包通过同一个数据传输通道发生给接收端,丢包队列的优先级高于发送队列。
本公开实施例提供的丢包重传装置,通过设置SAK响应机制,不仅能够使接收端直接通知发送端哪些数据包发生了丢包,而且能够使发送端根据SAK控制消息主动判断哪些数据包发生了丢失,这样,在两种方式相结合的情况下,能够尽可能降低丢包比例,保证接收端尽可能完整的接收发送端发送的数据包,降低UDP传输中发生丢包的可能性。
本公开实施例还提供了一种丢包重传设备,该丢包重传设备包括接收器、发射器、存储器和处理器,该发射器和存储器分别与处理器连接,存储器中存储有至少一条计算机指令,处理器用于加载并执行至少一条计算机指令,以实现上述图1对应的实施例中所描述的丢包重传方法。
基于上述图1~图4对应的实施例中所描述的丢包重传方法,本公开实施例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(英文:Read Only Memory,ROM)、随机存取存储器(英文:Random Access Memory,RAM)、CD-ROM、磁带、软盘和光数据存储装置等。该存储介质上存储有计算机指令,用于执行上述图1~图4对应的实施例中所描述的丢包重传方法,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

Claims (9)

1.一种丢包重传方法,其特征在于,应用于发送端,所述方法包括:
获取接收端发送的窗口同步确认SAK控制消息,所述SAK控制消息至少包括:接收窗口的边界序号、所述接收端当前接收到的数据包的包序号、第一数据包的包序号,所述接收窗口的边界序号以及所述第一数据包的包序号均小于所述当前接收到的数据包的包序号,所述接收窗口的边界序号用于指示所述边界序号之前的数据包不再需要发送端重复发送;
获取与所述第一数据包的包序号对应的第一数据包,并将所述第一数据包添加至发送端的丢包队列中;
检测目标范围内的数据包是否存在丢包,所述目标范围用于指示所述接收窗口的边界序号与所述接收端当前接收到的数据包的包序号之间的范围;
在检测到所述目标范围内的第二数据包丢包时,将所述第二数据包添加至所述发送端的丢包队列中;
将所述丢包队列中的数据包发送至所述接收端;
所述检测目标范围内的数据包是否存在丢包包括:获取在接收到所述SAK控制消息时对应的到达时间;根据所述接收端当前接收到的数据包的包序号,获取所述发送端发送所述接收端当前接收的数据包的发送时间;根据所述到达时间与所述发送时间计算得到参考往返时延;根据所述参考往返时延检测所述目标范围内的数据包是否存在丢包。
2.根据权利要求1所述的方法,其特征在于,所述根据所述到达时间与所述发送时间计算得到参考往返时延包括:
根据所述到达时间与所述发送时间计算得到当前往返时延;
将所述当前往返时延插入预设的链表尾部,并根据所述链表中每个节点对应的往返时延确定得到所述参考往返时延,所述参考往返时延为所述链表中所有往返时延中的最小值、最大值或平均值。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述参考往返时延检测所述目标范围内的数据包是否存在丢包包括:
检测在所述参考往返时延内是否接收到所述接收端发送的目标数据包对应的目标SAK控制消息,所述目标数据包为满足反馈SAK控制消息的数据包。
4.根据权利要求3所述的方法,其特征在于,所述在检测到所述目标范围内的第二数据包丢包时,将所述第二数据包添加至所述发送端的丢包队列中包括:
在所述参考往返时延内未接收到所述接收端发送的所述目标数据包对应的目标SAK控制消息时,确定所述目标数据包丢包;
将所述目标数据包添加至所述发送端的丢包队列中。
5.根据权利要求1所述的方法,其特征在于,所述获取接收端发送的SAK控制消息包括:
获取所述接收端按照预设周期发送的所述SAK控制消息;
或者,接收所述接收端在确定丢包时发送的所述SAK控制消息;
或者,获取所述接收端在接收到目标数据包时发送的所述SAK控制消息。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述发送端对应的发送窗口的边界序号;
根据所述发送窗口的边界序号以及所述接收窗口的边界序号,确定发送队列中待发送数据包的最小序号;
将所述发送队列中的数据包发送给接收端。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
将所述丢包队列和所述发送队列中的数据包通过同一个数据传输通道发生给所述接收端,所述丢包队列的优先级高于所述发送队列。
8.一种丢包重传设备,其特征在于,所述丢包重传设备包括处理器和存储器,所述存储器中存储有至少一条计算机指令,所述指令由所述处理器加载并执行以实现权利要求1至权利要求7任一项所述的丢包重传方法中所执行的步骤。
9.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条计算机指令,所述指令由处理器加载并执行以实现权利要求1至权利要求7任一项所述的丢包重传方法中所执行的步骤。
CN202010686294.3A 2020-07-16 2020-07-16 丢包重传方法、设备及存储介质 Active CN111953454B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010686294.3A CN111953454B (zh) 2020-07-16 2020-07-16 丢包重传方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010686294.3A CN111953454B (zh) 2020-07-16 2020-07-16 丢包重传方法、设备及存储介质

Publications (2)

Publication Number Publication Date
CN111953454A CN111953454A (zh) 2020-11-17
CN111953454B true CN111953454B (zh) 2024-07-23

Family

ID=73340937

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010686294.3A Active CN111953454B (zh) 2020-07-16 2020-07-16 丢包重传方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN111953454B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112583529B (zh) * 2020-12-18 2023-10-31 脸萌有限公司 一种数据处理方法、装置、设备及存储介质
CN112887063B (zh) * 2021-01-19 2023-04-07 网易(杭州)网络有限公司 数据包传输方法和装置、存储介质、电子设备
CN113259989B (zh) * 2021-06-02 2022-03-15 中移智行网络科技有限公司 数据重传方法、装置及电子设备
CN113839830B (zh) * 2021-07-15 2023-10-24 腾讯科技(深圳)有限公司 数据包多发参数的预测方法、装置与存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101326758A (zh) * 2005-12-07 2008-12-17 韩国电子通信研究院 以太网无源光网络中用于安全的密钥管理方法以及控制安全信道的设备
CN102546081A (zh) * 2010-12-21 2012-07-04 中兴通讯股份有限公司 丢包检测方法、系统和媒体客户端

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010118255A2 (en) * 2009-04-08 2010-10-14 The University Of North Carolina At Chapel Hill Methods, systems, and computer program products for network server performance anomaly detection
KR101832276B1 (ko) * 2010-03-31 2018-02-27 삼성전자주식회사 멀티-셀 tdd 통신 시스템에서의 응답 신호의 송신에 대한 리소스 인덱싱
CN103944691B (zh) * 2013-01-17 2019-01-15 中兴通讯股份有限公司 一种协同业务传输中的数据重传方法及接入网网关
CN104518853B (zh) * 2013-09-27 2018-04-17 北京新媒传信科技有限公司 一种数据重传的方法、接收端及系统
CN104104480B (zh) * 2014-07-31 2017-11-14 北京蓝汛通信技术有限责任公司 用于tcp协议的重传包丢失检测方法和装置
CN107196746B (zh) * 2016-03-15 2020-11-27 中兴通讯股份有限公司 实时通信中的抗丢包方法、装置和系统
CN107864084B (zh) * 2016-09-22 2019-06-21 腾讯科技(深圳)有限公司 数据包的传输方法和装置
CN107979449B (zh) * 2016-10-25 2020-11-20 杭州海康威视数字技术股份有限公司 一种数据传输方法及装置
CN108282277A (zh) * 2018-01-22 2018-07-13 西安万像电子科技有限公司 一种丢包重传方法、装置及系统
CN110505039B (zh) * 2019-09-26 2022-04-01 北京达佳互联信息技术有限公司 一种数据传输控制方法、装置、设备及介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101326758A (zh) * 2005-12-07 2008-12-17 韩国电子通信研究院 以太网无源光网络中用于安全的密钥管理方法以及控制安全信道的设备
CN102546081A (zh) * 2010-12-21 2012-07-04 中兴通讯股份有限公司 丢包检测方法、系统和媒体客户端

Also Published As

Publication number Publication date
CN111953454A (zh) 2020-11-17

Similar Documents

Publication Publication Date Title
CN111953454B (zh) 丢包重传方法、设备及存储介质
US8437255B2 (en) Estimating wireless processing device queue length and estimating signal reception quality in a wireless network
KR101664978B1 (ko) 네트워크 송신 용량 측정
US6701372B2 (en) Data communication apparatus and method
US6622172B1 (en) Dynamically delayed acknowledgement transmission system
JP4214793B2 (ja) 無線通信システム、サーバ、基地局、移動端末及びそれらに用いる再送タイムアウト時間決定方法
US20020154600A1 (en) Data communication system
US7505412B2 (en) Transmission control method and system
US8717871B2 (en) Packet retransmission control system, method and program
CN106210924B (zh) 视频网络传输控制方法和系统
US9143450B2 (en) Communication system and method for assisting with the transmission of TCP packets
CN109194452B (zh) 数据重传方法、装置、存储介质及其网络设备
WO2020147453A1 (zh) 数据传输方法及相关装置
US9680754B2 (en) Controlling transmission of data
US20220225163A1 (en) Communications device, infrastructure equipment and methods
CN111163362B (zh) 一种自适应重传等待时间的视频接收方法及系统
US8279756B2 (en) Communication terminal, communication control method, and communication control program
CN108713311A (zh) 一种传输控制协议tcp报文的传输方法、设备及系统
KR20080059897A (ko) Ip 패킷망에서 타임스탬프 메시지와 단방향 지연시간 차이를 이용한 단대단 가용대역폭 측정방법
CN116455532A (zh) 一种数据的可靠传输方法、装置、设备及电子介质
JP2003060735A (ja) 通信プロトコル試験装置
CN101989896B (zh) 一种arq连接的反馈方法及装置
CN110492978B (zh) 一种快速确认的LoRaWAN系统及其实现方法
JP2003224547A (ja) フロー制御方法
JP3848222B2 (ja) 再送方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant