一种发送报文的方法、装置、芯片及终端转让专利

申请号 : CN202011545975.4

文献号 : CN112713970B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张钟邓宇杨能

申请人 : 华为技术有限公司

摘要 :

本发明实施例记载了一种发送报文的方法、装置、芯片和终端,所述方法用于终端,所述终端包括基带处理器、应用处理器和通信接口,所述方法包括基带处理器向应用处理器上报第一报文的信息,第一报文为被所述基带处理器丢弃的待发送报文;应用处理器根据所述第一报文的信息向所述基带处理器传输第二报文,所述第二报文与所述第一报文相同;基带处理器通过所述通信接口向网络设备发送所述第二报文。这样,可以一定程度上减少终端重传报文的时延,使得终端与网络的数据通信更加顺畅。

权利要求 :

1.一种发送报文的方法,所述方法用于终端,所述终端包括基带处理器、应用处理器和通信接口,其特征在于,所述方法包括:所述基带处理器向所述应用处理器上报第一报文的信息,所述第一报文为被所述基带处理器丢弃的待发送报文,所述第一报文的信息包括所述第一报文的标识;

所述应用处理器根据所述第一报文的信息向所述基带处理器传输第二报文,所述第二报文与所述第一报文相同;

所述基带处理器通过所述通信接口向网络设备发送所述第二报文。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述基带处理器根据丢弃报文的原因,确定所述第一报文,所述丢弃报文的原因包括未建立无线资源控制RRC连接、所述基带处理器接收到演进无线接入网无线接入承载管理消息ERABM、所述终端在不同的无线蜂窝网络之间切换、分组数据汇聚协议PDCP重配置、无线链路层RLC重配置、无线链路层控制RLC重建、PDCP队列满和业务中断中的至少一种,所述第一报文为缓存队列中的数据包、PDCP队列中待发送的报文、加入所述缓存队列失败的报文或者加入所述PDCP队列失败的报文。

3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:所述基带处理器确定所述终端的数据连接为可用或者不可用,其中,所述终端的数据连接为不可用的情况包括检测到以下任意一个事件:终端处于掉网状态,终端未正常驻留在任何服务小区,终端数据业务开关处于关闭状态,电路域回落CSFB到2G,以及终端使用2G网络通话中。

4.根据权利要求1或2所述的方法,其特征在于,所述基带处理器向所述应用处理器上报第一报文的信息,包括:

在所述终端的数据连接可用的情况下,所述基带处理器向所述应用处理器上报所述第一报文的信息。

5.根据权利要求1或2所述的方法,其特征在于,所述基带处理器向所述应用处理器上报第一报文的信息,包括:

在所述终端的数据连接不可用的情况下,所述基带处理器缓存所述第一报文的信息,在所述终端的数据连接由不可用切换为可用时,所述基带处理器向所述应用处理器上报所述第一报文的信息。

6.根据权利要求1或2所述的方法,其特征在于,在所述应用处理器根据所述第一报文的信息向所述基带处理器传输第二报文后,所述方法还包括:所述应用处理器增加拥塞窗口。

7.根据权利要求1或2所述的方法,其特征在于,所述第一报文的标识为所述第一报文的序列号,

所述应用处理器根据所述第一报文的信息向所述基带处理器传输第二报文,包括:所述应用处理器将与所述第一报文的序列号相同的所述第二报文传输给所述基带处理器。

8.一种发送报文的装置,其特征在于,所述装置包括基带处理器、应用处理器和发送器;

所述基带处理器用于向所述应用处理器上报第一报文的信息,所述第一报文为被所述基带处理器丢弃的待发送报文,所述第一报文的信息包括所述第一报文的标识;

所述应用处理器用于根据所述第一报文的信息向所述基带处理器传输第二报文,所述第二报文与所述第一报文相同;

所述基带处理器还用于通过所述发送器向网络设备发送所述第二报文。

9.根据权利要求8所述的装置,其特征在于,所述基带处理器还用于根据丢弃报文的原因,确定所述第一报文,所述丢弃报文的原因包括未建立无线资源控制RRC连接、所述基带处理器接收到演进无线接入网无线接入承载管理消息ERABM、所述装置在不同的无线蜂窝网络之间切换、分组数据汇聚协议PDCP重配置、无线链路层RLC重配置、无线链路层控制RLC重建、PDCP队列满和业务中断中的至少一种,所述第一报文为缓存队列中的数据包、PDCP队列中待发送的报文、加入所述缓存队列失败的报文或者加入所述PDCP队列失败的报文。

10.根据权利要求8或9所述的装置,其特征在于,所述基带处理器还用于确定所述装置的数据连接为可用或者不可用,其中,所述装置的数据连接为不可用的情况包括检测到以下任意一个事件:装置处于掉网状态,装置未正常驻留在任何服务小区,装置的数据业务开关处于关闭状态,电路域回落CSFB到2G,以及装置使用2G网络通话中。

11.根据权利要求8或9所述的装置,其特征在于,在向所述应用处理器上报第一报文的信息的方面,

所述基带处理器用于在所述装置的数据连接可用的情况下,向所述应用处理器上报所述第一报文的信息。

12.根据权利要求8或9所述的装置,其特征在于,在向所述应用处理器上报第一报文的信息方面,

所述基带处理器用于在所述装置的数据连接不可用的情况下,缓存所述第一报文的信息;以及在所述装置的数据连接由不可用切换为可用时,向所述应用处理器上报所述第一报文的信息。

13.根据权利要求8或9所述的装置,其特征在于,所述应用处理器还用于,在根据所述第一报文的信息向所述基带处理器传输第二报文后,增加拥塞窗口。

14.根据权利要求8或9所述的装置,其特征在于,所述第一报文的标识为所述第一报文的序列号,在根据所述第一报文的信息向所述基带处理器传输第二报文的方面,所述应用处理器用于将与所述第一报文的序列号相同的所述第二报文传输给所述基带处理器。

15.一种芯片,所述芯片通过射频器件与网络设备建立数据连接,所述芯片包括应用处理器和基带处理器,其特征在于,所述基带处理器用于向所述应用处理器上报第一报文的信息,所述第一报文为被所述基带处理器丢弃的待发送报文,所述第一报文的信息包括所述第一报文的标识;所述应用处理器用于根据所述第一报文的信息向所述基带处理器传输第二报文,所述第二报文与所述第一报文相同;所述基带处理器还用于通过所述射频器件向网络设备发送所述第二报文。

16.根据权利要求15所述的芯片,其特征在于,所述基带处理器还用于根据丢弃报文的原因,确定所述第一报文,所述丢弃报文的原因包括未建立无线资源控制RRC连接、所述基带处理器接收到演进无线接入网无线接入承载管理消息ERABM、所述芯片所在的终端在不同的无线蜂窝网络之间切换、分组数据汇聚协议PDCP重配置、无线链路层RLC重配置、无线链路层控制RLC重建、PDCP队列满和业务中断中的至少一种,所述第一报文为缓存队列中的数据包、PDCP队列中待发送的报文、加入所述缓存队列失败的报文或者加入所述PDCP队列失败的报文。

17.根据权利要求15或16所述的芯片,其特征在于,所述基带处理器还用于确定所述芯片所在的终端的数据连接为可用或者不可用,其中,所述芯片所在的终端的数据连接为不可用的情况包括检测到以下任意一个事件:终端处于掉网状态,终端未正常驻留在任何服务小区,终端数据业务开关处于关闭状态,电路域回落CSFB到2G,以及终端使用2G网络通话中。

18.根据权利要求15或16所述的芯片,其特征在于,在向所述应用处理器上报第一报文的信息的方面,所述基带处理器用于在所述芯片的数据连接可用的情况下,向所述应用处理器上报所述第一报文的信息。

19.根据权利要求15或16所述的芯片,其特征在于,在向所述应用处理器上报第一报文的信息方面,所述基带处理器用于在所述芯片的数据连接不可用的情况下,缓存所述第一报文的信息;以及在所述芯片的数据连接由不可用切换为可用时,向所述应用处理器上报所述第一报文的信息。

20.根据权利要求15或16所述的芯片,其特征在于,所述应用处理器还用于,在根据所述第一报文的信息向所述基带处理器传输第二报文后,增加拥塞窗口。

