数据包重传方法、装置及设备与流程

文档序号:18629847发布日期:2019-09-06 23:28阅读:191来源:国知局
数据包重传方法、装置及设备与流程

本申请实施例涉及数据传输技术领域,特别涉及一种数据包重传方法、装置及设备。



背景技术:

tcp(transmissioncontrolprotocol,传输控制协议)通过序列确认以及包重传机制,提供可靠的数据流传输服务。包重传机制是发送端在确定出某个数据包可能丢失的情况下重新发送该数据包的技术。

相关技术中的包重传机制如下:发送端在发送数据包之前将待发送的数据包的个数及序列号通知到接收端,之后向接收端发送数据包,在完成全部数据包的发送之后,发送端计算最后发送的数据包的重传时间间隔,在以最后发送的数据包的发送时间戳为起点,持续时长为上述重传时间间隔的时段结束后,发送端将未接收到相应的ack(acknowledgement,确认字符)报文的数据包进行重传。

由于发送某个数据包与重传该数据包之间的时间间隔较长,存在重传不及时的问题。



技术实现要素:

本申请实施例提供了一种数据包重传方法、装置及设备,可用于解决相关技术中数据包重传不及时的问题。

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

向接收端发送至少一个数据包;

获取所述至少一个数据包中的每一个数据包的重传时间间隔;

对于所述至少一个数据包中的第i个数据包,当在所述第i个数据包的传输时段内,未接收到所述第i个数据包的确认接收信息时,则向所述接收端重传所述第i个数据包;其中,所述第i个数据包的传输时段是指从所述第i个数据包的发送时间戳开始,且持续时长为所述第i个数据包的重传时间间隔的时段,所述第i个数据包的确认接收信息用于指示所述接收端已成功接收所述第i个数据包,所述i为正整数。

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

数据包发送模块,用于向接收端发送至少一个数据包;

间隔获取模块,用于获取所述至少一个数据包中的每一个数据包的重传时间间隔;

所述数据包发送模块,还用于对于所述至少一个数据包中的第i个数据包,当在所述第i个数据包的传输时段内,未接收到所述第i个数据包的确认接收信息时,则向所述接收端重传所述第i个数据包;其中,所述第i个数据包的传输时段是指从所述第i个数据包的发送时间戳开始,且持续时长为所述第i个数据包的重传时间间隔的时段,所述第i个数据包的确认接收信息用于指示所述接收端已成功接收所述第i个数据包,所述i为正整数。

再一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述方面所述的数据包重传方法。

又一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述方面所述的数据包重传方法。

又一方面,提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于执行上述方面所述的数据包重传方法。

本申请实施例提供的技术方案可以带来如下有益效果:

通过为每一个数据包均设置重传时间间隔,并在发送某个数据包之后的重传时间间隔内,如果没有接收到对应于该数据包的确认接收信息,发送端就重传该数据包;采用本申请实施例提供的技术方案,能够追踪每一个数据包是否需要重传,可以避免在数据包发送完成后追踪最后一个数据包,来确认各个数据包是否需要重传时产生的重传不及时问题,从而提高数据包重传的及时性。例如,在接收端所请求的业务的实时性较强时,通过上述方式来进行数据包的重传,则可以有效减轻接收端发生卡顿。

附图说明

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

图1是本申请一个实施例提供的实施环境的示意图;

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

图3是本申请另一个实施例提供的数据包重传方法的流程图;

图4是本申请另一个实施例提供的数据包重传方法的流程图;

图5是本申请另一个实施例提供的数据包重传方法的流程图;

图6是本申请另一个实施例示出的数据包重传方法的流程图;

图7至图10是图6实施例涉及的示意图;

图11是本申请另一个实施例提供的数据包重传方法的流程图;

图12是本申请一个实施例提供的数据包重传装置的框图;

图13是本申请一个实施例提供的计算机设备的框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

对本申请实施例进行描述之前,先对本申请实施例涉及的相关名词进行介绍。

tcp:一种面向连接的、可靠的、基于字节流的传输层通信协议。

ack:由接收端向发送端发送的一种传输类控制字符,用于指示接收端已成功接收发送端所发送的某个消息。

sack(selectiveack,带选择确认的确认信息):由接收端向发送端发送的一种传输类控制字符,用于指示某个消息已失序到达。例如,发送端向接收端发送p1、p2和p3三个数据包,若发送端未接收到对应于p2的ack,且已接收到对应于p3的sack,则说明p3被成功接收,且p2还未被成功接收。

rtt(round-triptime,往返时延):发送一交互信息的发送时间戳到接收该交互信息的确认接收信息的接收时间戳之间的时间间隔。

srtt(smoothedrtt,平滑往返时延):经过平滑计算的rtt。平滑计算是指对不断获得的实际数据和原预测数据进行加权平均,使预测结果更接近于实际情况的预测方法。

rto(retransmissiontimeout,超时重传时间):发送端从发出该数据包到执行重传该数据包所经过的时间,也称重传时间间隔。

请参考图1,其示出了本申请一个实施例提供的实施环境的示意图。该实施环境可以包括:发送端10与接收端20。

发送端10是具有数据发送功能的电子设备,发送端10也可称为发送端设备、发送方、发送方设备、发送设备或者一些其它类似的术语。可选地,发送端10支持tcp协议。发送端10可以是诸如是手机、平板电脑、电子书阅读器、多媒体播放设备、膝上型便携计算机和台式计算机等计算机设备。

接收端20是具有数据接收功能的电子设备,接收端20也可称为接收端设备、接收方、接收方设备、接收设备或者一些其它类似的术语。可选地,接收端20也支持tcp协议。接收端可以是诸如是手机、平板电脑、电子书阅读器、多媒体播放设备、膝上型便携计算机和台式计算机等计算机设备。

发送端10与接收端20之间建立有通信连接。可选地,上述通信连接是tcp连接。可选地,上述通信连接基于有线或者无线网络建立。

在实际应用中,发送端与接收端可以是具有两个不同功能的计算机设备,其中,发送端具有发送数据包的功能,接收端具有接收数据包的功能。或者,发送端与接收端也可以是具有相同功能的计算机设备,该计算机设备具有发送和接收数据包的功能,当该计算机设备用于实现本申请实施例中发送端侧的功能时,该计算机设备即作为发送端,当该计算机设备用于实现本申请实施例中接收端侧的功能时,该计算机设备即作为接收端。在实际应用中,对于同一台计算机设备,其可以作为发送端,也可以作为接收端。

在本申请实施例中,通过为每一个数据包均设置重传时间间隔,并在发送某个数据包之后的重传时间间隔内,如果没有接收到对应于该数据包的确认接收信息,发送端就重传该数据包;采用本申请实施例提供的技术方案,能够追踪每一个数据包是否需要重传,可以避免在数据包发送完成后追踪最后一个数据包,来确认各个数据包是否需要重传时产生的重传不及时问题,从而提高数据包重传的及时性。例如,在接收端所请求的业务的实时性较强时,通过上述方式来进行数据包的重传,则可以有效减轻接收端发生卡顿。

请参考图2,其示出了本申请一个实施例提供的数据包重传方法的流程图。该方法可以应用于图1所示的实施环境的发送端中。该方法可以包括如下步骤:

步骤201,向接收端发送至少一个数据包。

可选地,每一个数据包对应有唯一确定的序号,该序号用于标识该数据包的发送顺序。在本申请实施例中,发送端按照各个数据包分别对应的序号,依次向接收端发送上述各个数据包。可选地,发送端根据tcp协议向接收端发送至少一个数据包。

相应地,接收端接收发送端发送的至少一个数据包。

步骤202,获取上述至少一个数据包中的每一个数据包的重传时间间隔。

在本申请实施例中,发送端为每一个数据包分别设置重传时间间隔。对于任意一个数据包来说,该数据包的重传时间间隔是指发送端从发出该数据包到执行重传该数据包所经过的时间。每一个数据包的重传时间间隔可以相同,也可以不同。另外,对于同一个数据包来说,其重传时间间隔可以是固定不变的,也可以是动态变化的。

当每一个数据包的重传时间间隔动态变化时,步骤202可以包括如下两个子步骤:

步骤202a,获取每一个数据包对应的动态网络时延。

在本申请实施例中,每一个数据包对应的动态网络时延用于确定该数据包的重传时间间隔。动态网络时延是指动态变化的网络时延。

网络时延用于指示发送端和接收端之间完成一次信息交互所需的时长。在第一种可能的实现方式中,网络时延是单向时延。可选地,网络时延是发送端发送一条交互信息的发送时间戳,与接收端接收该交互信息的接收时间戳之间的时间间隔;或者,网络时延是接收端发送一条交互信息的发送时间戳,与发送端接收该交互信息的接收时间戳之间的时间间隔。在第二种可能的实现方式中,网络时延是双向时延。可选地,网络时延是往返时延,也即发送端发送一条交互信息的发送时间戳,与发送端接收到该交互消息的确认接收信息的接收时间戳之间的时间间隔。例如,发送端在向接收端发送一条交互信息的发送时间戳为14:52:17,发送端接收到该交互消息的确认接收信息的接收时间戳为14:52:25,则动态网络时延为8秒。

上述交互信息是指发送端与接收端之间传输的信息。交互信息可以包括以下任意一种:数据包、响应消息、握手消息、挥手消息、控制消息。响应消息是用于指示某个或某些数据包已被接收端成功接收的消息。握手消息是用于请求建立tcp连接的消息。挥手消息是用于请求断开tcp连接的消息。控制消息是用于指示待发送的数据包的相关信息的消息,上述相关信息可以是数据包的个数,每个数据包的序号,以及数据包所封装的数据的格式等等。

可选地,步骤202a具体实现为:在获取第i个数据包对应的动态网络时延时,根据发送端和接收端之间最近一个交互信息对应的传输时延,确定第i个数据包对应的动态网络时延。

最近一个交互信息对应的传输时延是指发送该交互信息的发送时间戳与接收该交互信息的接收时间戳之间的时间间隔。最近一个交互信息是指接收该交互信息的接收时间戳与当前时间戳之间的时间间隔最小的交互信息。

当网络时延是单向时延时,发送端将发送端和接收端之间最近一个交互信息对应的传输时延,直接确定为第i个数据包对应的动态网络时延。当网络时延是双向时延时,发送端将最近一个交互信息对应的传输时延的两倍确定为第i个数据包对应的动态网络时延。示例性地,最近一个交互信息对应的传输时延为10秒,则第i个数据包对应的动态网络时延为20秒。