21.根据权利要求15或16所述的芯片,其特征在于,所述第一报文的标识为所述第一报文的序列号,在根据所述第一报文的信息向所述基带处理器传输第二报文的方面,所述应用处理器用于将与所述第一报文的序列号相同的所述第二报文传输给所述基带处理器。

22.一种终端,所述终端包括应用处理器、基带处理器、存储器和通信接口,所述应用处理器、基带处理器、通信接口和存储器连接,其特征在于所述应用处理器、基带处理器和通信接口通过调用所述存储器中存储的指令,执行权利要求1到7任一权利要求所述的方法。

23.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行权利要求1到7任一权利要求所述的方法。

说明书 :

一种发送报文的方法、装置、芯片及终端

技术领域

[0001] 本发明涉及通信领域,更具体的涉及一种发送报文的方法、装置、芯片及终端。

背景技术

[0002] 移动上网已经成为终端的主要特性,终端接入网络所使用的技术方案也不断发展,极大地丰富了终端产品的信息获取速率,移动通信领域常用的TCP/IP(Transmission 
Control Protocol//Internet Protocol传输控制/因特网互联协议)是一种面向连接的、
可靠的、基于字节流的传输层通信协议。
[0003] 在终端使用TCP/IP协议接入网络的过程中,常常会碰到报文被丢弃(也被称为丢包)的情况,当前的处理方法往往是发送端对数据进行重传,目前的处理方法依赖于接收端
的反馈判断是否发生丢包,例如发送端未在指定时间段内接收到接收端发送的反馈消息如
ACK,则判断发生丢包,然后重新发送包括被丢弃的报文的数据的报文,这种解决方式使得
终端对丢包的响应时延较大,终端与网络网络设备的数据传输的卡顿时间较长,实时通信
质量影响较大。

发明内容

[0004] 有鉴于此,本发明实施例提供了一种发送报文的方法、装置。芯片和终端,能够降低终端对基带处理器丢弃的待发送报文的重传的时延,从一定程度上改善终端对丢包的响
应时延,使得终端与网络的数据传输更加流畅。
[0005] 第一方面,本发明实施例提供一种发送报文的方法,所述方法用于终端,所述终端包括基带处理器、应用处理器和通信接口,其特征在于,所述方法包括:所述基带处理器向
所述应用处理器上报第一报文的信息,所述第一报文为被所述基带处理器丢弃的待发送报
文,所述第一报文的信息包括所述第一报文的标识;所述应用处理器根据所述第一报文的
信息向所述基带处理器传输第二报文,所述第二报文与所述第一报文相同;所述基带处理
器通过所述通信接口向网络设备发送所述第二报文。
[0006] 需要说明的是,被所述基带处理器丢弃的待发送报文,又可以理解为所述应用处理器下发给所述基带处理器,而没有成功由所述基带处理器通过所述通信接口向网络设备
发送的报文。
[0007] 需要说明的是,网络设备可以是基站、服务器等设备。
[0008] 第二报文可以理解为是第一报文的副本。
[0009] 一种实现方式下,第一报文的信息还可以包括该第一报文所属的TCP连接的标识。这样,应用处理器可以基于该TCP连接的标识,使用与该第一报文相同的TCP连接发送第二
报文。
[0010] 这样,基带处理器在丢弃待发送的报文后,可以向应用处理器上报被该基带处理器丢弃的待发送报文的信息,使得应用处理器能够根据该上报的信息,重新向基带处理器
下发被该基带处理器丢弃的报文的副本,而无需等待到该报文的超时计时器超时而仍未接
收到对端的确认报文,才确定该报文被丢弃而重新向基带处理器发送报文,可以降低终端
对基带处理器丢弃的待发送报文的重传的时延,一定程度上改善终端对丢包的响应时延,
使得终端与网络的数据传输更加流畅。由于无线蜂窝网络的状态经常发生变化,基带处理
器将待发送的报文丢弃的情况时常发生。
[0011] 在第一方面的一种实现方式中,所述基带处理器向所述应用处理器上报第一报文的信息,包括:在所述终端的数据连接可用的情况下,所述基带处理器向所述应用处理器上
报所述第一报文的信息。
[0012] 数据连接是用于承载数据业务的连接。终端的数据连接可以理解为是终端与基站之间的数据连接。
[0013] 在第一方面的一种实现方式中,所述基带处理器根据丢弃报文的原因,确定所述第一报文, 所述丢弃报文的原因包括未建立无线资源控制RRC连接、所述基带处理器接收
到演进无线接入网无线接入承载管理消息ERABM、所述终端在不同的无线蜂窝网络之间切
换、分组数据汇聚协议PDCP重配置、无线链路层RLC重配置、无线链路层控制RLC重建、PDCP
队列满和业务中断中的至少一种,所述第一报文为缓存队列中的数据包、PDCP队列中待发
送的报文、加入所述缓存队列失败的报文或者加入所述PDCP队列失败的报文。
[0014] 在第一方面的一种实现方式中,在所述终端的数据连接不可用的情况下,所述基带处理器缓存所述第一报文的信息,在所述终端的数据连接由不可用切换为可用时,所述
基带处理器向所述应用处理器上报所述第一报文的信息。
[0015] 需要理解的是,终端可以通过例如周期性检测、事件触发或者指令触发等形式确定该终端的数据连接可用或者不可用。以下任意一种情况下终端的数据连接不可用:终端
数据连接不可用的情况有终端处于掉网状态,或者终端未正常驻留在任何服务小区,或者
终端数据业务开关处于关闭状态,或者CSFB(Circuit Switched Fallback,电路域回落)到
2G,以及终端处于2G通话场景。
[0016] 需要说明的是,在所述终端的数据连接由不可用切换为可用时,所述基带处理器向所述应用处理器上报所述第一报文的信息,表示所述基带处理器向所述应用处理器上报
所述第一报文的信息是接着所述终端的数据连接由不可用切换为可用发生的,由于读取指
令、进行相关操作等需要时间,故不要求严格的同时。也就是基带处理器在所述终端的数据
连接由不可用切换为可用这个状态切换产生后的一段时长较小(如几毫秒几秒)的时间内,
所述基带处理器完成向所述应用处理器上报所述第一报文的信息的动作。
[0017] 至少在这种实现方式下,该基带处理器只在数据连接的情况下向应用处理器上报丢弃的待发送报文信息,可以提高重传的有效率。仅在数据连接可用的情况下向应用处理
器上报丢弃的待发送报文信息,可以减少终端的能耗。
[0018] 根据上述任意一种实现方式,在另一种实现方式中,在所述应用处理器根据所述第一报文的信息向所述基带处理器传输第二报文后,所述方法还包括:所述应用处理器增
加拥塞窗口。
[0019] 由于该应用处理器向基带处理器传输第二报文后,可能导致拥塞窗口减少,这样,可以消除超时重传影响,保证终端的发包数量,提高终端的传输吞吐率。
[0020] 根据上述任意一种实现方式,在另一种实现方式中,所述第一报文的标识为所述第一报文的序列号,所述应用处理器根据所述第一报文的信息向所述基带处理器传输第二
报文,包括:所述应用处理器将与所述第一报文的序列号相同的所述第二报文传输给所述
基带处理器。
[0021] 在一些实现方式下,基带处理器还上报了第一报文所属的TCP连接的标识,则该标识为所述第一报文所在TCP连接的源端口号,该应用处理器可以使用上报的源端口号,发送
该第二报文。
[0022] 第二方面,本发明实施例提供一种发送报文的装置,所述装置包括基带处理器、应用处理器和发送器;所述基带处理器用于向所述应用处理器上报第一报文的信息,所述第
一报文为被所述基带处理器丢弃的待发送报文,所述第一报文的信息包括所述第一报文的
标识;所述应用处理器用于根据所述第一报文的信息向所述基带处理器传输第二报文,所
述第二报文与所述第一报文相同;所述基带处理器还用于通过所述发送器向网络设备发送
所述第二报文。
[0023] 由于第二方面是第一方面对应的装置,其各种实现方式及说明以及技术效果请参照第一方面的描述。
[0024] 第三方面,提供一种芯片,所述芯片通过射频器件与网络设备建立数据连接,所述芯片包括应用处理器和基带处理器,其特征在于,所述基带处理器用于向所述应用处理器
上报第一报文的信息,所述第一报文为被所述基带处理器丢弃的待发送报文,所述第一报
文的信息包括所述第一报文的标识;所述应用处理器用于根据所述第一报文的信息向所述
基带处理器传输第二报文,所述第二报文与所述第一报文相同;所述基带处理器还用于通
过所述射频器件向网络设备发送所述第二报文。
[0025] 第三方面是第二方面的一种具体的产品形态,第三方面的各种实现方式及说明以及技术效果请参照第二方面,此处不再赘述。
[0026] 第四方面,提供一种终端,所述终端包括应用处理器、基带处理器、存储器和通信接口,所述应用处理器、基带处理器、通信接口和存储器连接,所述应用处理器、基带处理器
和通信接口通过调用所述存储器中存储的指令,执行第一方面中各种实现方式中任意一种
的方法。
[0027] 第五方面,提供一种存储介质,用于存储可以实现第一方面中各种实现方式中任意一种的方法。
[0028] 第六方面,提供一种计算机程序产品,该计算机程序产品中包括代码,该代码被应用处理器和基带处理器配合运行时,可以实现第一方面中各种实现方式中任意一种的方
法。
[0029] 第四方面到第六方面的各种实现方式及说明以及技术效果请参照第一方面,此处不再赘述。

附图说明

[0030] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领
域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附
图。
[0031] 图1为本发明实施例的一个系统组网示意图;
[0032] 图2为本发明实施例的一个终端硬件结构示意图;
[0033] 图3为本发明实施例的一个终端软件架构示意图;
[0034] 图4为本发明实施例提供TCP报文格式示意图;
[0035] 图5为本发明实施例提供的一种发送报文的方法的示意图;
[0036] 图6为本发明实施例提供的一种发送报文的装置的示意图;
[0037] 图7为本发明实施例提供的一种终端的示意图;
[0038] 图8为本发明实施例提供的一种发送端与接收端之间传输报文的封装过程的示意图。

具体实施方式

[0039] 本发明实施例提供了一种,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,
而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳
动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0040] 以下为本发明实施例涉及的一些技术名词:
[0041] 拥塞窗口,指TCP数据传输中,数据的源端在拥塞控制情况下一个RTT时间段内最多能发送的数据包的数量。拥塞窗口的退避,指数据的源端在网络出现拥塞的情况下,将拥
塞窗口减小。
[0042] 移动通讯的业务分为数据业务(Data Service)和语音业务。数据业务包含除移动通讯 CS(Circuit Switched,电路交换)域语音业务外的其他业务。数据连接,可理解为终
端与基站之间的数据连接,表示终端与基站之间用于处理数据业务的连接。终端与基站的
数据连接可用,表示终端使用蜂窝网络处理数据业务,也就是该终端能够接收到蜂窝网络
中的一基站的信号,并且该终端能使用与该基站交互数据业务的数据或者指令的功能。终
端与基站的数据连接不可用,表示该终端不可使用蜂窝网络处理数据业务,也就是说该终
端不能接收到蜂窝网络的信号,或者该终端因需要处理语音业务而不能同时与蜂窝网络中
的基站交互数据业务的数据或者指令。目前已知的终端数据连接不可用的情况有终端处于
掉网状态,或者终端未正常驻留在任何服务小区,或者终端数据业务开关处于关闭状态,或
者CSFB(Circuit Switched Fallback,电路域回落)到2G,以及终端处于2G通话场景。
[0043] 待发送报文:终端待向基站发送的报文,一般是指运行在终端上的某应用产生的需要发送给基站的数据通过协议栈封装得到的TCP报文。待发送报文中的数据可以由于用
户的某些动作或者行为产生。例如应用为浏览器,用户点击浏览器显示的某个链接,或者输
入某个网站的账号或者密码,该那么该链接的数据或者用户输入的账号或者密码就是该浏
览器需要发送给基站的数据。待发送报文中的数据也可以是应用在运行过程中为了执行某
个任务产生,例如应用为浏览器,为了周期性地刷新主页中的新闻窗口,会产生需要发送给
基站的请求数据。这些数据经过协议栈封装,得到的报文在终端未通过终端的射频器件(如
天线)发送出去前,就是待发送报文。本领域技术人员应当理解,终端是可以生成或者确定
出待发送报文的。本发明对待发送报文的产生方式不做限定。
[0044] 相同:本发明实施例中的相同表示完全相同或者实质相同,例如,第一报文与第二报文相同,在第一报文和第二报文是TCP报文的情况下,表示至少第一报文和第二报文的数
据部分、源端口号、目的端口号等信息相同,可以理解为第二报文是第一报文的一个副本,
但是允许第一报文和第二报文的报文头或者报文尾中有不影响实质的细小的不同,这些不
同可能是终端在生成报文中由于某些原因产生的,例如时间戳不同、随机产生的某些值不
同等。
[0045] 本发明实施例提供的技术方案可典型地应用于无线通信系统中,比如,例如:全球移动通讯系统(GSM,Global System of Mobile communication)网络,码分多址(CDMA,
Code Division Multiple Access)网络,时分同步码分多址(TDSCDMA,Time Division‑
Synchronous Code Division Multiple Access)网络,宽带码分多址(WCDMA,Wideband 
Code Division Multiple Access Wireless)网络,通用分组无线业务(GPRS,General 
Packet Radio Service) 网络,长期演进(LTE,Long Term Evolution)网络,软件定义网络
(SDN,Software Defined Network),无线传感器网络(Wireless Sensor Network)等。
[0046] 图2是本发明实施例提供的一种通信系统100的简化框图,该通信系统100仅作为本发明的一种应用场景,不应理解为对本发明应用场景的限定。
[0047] 本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等 (如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
[0048] 如图2所示,该通信系统100包括终端10、接入点11、网关12、广域网13、以及服务器20。本发明实施例中的终端10,可以是移动终端(Mobile Terminal),例如手机、平板电脑、
运动相机、笔记本电脑等便携式、穿戴式、或者车载的移动设备,也可以是一些能够接入蜂
窝网络的计算机、服务器等设备,甚至是能够接入蜂窝网络的路由器、网关等网络设备等,
例如,可以使用SIM(Subscriber Identification Module,客户识别模块)卡的路由器或者
网关,本发明实施例以手机为例进行说明。服务器20可以为应用服务器,服务器代理,数据
中心服务器或者是路由器、网关等网络设备。
[0049] 所属领域的技术人员可以理解一个通信系统通常可包括比图2中所示的部件更少或更多的部件,或者包括与图2中所示部件不同的部件,图2仅仅示出了与本发明实施例所
公开的实现方式更加相关的部件。例如,虽然图2中示出了一个服务器20,但所属领域的技
术人员可理解成一个通信系统可包含任何数量的服务器。
[0050] 广域网14可包括公用网络、专用网络、因特网的一部分和/或其任何组合。接入点可以为基站,无线局域网(WLAN)接入点或其他形式的接入点,网关12和接入点11可包括在
一个无线网络中,出于简洁之目的,该无线网络的其它部分并未进行阐述。
[0051] 图2进一步示出了终端10硬件结构,根据图2,终端10包括应用处理器110、存储器 120、通信子系统130和电源管理子系统140。其中,存储器120存储可执行程序,该可执行程
序包括操作系统和应用程序。应用处理器(Application Processor)110,用于运行操作系
统和应用程序的处理器。
[0052] 在一个实施例中,应用程序为网页浏览器,则服务器20为网页内容提供商的服务器。在另一个实施例中,第一应用程序是在线视频播放器,则服务器20为视频内容提供商服
务器。在另一个实施例中,第一应用程序是即时通讯软件,则服务器20为即时通讯服务提供
商的服务器。
[0053] 通信子系统130主要实现基带处理、调制解调、信号放大和滤波、均衡等功能。通信子系统130包括基带处理器131(Communication Processor,CP),也称为无线调制解调器
(Modem)、射频模块132和天线133。需要说明的是,基带处理器131可以和Wi‑Fi模块150集成
在同一芯片中,另一方面,基带处理器131和应用处理器110可以集成在同一芯片中,也可以
各自为独立的芯片,图2仅为示意性表达。电源管理子系统140用于系统的供电。
[0054] 存储器120一般包括内存和外存。内存可以为随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)等。外存可以为硬盘、光盘、USB盘、软盘或磁带机等。可执行程
序通常被存储在外存上,应用处理器110会将可执行程序从外存加载到内存后再执行该程
序。
[0055] 可选地,终端10还包括Wi‑Fi(Wireless Fidelity,无线保真)模块150,Wi‑Fi模块150 支持IEEE 802.11系列协议,终端10可以通过Wi‑Fi模块150接入WLAN。
[0056] 可选地,终端10还包括显示器160,用于显示由用户输入的信息或提供给用户的信息以及终端10的各种菜单界面等。显示器160可为液晶显示器(英文:Liquid Crystal 
Display,LED) 或有机发光二极管(英文:Organic Light‑Emitting Diode,OLED)等。在其
他一些实施例中,显示器160上可以覆盖触控面板,以形成触摸显示屏。
[0057] 除以上之外,终端10还可以包括用于拍摄照片或视频的摄像头180、一个或多个传感器 170,例如重力传感器、加速度传感器、光传感器等。
[0058] 此外,所属领域的技术人员可以理解终端10可包括比图2中所示部件更少或更多的部件,图2所示的终端10仅示出了与本发明实施例所公开的多个实现方式的更加相关的
部件。
[0059] 下面进一步描述终端10的软硬件环境。终端10按照逻辑层级可以被划分为:硬件层,操作系统,以及运行在操作系统之上的应用层(也称用户态)。其中,硬件层包括图2相关
的实施例所描述的硬件,比如应用处理器110,存储器120,Wi‑Fi模块150等等。操作系统可
以为 操作系统, 操作系统,Windows操作系统或其它类型的操作系统,本发
明实施例不做限定。
[0060] 在一个实施例中,操作系统包括:框架层(Framework)、内核态和驱动层。驱动层包括传感器驱动、Wi‑Fi驱动、显示器驱动等硬件设备的驱动程序。内核态包括TCP协议栈、IP 
协议栈等,下文将结合本发明实施例涉及的方法流程对内核态做进一步说明。框架层包括
用户层与内核态之间进行通信的接口,以及一些服务,如图形服务(Graphic Service)224、
系统服务(System service)221、网页服务(Web Service)222和用户服务(Customer 
Service) 223等应用层运行应用,这些应用往往可以直接通过显示器与用户交互,例如图
库、媒体播放器(Media Player)、浏览器(Browser)以及微信(wechat)等。操作系统和应用
层的应用程序均可以可执行程序的形式存储于存储器120中,本发明实施例所使用的术语
“程序”应被广泛地解释为包括但不限于:指令,指令集,代码,代码段,子程序,软件模块,应
用,软件包,线程,进程,函数,固件,中间件等。如图2所示,终端10可以通过通信子系统 130
来接入蜂窝网络,然后通过广域网13与服务器20通信。在另一个实施例中,终端10也可以通
过Wi‑Fi模块150来接入WLAN,然后通过广域网13与服务器20通信。以传输协议为 TCP/IP协
议为例,终端10接入网络后,可以通过TCP/IP协议栈(指TCP协议栈和IP协议栈)与服务器20
建立TCP连接,然后利用该TCP连接传输数据。TCP/IP协议栈是用于实现 TCP/IP参考模型所
定义的TCP/IP协议簇的中间件。TCP协议栈可由终端10上的软件、硬件和/或固件的适当组
合执行。TCP/IP协议簇包括两个核心协议:TCP(传输控制协议)和IP (网际协议)。终端10与
服务器20之间的TCP连接的建立可由终端10上运行的应用程序发起。以图3中的浏览器213
为例,浏览器213生成套接字开启(socket open)命令,该命令被传递给终端10的TCP协议
栈,以触发TCP协议栈通过三次消息交互(也称为“三次握手”) 与服务器20建立TCP连接,然
后,TCP协议栈通知浏览器213连接已经建立。下文以TCP协议为例介绍本申请的方案。当然,
本申请的方法同样适用于使用其他传输协议传输报文的场景,本申请对用于传输报文的传
输协议不做限制。例如,该其他传输协议可以是用户数据报文协议(User Datagram 
Protocol,UDP),流控制传输协议(Stream Control Transmission Protocol,SCTP)等等。
[0061] 接下来,浏览器213和服务器20就可以基于建立的TCP连接传送TCP报文了。TCP报文的格式如图4所示,其中,源端口和目的端口用于确定发送端和接收端应用进程,通过源
端口、目的端口、源IP地址和目的IP地址可以唯一确定一个TCP连接;TCP报文头部的序列号
(Sequence Number,一般也简称为seq)字段携带报文负荷中第一个数据字节的序列号。接
收端在接收到TCP报文后,发送确认报文(Acknowledgement,简称ACK)报文至发送端。 ACK
头部的确认号(Acknowledge Number,一般也简称为ack)字段值,表征接收端接收到的报文
的"Sequence Number"字段的值,同时也意味着接收端已经接收到发送端发送所有 "
Sequence Number"的值小于所述ACK报文的"Acknowledge Number"的报文。窗口大小用于
指示接收端当前接收缓冲区的大小。另外,TCP报文头部还有6个标志位以及一个可自定义
的选项(Option)字段,选项字段可以用于携带额外的信息;其中6个标志位的定义如下:
[0062] URG:紧急指针有效;
[0063] ACK:确认号有效;
[0064] PSH:立即上送应用层处理;
[0065] RST:异常复位;
[0066] SYN:同步标志,置1建立连接;
[0067] FIN:终止标志,请求释放连接。
[0068] 下面简单介绍TCP重传及拥塞控制机制,为了简化描述,本发明部分实施例中将已建立通信连接的两个设备中的一个称为发送端,另一个称为接收端。可以理解的是,发送端
和接收端可以是具有数据收发能力的任何设备,比如,发送端可以是上述的服务器20,接收
端可以使上述的终端10。另外,发送端和接收端是两个相对的角色,且可以互相转换,即同
一设备在不同的场景下可能是发送端,也有可能是接收端。
[0069] TCP的重传机制保证了报文的可靠传输,重传机制主要包括超时重传和快速重传。超时重传的基本过程是:发送端在发送一个报文后就开启一个超时计时器,如果超时计时
器的计时时间到,发送端仍没有接收到表征该报文已被正确接收的确认报文,就重新发送
该报文。超时计时器的值一般表示为RTO(Retransmission TimeOut),RTO通常设置为与RTT
(Round Trip Time)相同,也就是一个报文从发出去到回来所用的时间,RTT可以通过采样
的方式得出。
[0070] 然而应当理解的是,无线通信系统为终端提供服务,而随着技术的发展,终端往往支持多种通信协议,例如支持2G、3G和4G网络等,由于终端位置的移动等原因,网络经常会
不稳定或者信号强度产生变化,例如在电梯、地下停车场等信号较弱的区域,或者终端位于
动车、高铁等快速移动的交通工具上的场景,网络信号的不稳定使得终端网络连接状态发
生改变,例如终端会在不同种类的蜂窝网络中切换,如LTE切换到WCDMA,或者在某段时间内
终端从网络中断开以及重连,这种改变在某段时间内甚至是频繁的,在这类场景下,在终端
作为发送端的情况下,终端的Modem可能会将待发送到蜂窝网络中的报文在发送过程中丢
弃,这种情况产生的丢包也可称为主动丢包。因此,主动丢包是使用蜂窝网络的终端经常发
生的。
[0071] 可见主动丢包是报文未进入网络传输就发生的一种行为,数据并不是在网络传输过程中丢失的,而根据上文的描述,TCP的重传机制并不区分报文丢失的原因,一般都需要
等待网络侧反馈才重传,使得移动终端对主动丢包的响应时延较长,本发明实施例提出本
发明实施例主要为实现应用处理器110中的TCP协议栈能够感知基带处理器131中待发送的
数据的丢包而进行了优化,以减少移动终端对主动丢包的响应的时延。可以理解的是,本发
明实施例的方法同样适用于具有报文重传机制的其它可靠性传输协议。本发明实施例以
TCP报文为例进行描述。
[0072] 图3进一步描述了图1中应用处理器110和基带处理器131在本发明实施例中,配合处理数据过程中涉及的软件架构,其中,应用处理器110可以看做是一个处理器核,基带处
理器131(也称为Modem)则看做是另一个处理器核,该软件架构可以支撑这两个核之间数据
通信的机制,两个核之间的通信遵循具体的核间通信协议,本发明实施例对核间通信协议
的种类不做限定,而以下结合图3简单描述本发明实施例涉及的终端作为数据的源端向网
络侧设备发送数据包的过程,其中,应用处理器110中,应用层的应用(APP,application)通
过 TCP连接的源端的socket接口,将数据包经过内核(也称内核态)的TCP协议栈以及IP协
议栈后,使用应用处理器110和Modem内各自用于进行核间通信的任务(task,也可以理解为
rd
线程),将数据包传递给Modem中的3GPP(3 Generation Partnership Project,第三代合作
伙伴计划)协议栈(也可以理解为任务或者线程),3GPP协议栈再通过通信子系统130 中的
硬件,将该数据包从中终端发送出去。3GPP协议栈用于承载一种或多种数据链路层和物理
层的通信协议,主要是用于各种蜂窝网络的通信协议,并不局限于3G网络的各种通信协议,
例如可以是GSM,CDMA,LTE等,本发明不做限制。本发明实施例中终端的内核的种类由终端
操作系统的种类决定,本发明不做限制,例如可以是linux内核(Andriod内核),Windows 内
核等。在一种实现方式下,应用处理器110与Modem传输数据量较大的数据(如数据包等) 与
传输数据量较小的信息(如心跳信息,控制指令等)所使用的核间通信任务是不同的。进一
步的,传输数据量较小的信息所使用的核间通信任务的实现可以为,在应用处理器110和基
带处理器131中各运行一个任务,这两个任务可以相互传输数据量较小的信息,两个处理器
可以通过这两个任务间的通信实现处理器之间的信息传输。
[0073] 具体的,Modem中用于与应用处理器110传输数据包的任务以及3GPP协议栈都具有自己的数据包缓存队列,这些数据包缓存队列往往配置有定时器来监控这些队列。具体的,
3GPP 协议栈中不同的协议,往往对应不同的数据包缓存队列,例如,LTE协议使用PDCP
(Packet Data Convergence Protocol,分组数据汇聚协议)队列,WCDMA或者TDSCDMA协议
使用PDCP或RLC (Radio Link Control,无线链路层控制)队列。在多种情况下,数据包缓存
队列中的数据包会被Modem主动丢弃,而无法向网络设备发送。以下简单列举一些典型的丢
包场景,应理解,本发明实施例中的丢包场景并不局限于以下的例子。
[0074] 例如,Modem中用于与处理器110传输数据包的任务,在接到来自应用处理器110的数据包后,通常会确定RRC连接是否已经建立,如果RRC连接已建立,则将该接收到的数据包
传输给3GPP协议栈处理,如果RRC连接没有建立,则将该数据包缓存入该任务的队列中,等
待RRC连接建立成功后继续传输。该任务会在数据包存入缓存队列失败的情况下将数据包
丢弃,或者在该任务的缓存队列的定时器常超时且仍未成功建立RRC连接的情况下,会丢弃
缓存队列中的数据包,或者该任务在收到用于清除该任务的数据包缓存队列的ERABM(E‑
utran Radio Access Bearer Mange,演进无线接入网无线接入承载管理)消息后,会主动
清空缓存队列中的数据包。
[0075] 3GPP协议栈可以通过检测,发现会导致该终端不可用蜂窝网络处理数据业务的事件,从而确定该终端的数据连接是否可用。例如,终端处于掉网状态,或者终端未正常驻留
在任何服务小区,或者终端数据业务开关处于关闭状态,或者CSFB(Circuit Switched 
Fallback,电路域回落)到2G,以及终端处于2G通话场景,以上几种场景中,该终端的数据连
接不可用。本发明实施例对导致终端数据连接不可用的事件不做限制。或者3GPP协议栈可
以通过收集一些用于表征该终端是否能使用蜂窝网络处理数据业务的参数,如终端接收到
的蜂窝网络的信号强度、该终端接入的蜂窝网络的类型以及该终端是否在运行语音业务
等,基带处理器根据预先设置的算法计算出该终端当前的数据连接是否可用,本发明实施
例不对具体的参数和算法进行限制。上述的检测或者计算都可以是3GPP协议栈周期性进行
的,或者是由某些指令触发的,或者是由上述的事件触发的,本发明实施例对3GPP协议栈如
何确定终端的数据连接是否可用,不做限制。应该理解,在终端使用蜂窝网络处理数据业务
的过程中,会涉及到 RRC(Radio Resource Control,无线资源控制)的建链与拆链,这是在
终端与基站进行数据业务的交互过程中经常发生的,实际上是在终端与基站的数据连接可
用的情况下,进一步建立TCP连接的过程,是在物理层(Physical Layer)以及媒介访问控制
层(Medium Access Control)之上的连接。因此,在本发明实施例中,RRC的建链与拆链都是
在终端的数据连接可用的前提下发生的。终端确定数据连接是否可用与RRC的建链与拆链
无关。
[0076] 另一方面,3GPP协议栈在以下情况下可能会主动丢弃待发送的报文:
[0077] 不同的无线蜂窝网络之间的切换。例如从LTE网络切换到WCDMA或者TDSCDMA或者GSM 网络,这在实际场景中可能是由于4G网络不稳定而无法连接到4G基站,或者当前未使
用VoLTE (Voice overLTE)技术的场景中在LTE网络下开始语音通讯(如CSFB场景,),终端
切换到 3G网络或者2G网络,该事件可能会导致L2层(即LTE2层,包括MAC层、RLC层、PDCP层) 
释放,如PDCP队列释放,Modem将清除PDCP队列中待发送的报文。又例如WCDMA或者TDSCDMA 
切换至LTE。该事件同样可能导致L2层释放。
[0078] 网络参数配置不合理。例如,在终端使用LTE网络的情况下,不合理的参数可能会导致 PDCP重配置,Modem将清除PDCP队列中的待发送报文;而在终端使用WCDMA或者
TDSCDMA 网络的情况下,不合理的参数可能会导致RLC(Radio Link Control,无线链路层
控制)重配置,RLC层位于MAC(Media Access Control,媒体访问控制)层之上,与MAC层都是
L2 层的一部分,Modem将清除待发送的报文。
[0079] 在终端使用WCDMA或者TDSCDMA网络的情况下,RNC(Radio Network Controller,无线网络控制器)切换,可能导致RLC重建,Modem清除待发送的报文。
[0080] PDCP队列满,应用处理器110下发的报文无法插入队列而被Modem丢弃。该情况可能出现在LTE网络或者WCDMA或者TDSCDMA网络中。
[0081] 在蜂窝网络中,可以有多个无线承载(也就是3GPP协议栈中数据链路层建立的链接)为应用的多个业务服务,通常一个业务使用一个承载,每个承载对应一个PDCP队列缓存
待发送的报文,在一个承载上的业务因为网络问题异常中断的情况下,Modem将主动清除该
业务对应的PDCP队列中的待发送报文。
[0082] 为了便于理解,图4是TCP报文的格式的示意图。
[0083] 以下结合图5说明本发明实施例提供的一种发送报文的方法,该方法用于终端,该终端包括应用处理器、基带处理器和通信接口,该方法包括:
[0084] S502:基带处理器向所述应用处理器上报第一报文的信息,所述第一报文为被所述基带处理器丢弃的待发送报文。
[0085] 其中,所述第一报文的信息包括所述第一报文的标识。一种实现方式下,该第一报文的信息还可以包括所述第一报文所属的TCP连接的标识。
[0086] 需要说明的是,被所述基带处理器丢弃的待发送报文,又可以理解为所述应用处理器下发给所述基带处理器,而没有成功由所述基带处理器通过所述通信接口向网络设备
发送的报文。
[0087] 基带处理器可以丢弃多个待发送报文,基于上文的描述可知,很多情况都会导致待发送报文被丢弃。具体的,基带处理器可以记录下被丢弃的待发送报文想信息,也可以监
控会使得基带处理器丢弃待发送报文的事件,例如不同的蜂窝网络之间的切换等,从而确
定被丢弃的待发送报文。本发明实施例对基带处理器如何获取被丢弃的待发送报文的信息
不做限制。
[0088] 基带处理器可以将这些丢弃的待发送报文的信息向应用处理器上报,为了描述方便,以第一报文是TCP报文为例进行叙述。该第一报文的信息包括第一报文的标识。一种实
现方式中,该第一报文标识可以是该报文的序列号。如果还包括该第一报文所属的TCP连接
的标识,则该第一报文所属的TCP连接的标识可以是该TCP连接的源端口号,根据TCP报文的
格式(如图4所示),基带处理器可以在处理待发送报文的过程中通过解析获得该序列号和
该源端口号。
[0089] 本领域技术人员应理解,基带处理器可以确定需要上报的报文的信息,具体实现方式本发明实施例不做限制。具体的传输协议也不限于TCP协议。
[0090] 在一种实现方式下,基带处理器可以选择合适的上报丢弃的待发送报文的信息的时机,在恰当的时机上报多条丢弃的报文的信息,而不限于是一发生丢包就向应用处理器
上报。具体的,在所述终端的数据连接可用的情况下,所述基带处理器向所述应用处理器上
报所述第一报文的信息。或者在所述终端的数据连接不可用的情况下,所述基带处理器缓
存所述第一报文的信息,在所述终端的数据连接由不可用切换为可用时,所述基带处理器
向所述应用处理器上报所述第一报文的信息。应理解,上述两种方式可以一起使用。
[0091] 该基带处理器的缓存队列可以缓存待上报给应用处理器的信息,该信息是被该基带处理器丢弃的待发送报文的信息。
[0092] 数据连接是用于承载数据业务的连接。终端的数据连接可以理解为是终端与基站之间的数据连接。具体的请参照前文的描述。
[0093] 需要说明的是,在所述终端的数据连接由不可用切换为可用时,所述基带处理器向所述应用处理器上报所述第一报文的信息,表示所述基带处理器向所述应用处理器上报
所述第一报文的信息是接着所述终端的数据连接由不可用切换为可用发生的,由于读取指
令、进行相关操作等需要时间,故不要求严格的同时。也就是基带处理器在所述终端的数据
连接由不可用切换为可用这个状态切换产生后的一段时长较小(如几毫秒几秒)的时间内,
所述基带处理器完成向所述应用处理器上报所述第一报文的信息的动作。
[0094] 可以理解,在这种实现方式下,该基带处理器需要确定该终端的数据连接是否可用。
[0095] 本领域技术人员应当理解需要理解的是,终端可以通过例如周期性检测、事件触发或者指令触发等形式确定该终端的数据连接可用或者不可用。本发明实施例对确定数据
连接是否可用使用的事件,具体分析过程和分析所使用的算法,以及如何触发基带处理器
确定该终端的数据连接是否可用都做限制。进一步的描述请参照前文相关的描述。
[0096] 由于该基带处理器执行S502的步骤是为了让应用处理器知道发生了丢包,以及时向该基带处理器进行重传,而基带处理器得到重传的数据包是为了将数据包向接收端发
送,故,如果在该终端的数据连接不可用的情况下重传,基带处理器仍然会因为数据连接不
可用而再次主动丢包,则应用处理器的这次重传就是无效的。故,该基带处理器只在数据连
接可用的情况下向应用处理器上报丢弃的待发送报文信息,可以提高重传的有效率。另一
方面,基带处理器执行S502的步骤需要唤醒该应用处理器,如果基带处理器一出现丢包就
上报信息,则该应用处理器会被频繁唤醒,会导致终端的能耗大大增加,而移动终端往往使
用电池,要求尽量少的耗电和尽量长的待机时间。故,仅在网络可用的情况下向应用处理器
上报丢弃的待发送报文信息,可以减少终端的能耗。
[0097] 当然,在另一种实现方式中,该基带处理器也可以不考虑该终端的数据连接是否可用,一但确定需要重传的报文的信息,就将该信息上报应用处理器。本发明实施例不做限
制。
[0098] S504:该应用处理器根据所述第一报文的信息向该基带处理器传输第二报文,所述第二报文与所述第一报文相同。
[0099] 在一种实现方式下,该第一报文的信息包括了第一报文的标识(即第一报文的序列号)和发送该第一报文使用的源端口。该应用处理器根据接收到的该第一报文的信息,获
得该第一报文以及该第一报文所在TCP连接的源端口;该应用处理器使用该源端口,重新向
该基带处理器传输该第一报文。
[0100] 该第二报文可以理解为第一报文的副本。
[0101] 应当理解的是,根据TCP传输协议,在发送端的TCP协议栈向底层发送出报文后,会将该报文的副本保存在该TCP连接的队列中,直到收到该TCP连接的接收端返回的 ACK
(Acknowledgement,确认字符),确认了该报文已成功被接收端接收,才会将该报文的副本
删除,否则就一直保存以供传输超时的情况下重传。故,该应用处理器可以根据基带处理器
上报的第一报文信息,将第二报文重新传输给该基带处理器。
[0102] S506:该基带处理器通过该通信接口向网络设备发送该第二报文。
[0103] 该网络设备可以是基站、服务器等蜂窝网络中的网络设备,本发明实施例不做限定。
[0104] 综上,基带处理器在丢弃待发送的报文后,可以向应用处理器上报被该基带处理器丢弃的待发送报文的信息,使得应用处理器能够根据该上报的信息,重新向基带处理器
下发被该基带处理器丢弃的报文的副本,而无需等待到该报文的超时计时器超时而仍未接
收到对端的确认报文,才确定该报文被丢弃而重新向基带处理器发送报文,可以降低终端
对基带处理器丢弃的待发送报文的重传的时延,一定程度上改善终端对丢包的响应时延,
使得终端与网络的数据传输更加流畅。由于无线蜂窝网络的状态经常发生变化,基带处理
器将待发送的报文丢弃的情况时常发生。
[0105] 另一方面,正如上文所述,在一种实现方式下,由于考虑功耗,基带处理器上报被丢弃的待发送报文的信息需要等到该终端接入的蜂窝网络的状态为可用,这对于一部分被
丢弃的待发送报文,上报信息就有一定的等待时间,这样就有可能导致以下两种情况:其一
某一被丢弃报文的超时计时器在基带处理器上报这个报文的信息之前就超时了,这种情况
下,可能该报文已经通过超时重传机制由TCP连接重传与该被丢弃报文相同的报文了,那么
就无需基带处理器再向应用处理器上报该被丢弃报文的信息,基带处理器可以根据接收到
的与该被丢弃报文相同的报文,将该被丢弃报文的信息过滤,也就可以避免浪费功耗和终
端的流量。其二,应用处理器在下发与某被丢弃报文相同的报文时,该被丢弃报文的超时计
时器超时,这种情况下,相当于也满足超时重传的要求,就有可能触发TCP连接的拥塞控制
方法。
[0106] 需要说明的是,TCP通过重传机制可以保证报文的可靠传输,但是现有技术中的重传机制都是默认丢包是网络拥塞造成的,一般最常见的在网络传输过程中的丢包原因就是
网络负载太重,网络设备无法负担当前时刻网络中要传输的数据量,造成网络拥塞,才将部
分在网络中传输的报文丢弃,故会与重传机制配套使用的拥塞控制方法减轻网络中的拥
塞,以提高重传报文到达对端的成功率。拥塞控制算法主要包括慢启动(Slow Start)和拥
塞避免 (Congestion Avoidance)等,简单来说,就是应用处理器得知报文丢失需要重传,
会减小一些参数的值来限制终端向网络中发送的报文的数量,例如拥塞窗口(cwnd,
congestion window)的值,慢启动阈值(ssthresh,slow start threshold)等等,通常应用
处理器就使用这调整后的参数控制向基带处理器下发重传的报文和后续的待发送报文的
速率。
[0107] 例如,如果丢包导致超时重传,则发送端可以将慢启动阈值减小为cwnd/2,然后将cwnd 置为1,重新进入慢启动过程。又例如,如果发送端根据ACK判断有报文丢失并启动快
速重传后,可以将拥塞窗口减小一半,同时将慢启动阈值设置为更新后的拥塞窗口大小。可
以理解的是,不同的算法对拥塞窗口和慢启动阈值减少的幅度和方式有所区别,但大多是
依据丢包退避的原理,即当发送端判定发生网络丢包后,主动减小拥塞窗口大小和慢启动
阈值。
[0108] 然而,由于本发明实施例中的主动丢包并不是由于网络拥塞引起的,也就不需要减少终端发送到无线网络中的报文数量,并且,由于有报文被基带处理器主动丢弃了,也需
要保证一定的报文发送量以尽快将报文传输到对端,然而将本发明实施例的方法往往在现
有的TCP 机制中使用,就难免会遇到如上文所述cwnd减小的问题。
[0109] 故,本发明实施例的一种实现方式中,在所述应用处理器根据所述第一报文的信息向所述基带处理器传输第二报文后,应用处理器增加拥塞窗口进行补偿。
[0110] 例如,可以增加cwnd到设定的初始值,也可以恢复到由于该次重传触发拥塞窗口减小之前的拥塞窗口的值。本发明实施例对应用处理器将拥塞窗口增加到什么值,采用什
么策略将拥塞窗口增加等,均不作限定。这样,可以消除超时重传影响,保证终端的发包数
量,提高终端的传输吞吐率。
[0111] 在另一个实施例中,应用处理器和基带处理器(也称为Modem)甚至可以集成在同一个芯片的同一个核上,上述方法在这样的芯片中同样适用。为了描述方便,在该实现方式
下,将这个芯片统称为处理器,则TCP协议栈和3GPP协议栈可以理解为运行在该处理器中的
两个任务(或者线程),这两个任务可以属于不同或者相同的进程,TCP协议栈和3GPP协议栈
通过线程或者进程间的通信机制进行信息的交互。该应用处理器中还运行着应用程序,应
用程序通过该TCP协议栈和3GPP协议栈向基站发送报文,例如应用程序产生的数据或者应
用程序受用户操作触发的请求等,3GPP协议栈会将丢弃了的应用程序的报文的信息,例如
报文的标识和该报文所在的TCP连接的标识通过线程或者进程间的通信机制传递给TCP协
议栈,使得TCP协议栈根据接收的被丢弃的报文的信息,给3GPP协议栈传递一与被丢弃了的
报文相同的报文,该处理器通过通信接口,向基站发送3GPP协议栈接收到的与被丢弃了的
报文相同的报文。这种实现方式下的其他细节,请参照本发明前文的实施例,此处不再赘
述。这样,可以降低终端对基带处理器丢弃的报文的重传的时延,一定程度上改善终端与网
络设备间的时延,使得终端与网络的数据传输更加流畅。
[0112] 下面结合图3的软件架构,以安卓系统的一种终端为例,描述一个实施例中,在基带处理器丢弃待发送的报文后,应用处理器和基带处理器如何配合以完成重传。其中,应用
处理器和基带处理器是两个核或者是两个独立的芯片。这个实施例中涉及的一些前文提到
的内容,请参阅前文,这里不再赘述。
[0113] 在这种实现方式下,基带处理器中包括3GPP协议栈,以及用于与应用处理器传输数据包的任务(简称为核间数据传输任务),还包括用于传输数据量较小的核间通信任务,
应用处理器中包括与基带处理器中的核间通信任务对应的另一核间通信任务,TCP协议栈,
IP协议栈,以及运行在应用处理器应用层的应用。
[0114] 基带处理器中的3GPP协议栈监测基带处理器丢弃的待发送报文,以及终端当前接入的蜂窝网络的状态,具体的可以是监控会使得基带处理器丢弃待发送报文的事件,例如
在不同的蜂窝网络之间的切换等,从而确定被丢弃的待发送报文。
[0115] 3GPP协议栈生成基带处理器丢弃的待发送报文的信息并采用队列进行存储,(其中包括丢弃的报文的序列号,还可以包括该丢弃的报文所在的TCP连接的源端口号)以及生
成表征该终端的数据连接是否可用的信息(可以是用于表征该连接是否可用的一些参数,
或者直接一个布尔值,不同的值表示可用或者不可用),将上述两种信息传递给基带处理器
中的核间通信任务,例如通过共享内存的方式传递这些信息。
[0116] 另一方面,基带处理器中用于与应用处理器传输数据包的任务也会检测该任务丢弃的报文,类似3GPP协议栈,该任务将生成的基带处理器丢弃的待发送报文的信息(其中包
括丢弃的报文的序列号)传递给基带处理器中的核间通信任务,例如通过共享内存的方式
传递这些信息。
[0117] 核间通信任务使用该任务的队列来管理得到的被丢弃的报文的信息,如果该队列已满,则该队列会丢弃队列已满后得到的被丢弃的报文的信息,以及核间通信任务根据
3GPP协议栈提供的该终端的数据连接信息,确定出该终端的数据连接为可用或者不可用。
[0118] 在该终端的数据连接为可用的情况下,该核间通信任务将队列中的被丢弃的报文的信息传输给应用处理器中的核间通信任务,以使得应用处理器的TCP/IP协议栈获知这些
被丢弃的报文的信息。
[0119] 在该终端的数据连接不可用的情况下,该核间通信任务的队列启动该队列的定时器,在该定时器超时的情况下,再次根据3GPP协议栈提供的信息确定出经过这段定时器计
时的时间后,再次确定该终端的数据连接是否可用,若该数据连接为可用,则该核间通信任
务将队列中的被丢弃的报文的信息传输给应用处理器中的核间通信任务,并清零定时器,
若是该数据连接仍然为不可用,则清零该定时器,等待下次定时器超时再判断。
[0120] 而应用处理器解析基带处理器传输的被丢弃的待发送报文的信息,以得到被丢弃报文的序列号。当然,一些实现方式下还可能包括该被丢弃报文所在的TCP连接的源端口
号。
[0121] 应用处理器使用源端口号在Linux网络协议栈中找到对应的TCP连接,并使用该被丢弃的待发送报文的序列号与该TCP连接的发送队列中报文的序列号进行比对,以找到被
丢弃的待发送报文的副本,通过TCP/IP协议栈向基带处理器发送该被丢弃的待发送报文的
副本。
[0122] 另一方面,如果在应用处理器发送该被丢弃的待发送报文的副本的过程中已经触发了TCP 的拥塞控制,例如,重传了一待发送报文的副本后,该终端的cwnd减小到1,应用处
理器将当前的cwnd值置为该终端的cwnd初始值(TCP_INIT_CWND)与cwnd减小为1之前的值
中的较小值。这样就可以消除不必要的对拥塞窗口的减小,从而消除超时重传的影响,提升
终端的吞吐率,使得更多的报文能及时发出,从而降低因丢包重传带来的时延。
[0123] 基带处理器收到应用处理器传输的待发送报文的副本,将该副本通过射频电路例如天线向发送网络设备发送。
[0124] 这样,基带处理器在丢弃待发送的报文后,可以向应用处理器上报被该基带处理器丢弃的待发送报文的信息,使得应用处理器能够根据该上报的信息,重新向基带处理器
下发被该基带处理器丢弃的报文,而无需等待到该报文的超时计时器超时而仍未接收到对
端的确认报文,才确定该报文被丢弃而重新向基带处理器发送报文,可以降低终端对基带
处理器丢弃的报文的重传的时延,一定程度上改善终端的重传时延,使得终端与网络的数
据传输更加流畅。由于无线蜂窝网络的状态经常发生变化,在基带处理器将待发送的报文
丢弃的情况时常发生。
[0125] 以下从测试结果对上述实施例中的方法的效果进行说明。使用上述实施例中的方法对终端的重传机制进行改进,能够较为明显地减小重传的时延,增加上行传输的数据的
吞吐率。为了体现蜂窝网络在弱场和高速移动的场景,选择在广州到深圳的高铁上,使用中
国联通的无线蜂窝网络进行测试。
[0126] 对传输时延,采用测试工具iPerf,采样方式为计算3GPP协议栈以及用于与应用处理器传输数据包的任务主动上报丢包的报文传输时延,源端为手机对端为服务器,优化前,
平均传输时延约为75s左右;优化后,平均传输时延约为45s左右。丢包重传平均传输时延优
化40%。
[0127] 对上行传输的吞吐率(上行传输方向为手机终端到服务器),采用测试工具iPerf,采样方式为计算每轮iPerf测试统计的平均吞吐率(每轮100s或200s,服务器侧统计),优化
前,平均吞吐率1.5Mbps左右;优化后,平均吞吐率3.3Mbps左右,平均吞吐率提升约2.2 倍。
[0128] 本发明实施例还提供一种发送报文装置600,其结构示意图如图6所示。该装置括基带处理器、应用处理器和发送器;所述基带处理器用于向所述应用处理器上报第一报文
的信息,所述第一报文为被所述基带处理器丢弃的待发送报文,所述第一报文的信息包括
所述第一报文的标识;所述应用处理器用于根据所述第一报文的信息向所述基带处理器传
输第二报文,所述第二报文与所述第一报文相同;所述基带处理器还用于通过所述发送器
向网络设备发送所述第二报文。
[0129] 在一种实现方式下,在向所述应用处理器上报第一报文的信息的方面,所述基带处理器用于在所述装置的数据连接可用的情况下,向所述应用处理器上报所述第一报文的
信息。
[0130] 结合本实施例上述各种实现方式,在向所述应用处理器上报第一报文的信息方面,所述基带处理器用于在所述装置的数据连接不可用的情况下,缓存所述第一报文的信
息;以及在所述装置的数据连接由不可用切换为可用时,向所述应用处理器上报所述第一
报文的信息。
[0131] 结合本实施例上述各种实现方式,所述应用处理器还用于,在根据所述第一报文的信息向所述基带处理器传输第二报文后,增加拥塞窗口。
[0132] 结合本实施例上述各种实现方式,所述第一报文的标识为所述第一报文的序列号,以及,如果涉及,则所述第一报文所属的TCP连接的标识为所述第一报文所在TCP连接的
源端口号,在根据所述第一报文的信息向所述基带处理器传输第二报文的方面,所述应用
处理器用于根据所述源端口号,将与所述第一报文的序列号相同的所述第二报文传输给所
述基带处理器。
[0133] 需要说明的是,关于本实施例涉及的具体的对名词、步骤的解释以及相关的有益效果,请参照前文的记载,此处不再赘述。
[0134] 可以理解的是,上述各方法实施例所描述装置可以由使用蜂窝网络提供的数据服务,传输或者执行数据业务的任何设备来实现。本发明还提供一种终端,以实现上述各个方
法实施例中的方法。该终端的结构示意图,如图7所示,该终端300包括:处理电路302,以及
与其连接的通信接口304和存储介质320。可见图6实施例中的发送器相当于通信接口304中
的发送电路。
[0135] 处理电路302用于处理数据,控制数据访问和存储,发出命令以及控制其它设备执行操作。处理电路302可以被实现为一个或多个处理器,一个或多个控制器和/或可用于执
行程序等的其它结构。处理电路302具体可以包括通用处理器,数字信号处理器(DSP),专用
集成电路 (ASIC),现场可编程门阵列(FPGA)或其它可编程逻辑组件中的至少一种。通用处
理器可以包括微处理器,以及任何常规的处理器,控制器,微控制器,或状态机。处理电路
302也可以实现为计算组件,例如DSP和微处理器的组合。
[0136] 本发明实施例中,处理电路包括应用处理器309和基带处理器310。
[0137] 存储介质306可以包括计算机可读存储介质,如磁存储设备(例如,硬盘,软盘,磁条),光存储介质(例如,数字多功能盘(DVD)),智能卡,闪存设备,随机存取存储器(RAM),只
读存储器(ROM),可编程ROM(PROM),可擦除PROM(EPROM),寄存器,以及它们的任意组合。存
储介质306可以耦合到处理电路302以使得处理电路302可读取信息和将信息写入到存储介
质306。具体地,存储介质306可以集成到处理电路302,或者存储介质306和处理电路302 可
以是分开的。
[0138] 通信接口304可包括电路和/或程序以实现用户设备300与一个或多个无线网络设备(例如,基站、服务器等)之间的双向通信。通信接口304可以耦合到一个或多个天线(图7
中未示出),并包括至少一个接收电路316和/或至少一个发射电路318。
[0139] 在一个实施例中,存储介质306中存储有协议栈程序320,处理电路302执行协议栈程序320 以实现协议栈的功能,协议栈与应用处理器309和基带处理器310的关系请参照图
3的相关描述。
[0140] 协议栈用于根据TCP/IP协议规范将应用程序的数据封装成特定数据格式的多个报文,并通过发射电路318发送给应用服务器;同时,协议栈还将接收电路316接收到的报文
进行解封装,最终得到应用程序的数据。协议栈对报文封装和解封装的过程如图8所示。可
以看出,报文封装的过程实质上是协议栈对报文添加报头和/或帧尾的过程,而报文解封装
的过程实质上是对报文去除报头和/或帧尾的过程。协议栈可以对通信接口304接收的数据
进行解码和/或解封装处理后,传递给上层应用程序,也可以对应用程序的数据进行封装处
理,然后通过通信接口发送给其它设备。
[0141] 在一个实施例中,协议栈可以包括:物理层、数据链路层、网络层、传输层和应用层,用于实现各个层的协议。例如,物理层用于定义物理设备接口特性、传输介质类型、传输
速率、传输模式等,以及实现物理层的信号处理。同样,数据链路层用于实现数据链路层的
功能,比如负责分发网络层生成的信令,以及处理由物理层产生的信息。数据链路层可包括
一个或多个子模块,例如媒体接入控制(Media Access Control,MAC)层模块,无线链路控
制(RLC)层模块和逻辑链路控制(LLC)层模块,分别用于实现MAC层、RLC层和LLC层的功能。
例如,MAC层模块用于利用物理层提供的服务传输上层协议数据,以及管理上层与空口之间
的数据接入;RLC层模块用于数据分段和重组;LLC层模块用于提供流量和顺序控制,以及差
错控制功能。进一步,网络层用于实现逻辑编址、路由选择等功能,比如。传输层用于实现端
口编址、分段重组、连接控制、流量控制和差错控制等功能。应用层用于提供接口给上层应
用程序。
[0142] 根据本发明实施例的一个或多个方面,处理电路302被适配为执行存储在与存储介质306 中的协议栈程序320,以实现协议栈的功能。其中应用处理器309和基带处理器310
中的协议栈具体实现了上述方法实施例中的部分或全部步骤。
[0143] 本发明实施例还提供一种芯片,所述芯片通过射频器件与网络设备建立数据连接,所述芯片包括应用处理器和基带处理器。所述基带处理器用于向所述应用处理器上报
第一报文的信息,所述第一报文为被所述基带处理器丢弃的待发送报文,所述第一报文的
信息包括所述第一报文的标识;所述应用处理器用于根据所述第一报文的信息向所述基带
处理器传输第二报文,所述第二报文与所述第一报文相同;所述基带处理器还用于通过所
述射频器件向网络设备发送所述第二报文。
[0144] 也就是说,本发明实施例记载的芯片,其实就是图7所示的终端中装设和使用的处理电路 302。
[0145] 在一种实现方式中,在向所述应用处理器上报第一报文的信息的方面,所述基带处理器用于在所述芯片的数据连接可用的情况下,向所述应用处理器上报所述第一报文的
信息。
[0146] 结合本发明实施例的上述实现方式,在另一种实现方式中在向所述应用处理器上报第一报文的信息方面,所述基带处理器用于在所述芯片的数据连接不可用的情况下,缓
存所述第一报文的信息;以及在所述芯片的数据连接由不可用切换为可用时,向所述应用
处理器上报所述第一报文的信息。
[0147] 结合本发明实施例的上述实现方式,在另一种实现方式中所述应用处理器还用于,在根据所述第一报文的信息向所述基带处理器传输第二报文后,增加拥塞窗口。
[0148] 结合本发明实施例的上述实现方式,在另一种实现方式中所述第一报文的标识为所述第一报文的序列号,所述第一报文所属的TCP连接的标识为所述第一报文所在TCP连接
的源端口号,在根据所述第一报文的信息向所述基带处理器传输第二报文的方面,所述应
用处理器用于根据所述源端口号,将与所述第一报文的序列号相同的所述第二报文传输给
所述基带处理器。
[0149] 关于本实施例记载的芯片的进一步具体的细节,请参照图8所示的终端的实施例和前文中对芯片能够实现的方法的记载,此处不再赘述。
[0150] 本发明实施例还提供一种存储介质,该介质用于保存实现本发明描述的发送报文的方法的代码。
[0151] 以上对本发明实施例所提供的发送报文的方法、及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助
理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,
在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本
发明的限制。