步骤202b,分别根据每一个数据包对应的动态网络时延,确定每一个数据包的重传时间间隔。

在本申请实施例中,每一个数据包的重传时间间隔是根据对应的动态网络时延确定的,也即发送端能根据网络状况实时调整每一个数据包的重传时间间隔,当网络状况较好时,每一个数据包的重传时间间隔较小,当网络状况较差时,每一个数据包的重传时间间隔较大,可以避免在不同的网络状况下采用同一重传时间间隔时出现重传不及时的情况,或者在某个数据包不需要重传的情况下重传该数据包。另外,每一个数据包的重传时间间隔大于每一个数据包对应的动态网络时延,可以避免发生不必要的重传。

当网络时延是单向时延时,发送端可以将每一个数据包对应的动态网络时延与第一系数的乘积确定为每一个数据包的重传时间间隔,也可以将每一个数据包对应的动态网络时延与第一常数的和确定为每一个数据包的重传时间间隔。上述第一系数与第一常数均可以根据实验或经验设定,本申请实施例对此不作限定。

当网络时延是双向时延时,发送端可以分别将每一个数据包对应的动态网络时延与预设系数相乘,得到每一个数据包的重传时间间隔;还可以分别将每一个数据包对应的动态网络时延与第二常数相加,得到每一个数据包对应的动态网络时延。其中,预设系数是大于1的常数,预设系数可以根据接收端所请求的业务的时延要求设定。可选地,预设系数与上述时延要求呈正相关关系,当时延要求较小时,则预设系数比较小,当时延要求较大时,则预设系数比较大。

另外,第一系数大于预设系数。可选地,第一系数是预设系数的两倍。另外,第一常数大于第二常数,且第一常数与第二常数均为大于0的常数。

在本申请实施例中,由于最近一个交互信息的传输时延,以及最近一次信息交互所需的时间是动态变化的,因此每一个数据包对应的动态网络时延也是动态变化的,每一个数据包的重传时间间隔也是动态变化的。

当每一个数据包的重传时间间隔固定不变时,其可以由发送端预先设定,也可以由发送端根据网络时延实际确定。在一种可能的实现方式中,当发送端根据tcp协议向接收端发送数据包时,上述网络时延可以是发送握手消息的发送时间戳,以及接收到握手消息的确认接收信息的接收时间戳之间的时间间隔。在另一种可能的实现方式中,网络时延是根据发送端与接收端之间的srtt。

另外,本申请实施例对获取每一个数据包的重传时间间隔不作限定。当每一个数据包的重传时间间隔固定不变时,获取每一个数据包的重传时间间隔可以在发送该数据包之前,也可以在发送该数据包的同时。当每一个数据包的重传时间间隔动态改变时,获取每一个数据包的重传时间间隔可以在发送该数据包之前,也可以在发送该数据包的同时,还可以在发送该数据包之后。

步骤203,对于至少一个数据包中的第i个数据包,当在第i个数据包的传输时段内,未接收到第i个数据包的确认接收信息时,则向接收端重传第i个数据包,i为正整数。

第i个数据包可以是上述至少一个数据包中的任意一个数据包。第i个数据包的传输时段是指从第i个数据包的发送时间戳开始,且持续时长为第i个数据包的重传时间间隔的时段。第i个数据包的发送时间戳是指发送端向接收端发送第i个数据包的发送时间。示例性地,第i个数据包的发送时间戳为13:45:05,第i个数据包的重传时间间隔为30秒,则第i个数据包的传输时段为13:45:05至13:45:35。

第i个数据包的确认接收信息用于指示接收端已成功接收第i个数据包。可选地,第i个数据包的确认接收信息通常被携带于接收端向发送端返回的响应消息中。在tcp协议中,发送端每向接收端发送一个数据包,接收端在成功接收该数据包的情况下,需要向接收端返回相应的响应消息,该响应消息中携带该数据包的ack报文,也即该数据包的确认接收信息。

在本申请实施例中,发送端在某个数据包的传输时段内,如果没有接收到该数据包的确认接收信息,就重传该数据包,从而使数据包能够及时得到重传。另外,在重传第i个数据包之后,发送端将第i个数据包的传输时段更新为从重传第i个数据包的发送时间戳开始,持续时长为第i个数据包的重传时间间隔的时段。

综上所述,本申请实施例提供的技术方案,通过为每一个数据包均设置重传时间间隔,并在发送某个数据包之后的重传时间间隔内,如果没有接收到对应于该数据包的确认接收信息,发送端就重传该数据包;采用本申请实施例提供的技术方案,能够追踪每一个数据包是否需要重传,可以避免在数据包发送完成后追踪最后一个数据包,来确认各个数据包是否需要重传时产生的重传不及时问题,从而提高数据包重传的及时性。例如,在接收端所请求的业务的实时性较强时,通过上述方式来进行数据包的重传,则可以有效减轻接收端发生卡顿。

另外,还通过根据每个数据包对应的动态网络时延来设定该数据包的重传时间间隔,从而使发送端能基于当前的网络状况实时调整每一个数据包的重传时间间隔,当网络状况较好时,每一个数据包的重传时间间隔较小,当网络状况较差时,每一个数据包的重传时间间隔较大,可以避免在不同的网络状况下采用同一重传时间间隔时出现重传不及时的情况,或者在某个数据包不需要重传的情况下重传该数据包,从而使本申请实施例提供的数据包重传方法更具实用性。

发送端可以通过设置定时器的方式来确定在第i个数据包的传输时段内,发送端是否接收到第i个数据包的确认接收信息,从而使发送端能够及时对第i个数据包进行重传。下面将结合图3,对设置定时器的第一种实现方式进行介绍。请参考图3,其示出了本申请一个示例性实施例提供的数据包重传方法的流程图。该方法包括如下步骤:

步骤301,向接收端发送至少一个数据包。

步骤302,获取上述至少一个数据包中的每一个数据包对应的重传时间间隔。

步骤303,当发出第i个数据包时,启动第i个数据包对应的第一定时器。

其中,第i个数据包对应的第一定时器的超时时间为第i个数据包的重传时间间隔。第一定时器可以是倒计时定时器,每过一个时间单位,则该倒计时定时器的数值减一。第一定时器也可以是正计时定时器,每过一个时间单位,则该正计时计时器的数值加一。其中,时间单位可以是毫秒,也可以是秒,还可以是分钟,其可以根据重传时间间隔实际设定,本申请实施例对此不作限定。

另外,当第一定时器为正计时定时器时,其可以从零开始计时,也可以从第i个数据包的发送时间戳开始计时,本申请实施例对此不作限定。

步骤304,当第i个数据包对应的第一定时器超时时,若未接收到第i个数据包的确认接收信息,则向接收端重传第i个数据包。

当第i个数据包对应的第一定时器为倒计时定时器,则该第一定时器的数值归零时,该第一定时器超时。当第i个数据包对应的第一定时器为正计时定时器,则该第一定时器所计时的时间长度达到第i个数据包的重传时间间隔时,该第一定时器超时。

另外,需要说明的是,第i个数据包的重传时间间隔可以是固定不变的,也可以是实时改变的。当重传时间间隔实时改变时,对于第i个数据包,发送端在第i个数据包的重传时间间隔改变时,重置第i个数据包对应的第一定时器,重置后的第一定时器的超时时间为改变后的第i个数据包的重传时间间隔,与该重传时间间隔改变时的时间戳之间的差值。

另外,在重传第i个数据包之后,发送端重置第i个数据包对应的第一定时器,该第一定时器的超时时间依然为第i个数据包的重传时间间隔。

综上所述,本申请实施例提供的技术方案,通过在发送某个数据包时,设置超时时间为该数据包的重传时间间隔的第一定时器,从而使发送端能在该数据包的传输时段内监控是否接收到该数据包的确认接收信息,从而使发送端能够及时重传数据包。

下面将结合参考图4,对设置定时器的第一种实现方式进行介绍。请参考图4,其示出了本申请另一个实施例提供的数据包重传方法的流程图。该方法包括如下几个步骤:

步骤401,向接收端发送至少一个数据包。

步骤402,获取上述至少一个数据包中的每一个数据包对应的重传时间间隔。

步骤403,当接收到任意一个数据包的确认接收信息时,如果第i个数据包的确认接收信息暂未接收到,则检测第i个数据包是否需要重传。

任意一个数据包可以是在第i个数据包之前发送的数据包,也可以是在第i个数据包之后发送的数据包,本申请实施例对此不作限定。另外,在本申请实施例中,第i个数据包是发送端已发送,且未接收到确认接收信息的数据包中的任意一个数据包。

可选地,发送端检测第i个数据包的重传时间间隔是否大于已过时长;若第i个数据包的重传时间间隔大于已过时长,则确定第i个数据包不需要重传;若第i个数据包的重传时间间隔小于已过时长,则确定第i个数据包不需要重传。其中,已过时长是指接收到任意一个数据包的确认接收信息的接收时间戳与第i个数据包的发送时间戳之间的差值。

如果第i个数据包需要重传,则执行步骤404;如果第i个数据包不需要重传,则执行步骤405。

步骤404,向接收端重传第i个数据包。

步骤405,当检测出第i个数据包不需要重传,检测是否启动第i个数据包对应的第二定时器。

其中,第i个数据包对应的第二定时器的超时时间为第i个数据包的重传时间间隔与已过时长之间的差值。第二定时器可以是倒计时定时器,每过一个时间单位,则该倒计时定时器的数值减一。第二定时器也可以是正计时定时器,每过一个时间单位,则该正计时计时器的数值加一。其中,时间单位可以是毫秒,也可以是秒,还可以是分钟,其可以根据重传时间间隔实际设定,本申请实施例对此不作限定。

当第i个数据包对应的第二定时器未启动时,则执行步骤406;当第i个数据包对应的第二定时器已启动时,则执行步骤407。

步骤406,启动第i个数据包对应的第二定时器。

步骤407,将已启动的第i个数据包对应的第二定时器的超时时间更新为第i个数据包的重传时间间隔与已过时长之间的差值。

步骤408,当第i个数据包对应的第二定时器超时时,若未接收到第i个数据包的确认接收信息,则向接收端重传第i个数据包。

当第i个数据包对应的第二定时器为倒计时定时器,则该第二定时器的数值归零时,该第二定时器超时。当第i个数据包对应的第二定时器为正计时定时器,则该第二定时器所计时的时间长度达到第i个数据包的重传时间间隔时,该第一定时器超时。

另外,在重传第i个数据包之后,发送端重置第i个数据包对应的第二定时器,该第二定时器的超时时间为第i个数据包的重传时间间隔。

综上所述,本申请实施例提供的技术方案,通过在接收到任意一个数据包的确认接收信息之后,为某个数据包启动超时时间为该数据包的重传时间间隔与已过时长之间的差值的定时器,从而使发送端能在该数据包的传输时段内监控是否接收到该数据包的确认接收信息,从而使发送端能够及时重传数据包。

请参考图5,其示出了本申请另一个实施例示出的数据包重传方法的流程图。该方法包括如下几个步骤:

步骤501,向接收端发送至少一个数据包。

步骤502,检测接收端是否支持发送第二确认信息。

可选地,在本申请实施例中,第i个数据包的确认接收信息包括第一确认信息或第二确认信息。第i个数据包的第一确认信息用于指示接收端已成功接收第i个数据包,且接收端已成功接收在发送第i个数据包之前发送的数据包。第i个数据包的第二确认信息用于指示接收端已成功接收第i个数据包,且存在在发送第i个数据包之前发送的数据包未被接收端成功接收。当发送端与接收端之间根据tcp协议来进行数据交互时,上述第一确认信息也即是对应于第i个数据包的ack报文,第二确认信息也即是对应于第i个数据包的sack报文。

可选地,发送端与接收端进行数据交互之前,发送端接收接收端发送的控制消息,该控制消息包含用于指示接收端是否支持发送第二确认信息的字段,发送端从该控制消息中读取上述字段,以检测接收端是否支持发送第二确认信息。当发送端与接收端之间根据tcp协议来进行数据交互时,若接收端所支持的tcp协议中不包括sack选项,或者,接收端所支持的tcp协议中包括sack选项,且该sack选项处于关闭状态,则接收端不支持发送第二确认信息;若接收端所支持的tcp协议中包括sack选项,且该选项处于打开状态,接收端支持发送第二确认信息。接收端与发送端建立tcp连接时,会向接收端发送握手消息,该握手消息中包含用于指示接收端是否支持发送第二确认信息的字段,发送端从该握手消息中读取上述字段,以检测接收端是否支持发送第二确认信息。

步骤503,若接收端支持发送第二确认信息,则获取上述至少一个数据包中的每一个数据包的重传时间间隔。

本申请实施例还提供另外一种数据包重传方法,该数据包重传方法如下:发送端向接收端发送至少一个数据包,对于第i个数据包,发送端在接收第i个数据包的第一确认信息的次数达到预设次数时,向接收端重传第i+1个数据包,预设次数可以根据经验设定,本申请实施例对此不作限定。

可选地,发送端根据接收端是否支持发送第二确认信息来选择相应的数据包重传方法。当接收端支持发送第二确认信息时,发送端按照图2实施例提供的数据包重传方法来进行数据包的重传;当接收端不支持发送第二确认信息时,发送端按照上述另一种数据包重传方法来进行数据包的重传。

需要说明的是,图2实施例中通过追踪每一个数据包来及时确定上述每一个数据包是否需要重传,上述另一种数据包重传方法仅能追踪最早未接收到确认接收信息的数据包,而对于在该数据包之后发送的数据包,无法及时追踪,也即,发送端无法确定何时需要重传在该数据包之后发送的数据包,因此,图2实施例提供的数据包重传方法的重传及时性优于上述另一种数据包重传方法的重传及时性。

步骤504,接收接收端发送的响应消息。

响应消息是接收端接收到某个数据包之后向发送端返回的消息,响应消息包括第i个数据包的第一确认信息和/或第二确认信息。在本申请实施例中,对接收接收端发送的响应消息的时机不作限定,其可以在发送端向接收端发送第一个数据包之后的任意时刻。

步骤505,检测在第i个数据包的传输时段内接收的响应消息是否携带第i个数据包的第一确认信息或第二确认信息。

在本申请实施例中,通过检测在第i个数据包的传输时段内接收的响应消息是否携带第i个数据包的第一确认信息或第二确认信息,来确定是否需要向接收端重传第i个数据包。

若检测出在第i个数据包的传输时段内接收的响应消息未携带第i个数据包的第一确认信息,且未携带第i个数据包的第二确认信息,则执行步骤505,若发送端在第i个数据包的传输时段内接收的响应消息携带第i个数据包的第一确认信息或第二确认信息,则执行步骤506。

步骤506,执行向接收端重传第i个数据包的步骤。

步骤507,不执行向接收端重传第i个数据包的步骤。

综上所述,本申请实施例提供的技术方案,通过在接收端支持第二确认信息的情况下,执行后续的数据包重传方法,由于发送端能够在未接收到某个数据包的确认接收信息的情况下,能够接收到在上述数据包之后发送的数据包的确认接收信息,避免相关技术中发送端在未接收到某个数据包的确认接收信息的情况下,无法确定在上述数据包之后发送的数据包是否被接收端成功的情况发生,避免不必要的重传。

结合参考图6,其示出了本申请另一个实施例提供的数据包重传方法的流程图。该方法包括如下步骤:

步骤601,向接收端发送至少一个数据包。

结合参考7,其示出了向接收端发送数据包的示意图。发送端向接收端发送p1、p2、p3和p4四个数据包,并记录p1的发送时间戳t1、p2的发送时间戳t2、p3的发送时间戳t3以及p4的发送时间戳t4。

相应地,接收端接收发送端发送的至少一个数据包。

步骤602,判断接收端是否支持发送第二确认信息。

步骤603,若接收端支持发送第二确认信息,则在获取第i个数据包对应的动态网络时延时,根据发送端和接收端之间最近一个交互信息对应的传输时延,确定第i个数据包对应的动态网络时延。

结合参考图8,其示出了本申请一个实施例示出的确定第i个数据包对应的动态网络时延的示意图。发送端在tc接收到p1的确认接收信息,之后将p1的网络时延rtt=tc-t1确定为p2、p3、p4对应的动态网络时延。

另外,当最近一个交互信息对应的传输时延改变时,第i个数据包对应的动态网络时延也相应改变。结合参考10,发送端在td接收到p3的确认接收信息,之后将p3的网络时延rtt=td-t3确定为p2、p4对应的动态网络时延。

动态网络时延用于指示发送端和接收端之间完成一次信息交互所需的时长。

若接收端不支持发送第二确认信息,则不执行获取每一个数据包的重传时间间隔的步骤,并按照如下方法来重传数据包:发送端向接收端发送至少一个数据包,对于第i个数据包,发送端在接收到第i个数据包的第一确认信息的次数达到预设次数时,向接收端重传第i+1个数据包。

步骤604,分别将每一个数据包对应的动态网络时延与预设系数相乘,得到每一个数据包的重传时间间隔。

结合参考图9,发送端将p1的网络时延rtt=tc-t1确定为p2、p3、p4对应的动态网络时延后,将预设系数α与动态网络时延的乘积确定为p2、p3、p4的动态网络时延。

当第i个数据包对应的动态网络时延发生改变时,第i个数据包的重传时间间隔也相应改变。结合参考图10,发送端将p3的网络时延rtt=td-t3确定为p2、p4对应的动态网络时延后,将预设系数α与动态网络时延的乘积确定为p2、p4的动态网络时延。

步骤605,如果第i个数据包的确认接收信息暂未接收到,则检测第i个数据包是否需要重传。

可选地,发送端通过第i个数据包的重传时间间隔与已过时长之间的大小关系来检测第i个数据包是否需要重传。如果第i个数据包的重传时间间隔大于已过时长,则第i个数据包不需要重传,若第i个数据包的重传时间间隔小于已过时长,则第i个数据包需要重传。

如果第i个数据包需要重传,则执行步骤606;如果第i个数据包不需要重传,则执行步骤607。

步骤606,向接收端重传第i个数据包;

步骤607,在未启动第i个数据包对应的第二定时器时,启动第i个数据包对应的第二定时器。

结合参考9,发送端为p2启动超时时长为α×(tc-t1)-(tc-t2)的第二定时器,发送端为p3启动超时时长为α×(tc-t1)-(tc-t3)的第二定时器,发送端为p4启动超时时长为α×(tc-t1)-(tc-t4)的第二定时器。

另外,当最近一个交互信息对应的传输时延改变时,发送端重置第i个数据包对应的第二定时器。结合参考10,发送端将p2对应的第二定时器的超时时长重置为α×(td-t3)-(td-t2),发送端将p4对应的第二定时器的超时时长重置为α×(td-t3)-(tc-t4)。

步骤608,当第i个数据包对应的第二定时器超时时,若未接收到第i个数据包的确认接收信息,向接收端发送重传第i个数据包。

对于重传的第i个数据包,重复执行步骤605至步骤608,直至发送端接收到重传的第i个数据包的确认接收信息。

在一个具体的例子中,结合参考图11,服务端(也即发送端)建立tcp连接,之后客户端(也即接收端)向服务端发送数据包获取请求,服务端向客户端依次发送数据包p1、p2、p3和p4,之后服务端等待客户端发送的响应消息,当接收到客户端发送的响应消息之后,服务端判断客户端是否支持发送sack报文,若不支持,则采用tcp默认的算法来进行后续的数据包重传,若支持,则服务端先计算客户端与服务端之间的rtt,并将rtt与预设系数α的乘积rtt×α确定为乱序时间窗口(也即重传时间间隔),之后服务端遍历重传队列,并根据接收到上述响应消息的接收时间戳来计算重传队列中的每一个数据包的超时时间rtt×α-(tc-tn),服务器判断每一个数据包是否超时,若已经超时,则重传数据包,若没有超时,则启动超时时间为rtt×α-(tc-tn)的定时器,并在该定时器超时时,重传数据包。之后,服务器将重传的数据包的发送时间戳更新,并从计算超时时长的步骤开始执行,直至服务端接收到该数据包的确认接收信息。

其中,重传队列中包括已发送但还没有接收到确认接收信息的全部数据包。tc是接收到上述响应消息的接收时间戳。tn是数据包pn的发送时间戳。tcp默认的算法如下:发送端向接收端发送至少一个数据包,对于第i个数据包,发送端在接收到第i个数据包的第一确认信息的次数达到预设次数时,向接收端重传第i+1个数据包。

下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

请参考图12,其示出了本申请一个实施例提供的数据包重传装置的框图。该装置具有实现上述方法示例中的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以包括:数据包发送模块1201和间隔获取模块1202。

数据包发送模块1201,用于向接收端发送至少一个数据包。

间隔获取模块1202,用于获取所述至少一个数据包中的每一个数据包的重传时间间隔。

所述数据包发送模块1201,还用于对于所述至少一个数据包中的第i个数据包,当在所述第i个数据包的传输时段内,未接收到所述第i个数据包的确认接收信息时,则向所述接收端重传所述第i个数据包;其中,所述第i个数据包的传输时段是指从所述第i个数据包的发送时间戳开始,且持续时长为所述第i个数据包的重传时间间隔的时段,所述第i个数据包的确认接收信息用于指示所述接收端已成功接收所述第i个数据包,所述i为正整数。

综上所述,本申请实施例提供的技术方案,通过为每一个数据包均设置重传时间间隔,并在发送某个数据包之后的重传时间间隔内,如果没有接收到对应于该数据包的确认接收信息,发送端就重传该数据包;采用本申请实施例提供的技术方案,能够追踪每一个数据包是否需要重传,可以避免在数据包发送完成后追踪最后一个数据包,来确认各个数据包是否需要重传时产生的重传不及时问题,从而提高数据包重传的及时性。例如,在接收端所请求的业务的实时性较强时,通过上述方式来进行数据包的重传,则可以有效减轻接收端发生卡顿。

在基于图12所示实施例提供的一个可选实施例中,所述数据包发送模块1201,用于:

当发出所述第i个数据包时,启动所述第i个数据包对应的第一定时器,其中,所述第i个数据包对应的第一定时器的超时时间为所述第i个数据包的重传时间间隔;

当所述第i个数据包对应的第一定时器超时时,若未接收到所述第i个数据包的确认接收信息,则向所述接收端重传所述第i个数据包。

在基于图12所示实施例提供的另一个可选实施例中,所述数据包发送模块1201,用于:

当接收到任意一个数据包的确认接收信息时,如果所述第i个数据包的确认接收信息暂未接收到,则检测所述第i个数据包是否需要重传;

当检测出所述第i个数据包不需要重传,且未启动所述第i个数据包对应的第二定时器时,启动所述第i个数据包对应的第二定时器,其中,所述第i个数据包对应的第二定时器的超时时间为所述第i个数据包的重传时间间隔与已过时长之间的差值,所述已过时长是指接收到所述任意一个数据包的确认接收信息的接收时间戳与所述第i个数据包的发送时间戳之间的差值;

当所述第i个数据包对应的第二定时器超时时,若未接收到所述第i个数据包的确认接收信息,则向所述接收端重传所述第i个数据包。

可选地,所述数据包发送模块1201,还用于当检测出所述第i个数据包不需要重传,且已启动所述第i个数据包对应的第二定时器时,将已启动的所述第i个数据包对应的第二定时器的超时时间更新为所述第i个数据包的重传时间间隔与所述已过时长之间的差值。

可选地,所述数据包发送模块,用于:

检测所述第i个数据包的重传时间间隔是否大于所述已过时长;

若所述第i个数据包的重传时间间隔大于所述已过时长,则确定所述第i个数据包不需要重传。

在基于图12所示实施例提供的另一个可选实施例中,所述间隔获取模块1202,用于:

获取每一个数据包对应的动态网络时延,所述动态网络时延用于指示发送端和所述接收端之间完成一次信息交互所需的时长;

分别根据每一个数据包对应的动态网络时延,确定每一个数据包的重传时间间隔,所述每一个数据包的重传时间间隔大于所述每一个数据包对应的动态网络时延。

可选地,所述间隔获取模块1202,用于在获取所述第i个数据包对应的动态网络时延时,根据所述发送端和所述接收端之间最近一个交互信息对应的传输时延,确定所述第i个数据包对应的动态网络时延。

可选地,所述交互信息包括以下任意一种:数据包、响应消息、控制消息、握手消息、挥手消息。

可选地,所述间隔获取模块1202,用于分别将每一个数据包对应的动态网络时延与预设系数相乘,得到每一个数据包的重传时间间隔,所述预设系数是大于1的常数。

可选地,所述预设系数根据所述接收端所请求的业务的时延要求设定。

在基于图12所示实施例提供的另一个可选实施例中,所述第i个数据包的确认接收信息包括第一确认信息或第二确认信息,所述第i个数据包的第一确认信息用于指示所述接收端已成功接收所述第i个数据包,且所述接收端已成功接收在发送所述第i个数据包之前发送的数据包,所述第i个数据包的第二确认信息用于指示所述接收端已成功接收所述第i个数据包,且所述第i个数据包之前发送的数据包中存在至少一个数据包未被所述接收端成功接收;

所述装置还包括:消息接收模块和第一检测模块(图中未示出)。

消息接收模块,用于接收所述接收端发送的响应消息。

第一检测模块,用于检测在所述第i个数据包的传输时段内接收的所述响应消息是否携带所述第i个数据包的第一确认信息或所述第i个数据包的第二确认信息。

所述数据包发送模块1201,还用于若未携带所述第i个数据包的第一确认信息,且未携带所述第i个数据包的第二确认信息,则执行所述向所述接收端重传所述第i个数据包的步骤。

可选地,

所述间隔获取模块1202,还用于当所述接收端支持发送所述第i个数据包的第二确认信息时,从所述获取所述至少一个数据包中的每一个数据包的重传时间间隔的步骤开始执行。

图13示出了本申请一个示例性实施例提供的计算机设备1300的结构框图。该计算机设备1300可以是:智能手机、平板电脑、mp3(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)播放器、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。计算机设备1300还可能被称为用户设备、便携式计算机设备、膝上型计算机设备、台式计算机设备等其他名称。

通常,计算机设备1300包括有:处理器1301和存储器1302。

处理器1301可以包括一个或多个处理核心,比如4核心处理器、10核心处理器等。处理器1301可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1301也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1301可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1301还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器1302可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1302还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1302中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1301所执行以实现本申请中方法实施例提供的数据包重传方法。

在一些实施例中,计算机设备1300还可选包括有:外围设备接口1303和至少一个外围设备。处理器1301、存储器1302和外围设备接口1303之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1303相连。具体地,外围设备包括:射频电路1304、触摸显示屏1305、摄像头1306、音频电路1307、定位组件1308和电源1309中的至少一种。

外围设备接口1303可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器1301和存储器1302。在一些实施例中,处理器1301、存储器1302和外围设备接口1303被集成在同一芯片或电路板上;在一些其他实施例中,处理器1301、存储器1302和外围设备接口1303中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路1304用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路1304通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1304将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1304包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1304可以通过至少一种无线通信协议来与其它计算机设备进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路1304还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏1305用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1305是触摸显示屏时,显示屏1305还具有采集在显示屏1305的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1301进行处理。此时,显示屏1305还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1305可以为一个,设置计算机设备1300的前面板;在另一些实施例中,显示屏1305可以为至少两个,分别设置在计算机设备1300的不同表面或呈折叠设计;在再一些实施例中,显示屏1305可以是柔性显示屏,设置在计算机设备1300的弯曲表面上或折叠面上。甚至,显示屏1305还可以设置成非矩形的不规则图形,也即异形屏。显示屏1305可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

摄像头组件1306用于采集图像或视频。可选地,摄像头组件1306包括前置摄像头和后置摄像头。通常,前置摄像头设置在计算机设备的前面板,后置摄像头设置在计算机设备的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1306还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路1307可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1301进行处理,或者输入至射频电路1304以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在计算机设备1300的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1301或射频电路1304的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1307还可以包括耳机插孔。

定位组件1308用于定位计算机设备1300的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件1308可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。

电源1309用于为计算机设备1300中的各个组件进行供电。电源1309可以是交流电、直流电、一次性电池或可充电电池。当电源1309包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。

在一些实施例中,计算机设备1300还包括有一个或多个传感器1310。该一个或多个传感器1310包括但不限于:加速度传感器1311、陀螺仪传感器1312、压力传感器1313、指纹传感器1314、光学传感器1315以及接近传感器1316。

加速度传感器1311可以检测以计算机设备1300建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1311可以用于检测重力加速度在三个坐标轴上的分量。处理器1301可以根据加速度传感器1311采集的重力加速度信号,控制触摸显示屏1305以横向视图或纵向视图进行用户界面的显示。加速度传感器1311还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器1312可以检测计算机设备1300的机体方向及转动角度,陀螺仪传感器1312可以与加速度传感器1311协同采集用户对计算机设备1300的3d动作。处理器1301根据陀螺仪传感器1312采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器1313可以设置在计算机设备1300的侧边框和/或触摸显示屏1305的下层。当压力传感器1313设置在计算机设备1300的侧边框时,可以检测用户对计算机设备1300的握持信号,由处理器1301根据压力传感器1313采集的握持信号进行左右手识别或快捷操作。当压力传感器1313设置在触摸显示屏1305的下层时,由处理器1301根据用户对触摸显示屏1305的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器1314用于采集用户的指纹,由处理器1301根据指纹传感器1314采集到的指纹识别用户的身份,或者,由指纹传感器1314根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1301授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1314可以被设置计算机设备1300的正面、背面或侧面。当计算机设备1300上设置有物理按键或厂商logo时,指纹传感器1314可以与物理按键或厂商logo集成在一起。

光学传感器1315用于采集环境光强度。在一个实施例中,处理器1301可以根据光学传感器1315采集的环境光强度,控制触摸显示屏1305的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1305的显示亮度;当环境光强度较低时,调低触摸显示屏1305的显示亮度。在另一个实施例中,处理器1301还可以根据光学传感器1315采集的环境光强度,动态调整摄像头组件1306的拍摄参数。

接近传感器1316,也称距离传感器,通常设置在计算机设备1300的前面板。接近传感器1316用于采集用户与计算机设备1300的正面之间的距离。在一个实施例中,当接近传感器1316检测到用户与计算机设备1300的正面之间的距离逐渐变小时,由处理器1301控制触摸显示屏1305从亮屏状态切换为息屏状态;当接近传感器1316检测到用户与计算机设备1300的正面之间的距离逐渐变大时,由处理器1301控制触摸显示屏1305从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图13中示出的结构并不构成对计算机设备1300的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

在示例性实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由电子设备的处理器加载并执行以实现上述方法实施例中的数据包重传方法。

可选地,上述计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本文中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

以上仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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