数据传输的方法和装置与流程

    专利查询2023-01-24  137



    1.本技术涉及通信领域,更具体地,涉及一种数据传输的方法和装置。


    背景技术:

    2.随着无线传输技术的发展,人们对通信速率和通信时延的要求越来越高。但是在数据传输的过程中,通常会存在数据丢失的问题,导致数据传输时延较长,降低数据传输效率。因此,恢复数据传输过程中的丢失报文对于数据传输具有十分重要的意义。
    3.现有技术中,恢复数据传输过程中的丢失报文有三种方式:一种是采用快速恢复(fast recovery,fr)和重传超时(retransmission timeout,rto)的方法恢复丢失的报文;另一种是采用探测超时(probe timeout,pto)的方法恢复丢失的报文;再一种是基于网络编码的数据保护机制恢复丢失的报文。但是,这三种方式的恢复效果不佳,恢复时间较长,导致数据传输效率较低。


    技术实现要素:

    4.本技术提供了一种数据传输的方法和装置,能够减少丢失报文的恢复时间,进而减少数据传输任务的完成时间,提高了数据传输效率。
    5.第一方面,提供了一种数据传输的方法,包括:接收尾部报文,该尾部报文为本次数据传输的最后一个拥塞窗口内、最后一个发送周期内或最后一个带宽时延积(bandwidth delay product,bdp)内的全部报文或靠后一部分报文,该尾部报文具有第一标识;在接收到该尾部报文中的任一报文之后,启动第一定时器,该第一定时器的时长为第一时长;若该第一定时器超时,且接收到的该尾部报文中存在报文缺失,则发送第一重传请求,该第一重传请求用于请求重传该尾部报文中丢失的报文。
    6.应理解,上述第一标识是用来标识发送端所发送的报文是尾部报文,发送端具体可以利用报文中的已有字段(例如保留位)进行标识,也可以利用报文中的新增字段进行标识,本技术实施例对此不作限定。
    7.还应理解,尾部报文的数量过多,会引起往返时间(round trip time,rtt)的波动,从而可能会导致第一定时器的伪触发,但实际本次数据传输并不存在报文丢失。所以,在本技术实施例中,上述尾部报文的数量不宜过多。
    8.本技术实施例提供的数据传输的方法,通过接收端针对传输数据中的尾部报文设置定时器,一旦接收端的定时器超时,且接收端还未收到完整的尾部报文,该接收端就会主动向发送端请求重传尾部报文,这种接收端的主动请求重传机制能够在很大程度上降低尾部报文丢失产生的延时,减少丢失报文的恢复时间,进而减少数据传输任务的完成时间,提高了数据传输效率。
    9.结合第一方面,在第一方面的某些实现方式中,该第一时长大于或等于1/2倍的rtt且小于或等于rtt。
    10.应理解,rtt表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收
    端收到数据后便立即发送确认,不包含数据传输时间)总共经历的时间,由链路的传播时间、末端系统的处理时间、路由器的缓存中的排队和处理时间组成。在本技术实施例中,rtt即指报文从发送端发送报文开始,到发送端收到来自接收端的确认总共经历的时间。
    11.结合第一方面,在第一方面的某些实现方式中,在发送该第一重传请求的时刻启动第二定时器,该第二定时器的时长为第二时长;若该第二定时器超时,且接收到的该尾部报文中存在报文缺失,则发送第二重传请求,同时重置该第二定时器,该第二重传请求用于请求重传该尾部报文中丢失的报文。
    12.应理解,发送端基于第一重传请求向接收端发送上述尾部报文中丢失的报文,但接收端未必能全部正确收到,为了进一步保证数据传输的可靠性,接收端可以在发送第一重传请求时再设置一个定时器,本技术实施例称为第二定时器,以便及时获取尾部报文中丢失的报文,减少丢失报文的恢复时间,进而减少数据传输任务的完成时间,提高数据传输效率。
    13.在本技术实施例中,该第二重传请求可以理解为针对尾部报文中第二次丢失报文的重传请求,发送端基于第一重传请求所发送的该尾部报文中丢失的报文可以称为第一次丢失的报文,若接收端仍未完全接收到的尾部报文中第一次丢失报文,那接收端未接收到的该尾部报文中的剩余报文即可以称为第二次丢失的报文,接收端需要再次向发送端发起请求。
    14.结合第一方面,在第一方面的某些实现方式中,该第二时长大于或等于rtt且小于或等于2倍的rtt。
    15.结合第一方面,在第一方面的某些实现方式中,该第一标识位于该尾部报文的报文头中的保留字段。
    16.可选的,第一标识可以基于原始传输控制协议(transmission control protocol,tcp)的报文头的格式,通过修改保留字段(reserved)的标志位进行标识。示例性地,reserved字段为010,表示当前tcp报文为本次传输数据的尾部报文;reserved字段为011,表示当前tcp报文为本次数据传输的末包(即尾部报文中的最后一个报文)。
    17.第二方面,提供了一种数据传输的方法,包括:发送尾部报文,该尾部报文为本次数据传输的最后一个拥塞窗口内、最后一个发送周期内或最后一个bdp内的全部报文或靠后一部分报文,该尾部报文具有第一标识;接收第一重传请求,该第一重传请求用于请求重传该尾部报文中丢失的报文,该第一重传请求是在第一定时器超时后接收到的,该第一定时器的时长为第一时长;基于该第一重传请求,发送该尾部报文中丢失的报文。
    18.结合第二方面,在第二方面的某些实现方式中,该第一时长大于或等于1/2倍的rtt且小于或等于rtt。
    19.结合第二方面,在第二方面的某些实现方式中,接收第二重传请求,该第二重传请求用于请求重传该尾部报文中丢失的报文,该第二重传请求是在第二定时器超时后接收到的,该第二定时器的时长为第二时长;基于该第二重传请求,发送该尾部报文中丢失的报文。
    20.结合第二方面,在第二方面的某些实现方式中,该第二时长大于或等于rtt且小于或等于2倍的rtt。
    21.结合第二方面,在第二方面的某些实现方式中,该第一标识位于该尾部报文的报
    文头中的保留字段。
    22.第三方面,提供了一种数据传输的装置,包括:用于执行上述第一方面中任一种可能的实现方式中的方法。具体地,该装置包括用于执行上述第一方面中任一种可能的实现方式中的方法的模块。
    23.第四方面,提供了另一种数据传输的装置,包括:用于执行上述第二方面中任一种可能的实现方式中的方法。具体地,该装置包括用于执行上述第二方面中任一种可能的实现方式中的方法的模块。
    24.在一种设计中,该装置可以包括执行上述各个方面中所描述的方法/操作/步骤/动作所一一对应的模块,该模块可以是硬件电路,也可是软件,也可以是硬件电路结合软件实现。
    25.在另一种设计中,该装置为通信芯片,通信芯片可以包括用于发送信息或数据的输入电路或者接口,以及用于接收信息或数据的输出电路或者接口。
    26.在另一种设计中,该装置为通信设备,通信设备可以包括用于发送信息或数据的发射机,以及用于接收信息或数据的接收机。
    27.第五方面,提供了另一种数据传输的装置,包括,处理器,存储器,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得该装置执行上述任一方面中任一种可能实现方式中的方法。
    28.可选地,所述处理器为一个或多个,所述存储器为一个或多个。
    29.可选地,所述存储器可以与所述处理器集成在一起,或者所述存储器与处理器分离设置。
    30.可选地,该通信设备还包括,发射机(发射器)和接收机(接收器),发射机和接收机可以分离设置,也可以集成在一起,称为收发机(收发器)。
    31.第六方面,提供了一种通信系统,包括用于实现上述第一方面或第一方面的任一种可能实现的方法的装置,以及用于实现上述第二方面或第二方面的任一种可能实现的方法的装置。
    32.在一个可能的设计中,该通信系统还可以包括本技术实施例所提供的方案中与接收端和/或发送端进行交互的其他设备。
    33.第七方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序(也可以称为代码,或指令),当所述计算机程序被运行时,使得计算机执行上述任一方面中任一种可能实现方式中的方法。
    34.第八方面,提供了一种计算机可读介质,所述计算机可读介质存储有计算机程序(也可以称为代码,或指令)当其在计算机上运行时,使得计算机执行上述任一方面中任一种可能实现方式中的方法。
    附图说明
    35.图1是本技术实施例提供的通信系统的示意图;
    36.图2是本技术实施例提供的一种数据传输的方法的示意性流程图;
    37.图3是本技术实施例提供的一次数据传输的报文的示意图;
    38.图4是原始tcp报文头的格式示意图;
    39.图5是本技术实施例提供的一种tcp报文头的格式示意图;
    40.图6是本技术实施例提供的另一种tcp报文头的格式示意图;
    41.图7是本技术实施例提供的最后一个拥塞窗口内的报文的示意图;
    42.图8是本技术实施例提供的一种数据传输的装置的示意性框图;
    43.图9是本技术实施例提供的另一种数据传输的装置的示意性框图;
    44.图10是本技术实施例提供的再一种数据传输的装置的示意性框图。
    具体实施方式
    45.下面将结合附图,对本技术中的技术方案进行描述。
    46.应理解,本技术的技术方案可以应用于各种通信系统,例如:全球移动通信(global system of mobile communication,gsm)系统、码分多址(code division multiple access,cdma)系统、宽带码分多址(wideband code division multiple access,wcdma)系统、通用分组无线业务(general packet radio service,gprs)、长期演进(long term evolution,lte)系统、先进的长期演进(advanced long erm evolution,lte-a)系统、通用移动通信系统(universal mobile telecommunication system,umts)或下一代通信系统(例如,第五代通信(fifth-generation,5g)系统)等。其中,5g系统也可以称为新一代无线接入技术(new radio access technology,nr)系统。
    47.为便于理解本技术实施例,首先结合图1对适用于本技术实施例的通信系统进行详细介绍。
    48.图1是本技术实施例提供的通信系统100的示意图。如图1所示,该通信系统100包括至少两个通信设备,例如,网络设备110和至少一个终端设备120,其中,网络设备110和至少一个终端设备120之间可以通过无线连接进行数据通信。具体而言,网络设备110可以向终端设备120发送下行数据;终端设备120也可以向网络设备110发送上行数据。
    49.应理解,该网络设备110也可以称为接入网设备或无线接入网设备,可以是传输接收点(transmission reception point,trp),还可以是lte系统中的演进型基站(evolved nodeb,enb或enodeb),还可以是家庭基站(例如,home evolved nodeb,或home node b,hnb)、基带单元(base band unit,bbu),还可以是云无线接入网络(cloud radio access network,cran)场景下的无线控制器,或者该网络设备可以为中继站、接入点、车载设备、可穿戴设备以及5g网络中的网络设备或者未来演进的plmn网络中的网络设备等,可以是wlan中的接入点(access point,ap),可以是新型无线(new radio,nr)系统中的gnb,可以是卫星通信系统中的卫星基站等,本技术实施例并不限定。
    50.在一种网络结构中,网络设备可以包括集中单元(centralized unit,cu)节点、或分布单元(distributed unit,du)节点、或包括cu节点和du节点的ran设备、或者控制面cu节点(cu-cp节点)和用户面cu节点(cu-up节点)以及du节点的ran设备。
    51.网络设备为小区提供服务,终端设备通过网络设备分配的传输资源(例如,频域资源,或者说,频谱资源)与小区进行通信,该小区可以属于宏基站(例如,宏enb或宏gnb等),也可以属于小小区(small cell)对应的基站,这里的小小区可以包括:城市小区(metro cell)、微小区(micro cell)、微微小区(pico cell)、毫微微小区(femto cell)等,这些小小区具有覆盖范围小、发射功率低的特点,适用于提供高速率的数据传输服务。
    52.还应理解,终端设备120也可以称为:用户设备(user equipment,ue)、移动台(mobile station,ms)、移动终端(mobile terminal,mt)、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置等。
    53.终端设备可以是一种向用户提供语音/数据连通性的设备,例如,具有无线连接功能的手持式设备、车载设备等。目前,一些终端的举例为:手机(mobile phone)、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,mid)、可穿戴设备,虚拟现实(virtual reality,vr)设备、增强现实(augmented reality,ar)设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端、蜂窝电话、无绳电话、会话启动协议(session initiation protocol,sip)电话、无线本地环路(wireless local loop,wll)站、个人数字助理(personal digital assistant,pda)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、可穿戴设备,5g网络中的终端设备或者未来演进的公用陆地移动通信网络(public land mobile network,plmn)中的终端设备等,本技术实施例对此并不限定。
    54.作为示例而非限定,在本技术实施例中,该终端设备还可以是可穿戴设备。可穿戴设备也可以称为穿戴式智能设备,是应用穿戴式技术对日常穿戴进行智能化设计、开发出可以穿戴的设备的总称,如眼镜、手套、手表、服饰及鞋等。可穿戴设备即直接穿在身上,或是整合到用户的衣服或配件的一种便携式设备。可穿戴设备不仅仅是一种硬件设备,更是通过软件支持以及数据交互、云端交互来实现强大的功能。广义穿戴式智能设备包括功能全、尺寸大、可不依赖智能手机实现完整或者部分的功能,例如:智能手表或智能眼镜等,以及只专注于某一类应用功能,需要和其它设备如智能手机配合使用,如各类进行体征监测的智能手环、智能首饰等。
    55.此外,在本技术实施例中,终端设备还可以是物联网(internet of things,iot)系统中的终端设备,iot是未来信息技术发展的重要组成部分,其主要技术特点是将物品通过通信技术与网络连接,从而实现人机互连,物物互连的智能化网络。
    56.还应理解,图1仅为便于理解而示出的简化示意图,该通信系统100中还可以包括其他设备,图1中未予以画出。
    57.随着无线传输技术的发展,人们对通信速率和通信时延的要求越来越高。但是在数据传输的过程中,通常会存在数据丢失的问题,导致数据传输时延较长,降低数据传输效率。因此,恢复数据传输过程中的丢失报文对于数据传输具有十分重要的意义。
    58.目前,恢复数据传输过程中的丢失报文有三种方式:一种是采用fr和rto的方法恢复丢失的报文;另一种是采用pto的方法恢复丢失的报文;再一种是基于网络编码的数据保护机制恢复丢失的报文。
    59.其中,fr是需要收到三个重复的确认字符(acknowledge character,ack)信息后才能触发的重传机制,如果丢失的数据是传输数据的最后三个报文,则无法采用fr机制;pto技术是针对传输数据的最后三个报文丢失所采取的手段,该技术可以解决最后三个报
    文丢失而无法采用fr恢复的弊端,pto技术与早期重新传输(early retransmission,er)和选择性确认(selective acknowledgement,sack)技术配合,在收到1个sack或者2个重复的ack就重传丢失报文。网络编码技术是利用编码保护传输数据最后的部分报文,在发生尾部报文丢失时能利用冗余报文进行恢复,避免重传的额外开销。
    60.但是,这三种方式在恢复丢失报文的过程中,可能会存在利用rto来恢复丢失报文(尤其是在一次重传或者是网络编码失效的情况下),该过程需要很长的传输延时,大大增加了丢失报文的恢复时间,同时也增加了传输任务的完成时间。
    61.有鉴于此,本技术提供了一种数据传输的方法和装置,通过在发送端标识传输数据的尾部报文,在接收端设置主动请求重传机制,能够在很大程度上降低尾部报文丢失产生的延时,减少丢失报文的恢复时间,进而减少数据传输任务的完成时间,提高了数据传输效率。
    62.在介绍本技术实施例提供的数据传输的方法和装置之前,先做出以下几点说明。
    63.第一,在下文示出的实施例中,各术语及英文缩略语,如尾部报文、重传请求,第一定时器等,均为方便描述而给出的示例性举例,不应对本技术构成任何限定。本技术并不排除已有或未来定义其它能够实现相同或相似功能的术语的可能。
    64.第二,在下文示出的实施例中第一、第二以及各种数字编号仅为描述方便进行的区分,并不用来限制本技术实施例的范围。例如,区分不同的重传请求、区分不同的定时器等。
    65.第三,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b和c中的至少一项(个),可以表示:a,或b,或c,或a和b,或a和c,或b和c,或a、b和c,其中a,b,c可以是单个,也可以是多个。
    66.应理解,本技术实施例可以应用于多个不同的场景下,包括图1所示的场景,但并不限于该场景。示例性地,对于上行传输,上述终端设备可以作为发送端,上述网络设备可以作为接收端;对于下行传输,上述网络设备可以作为发送端,上述终端设备可以作为接收端;对于其他传输场景,例如,终端设备和终端设备之间的数据传输,其中一个终端设备可以作为发送端,另一个终端设备可以作为接收端;又例如,网络设备和网络设备之间的上行传输,其中一个网络设备可以作为发送端,另一个网络设备可以作为接收端。因此,下面按照发送端和接收端对本技术实施例进行描述。
    67.还应理解,本技术实施例中的发送端可以替换为能够实现与发送端类似的功能的装置或芯片,接收端也可以替换为能够实现与接收端类似的功能的装置或芯片,本技术实施例对此不作限定。
    68.下面结合图2,对本技术实施例提供的数据传输的方法200进行详细说明。该方法200可以应用于图1所示的通信系统100,但本技术实施例不限于此。如图2所示,该方法200包括以下步骤:
    69.s201、发送端发送尾部报文,该尾部报文为本次数据传输的最后一个拥塞窗口内、最后一个发送周期内或最后一个bdp内的全部报文或靠后一部分报文,该尾部报文具有第
    一标识。相应地,接收端接收该尾部报文。
    70.应理解,尾部报文也可以称为尾包或其他名称,本技术对此不作限定。
    71.还应理解,上述第一标识是用来标识发送端所发送的报文是尾部报文,发送端具体可以利用报文中的已有字段(例如保留位)进行标识,也可以利用报文中的新增字段进行标识,本技术实施例对此不作限定。
    72.下面以尾部报文为本次数据传输的最后一个拥塞窗口内靠后一部分报文为例进行说明。
    73.图3是本技术实施例提供的一次数据传输的报文的示意图。如图3所示,在一次数据传输的报文中,靠前的是能够正常传输的报文,靠后的是最后一个拥塞窗口内的报文,在最后一个拥塞窗口中靠后的一部分报文为上述尾部报文。上述能够正常传输的报文,可以理解为利用类似tcp的重传的机制就可以实现高效的可靠传输。
    74.应理解,尾部报文的数量过多,会引起rtt的波动,从而可能会导致第一定时器的伪触发,但实际本次数据传输并不存在报文丢失。所以,在本技术实施例中,上述尾部报文的数量不宜过多。
    75.s202、接收端在接收到该尾部报文中的任一报文之后,启动第一定时器,该第一定时器的时长为第一时长。
    76.可选地,接收端在接收到尾部报文中的任一报文时,启动第一定时器,之后,若接收端再接收到尾部报文中的其他任一报文时,可以重置上述第一定时器,从零开始计时。这种重置第一定时器的方式,可以避免第一定时器的伪触发。
    77.s203、若该第一定时器超时,且接收端接收到的该尾部报文中存在报文缺失,则发送第一重传请求,该第一重传请求用于请求重传该尾部报文中丢失的报文。相应地,发送端接收该第一重传请求。
    78.s204、发送端基于该第一重传请求,发送该尾部报文中丢失的报文。相应地,接收端接收该丢失的报文。
    79.示例性地,上述第一重传请求可以是确认字符(acknowledgement,ack),接收端可能发送重复的ack给发送端,如果发送端接收到多个重复的ack,认为发生丢包,会重新发送最后确认的报文的后续报文。
    80.示例性地,上述第一重传请求还可以是选择性确认(selective acknowledgement,sack),接收端可以通过sack告知发送端已接收到并缓存的不连续的尾部报文,发送端可以根据此信息检查丢失的具体报文,从而发送相应的丢失报文。
    81.应理解,上述第一重传请求还可以是其他可以反映接收端尾部报文缺失的任一信息,本技术对此不做限定。
    82.示例性地,假设在上述s201中,发送端发送的尾部报文包括报文1、报文2、报文3、报文4、报文5,接收端接收到了尾部报文中的报文1、报文2、报文5。在一种可能的实现方式中,接收端在第一定时器超时后,向发送端发送两个ack,发送端在接收到ack信息后,重传报文3、报文4以及报文5。在另一种可能的实现方式中,接收端在第一定时器超时后,向发送端发送sack,发送端在接收到sack后,可以只重传丢失的报文3和报文4。
    83.本技术实施例提供的数据传输的方法,通过接收端针对传输数据中的尾部报文设置定时器,一旦接收端的定时器超时,且接收端还未收到完整的尾部报文,该接收端就会主
    动向发送端请求重传尾部报文,这种接收端的主动请求重传机制能够在很大程度上降低尾部报文丢失产生的延时,减少丢失报文的恢复时间,进而减少数据传输任务的完成时间,提高了数据传输效率。
    84.作为一个可选的实施例,上述第一时长大于或等于1/2倍rtt且小于或等于rtt。
    85.应理解,rtt表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认,不包含数据传输时间)总共经历的时间,由链路的传播时间、末端系统的处理时间、路由器的缓存中的排队和处理时间组成。在本技术实施例中,rtt即指报文从发送端发送报文开始,到发送端收到来自接收端的确认总共经历的时间。
    86.示例性地,根据rtt的定义,可知发送端发送一个窗口内的报文到接收端,所需要的时间为1/2倍rtt,则第一时长的最小时间可以是1/2倍rtt。若以不超过pto重传所需要的时间(2倍rtt)计算,则第一时长加上一个rtt的重传时长,应该不超过2倍rtt,则第一时长可以为rtt。
    87.作为一个可选的实施例,在上述方法200的s204之前,该方法还包括:
    88.s205、接收端在发送该第一重传请求的时刻启动第二定时器,该第二定时器的时长为第二时长。
    89.在s204之后,该方法还包括:
    90.s206、若该第二定时器超时,且接收端接收到的该尾部报文中存在报文缺失,则发送第二重传请求。相应地,接收端接收第二重传请求。
    91.s207、接收端发送第二重传请求同时重置该第二定时器,该第二重传请求用于请求重传该尾部报文中丢失的报文。
    92.应理解,在上述s204中,即使发送端向接收端发送上述尾部报文中丢失的报文,接收端未必能全部正确收到,为了进一步保证数据传输的可靠性,接收端可以在发送第一重传请求时再设置一个定时器,本技术实施例称为第二定时器,以便及时获取尾部报文中丢失的报文,减少丢失报文的恢复时间,进而减少数据传输任务的完成时间,提高数据传输效率。
    93.上述第二重传请求可以理解为针对尾部报文中第二次丢失报文的重传请求,发送端基于第一重传请求所发送的该尾部报文中丢失的报文可以称为第一次丢失的报文,若接收端仍未完全接收到的尾部报文中第一次丢失报文,那接收端未接收到的该尾部报文中的剩余报文即可以称为第二次丢失的报文,接收端需要再次向发送端发起请求。
    94.应理解,上述第二重传请求与上述第一重传请求可能在请求重传丢失的报文时,具体的请求重传的报文存在差异,但是请求重传的表示信息基本一致,具体表示方式可参考上述第一重传请求的相关描述,此处不再赘述。
    95.s208、基于该第二重传请求,发送端发送该尾部报文中丢失的报文。相应地,接收端接收该丢失的报文。
    96.示例性地,假设在上述s201中,发送端发送上述尾部报文,包括报文1、报文2、报文3、报文4、报文5,接收端收到了尾部报文中的报文1、报文4、报文5,此时,接收端在第一定时器超时后,可以向发送端发送第一重传请求,请求发送端重新发丢失的报文2和报文3,同时接收端启动第二定时器。发送端可以基于第一重传请求,向发送端重新发送报文2和报文3。在第二定时器超时后,接收端只收到了丢失的报文2,此时,接收端可以向发送端发送第二
    重传请求,以获取丢失的报文3。发送端会基于该第二重传请求,向接收端发送报文3。
    97.可选地,上述方法200还包括:接收端发送第二重传请求同时重置该第二定时器(s207),在重置后的第二定时器超时之后,继续执行方法200中的s206至s208。
    98.结合上面的例子,在接收端发送第二重传请求时,同时启动第二定时器,若第二定时器超时后,接收端仍未收到丢失的报文3。此时,接收端可以再次发送相应的重传请求,同时重置第二定时器,以获取丢失的报文3,循环往复,直到接收到报文3为止。
    99.作为一个可选的实施例,上述第二时长大于或等于rtt且小于或等于2倍的rtt。
    100.示例性地,在接收端发送第一重传请求时,启动第二计时器。若在第二定时器不超时的时刻,接收端顺利接收到全部的尾部报文,则第二时长需要的最短时间可以是rtt。若以不超过pto二次重传的时间(4倍rtt)计算,第二定时器开始计时的时刻是pto第一次开始计时的前1/2倍的rtt时刻,因此,第二时长的最长时间可以是2倍的rtt。
    101.作为一个可选的实施例,该第一标识位于该尾部报文的报文头中的保留字段。
    102.下面以tcp报文头为例,结合图4至图6详细说明本技术实施例的报文头的格式。
    103.图4示出了原始tcp报文头的格式。如图4所示,该tcp报文头包括以下字段:
    104.1、源端口(source port):发送端的tcp端口号。
    105.2、目的端口(destination port):接收端的tcp端口号。
    106.3、序号(sequence number):是指发送数据的位置,每发送一次数据,就累加一次该数据的字节数的大小。
    107.4、确认序号(acknowledgment number):是指下一次应该收到的数据的序列号。接收端收到确认应答后就表明这个序列号以前的数据已经被正常接收。
    108.5、首部长度(data offset):该字段占用4位,用来表示报文首部的长度,单位是4byte。例如:headlen=((packet[12]》》4)&0x0f)*4。
    [0109]
    6、保留位(reserved):作为保留字段,通常为000。
    [0110]
    7、6位标志位:具体含义如下:
    [0111]
    (1)紧急(urgent,urg)标志位:长1位,表示紧急指针字段有效。
    [0112]
    (2)ack标志位:长1位,表示确认号字段有效;tcp协议规定,只有ack=1时有效,也规定连接建立后所有发送的报文的ack必须为1。
    [0113]
    (3)推(push,psh)标志位:长1位,表示当前报文需要请求推(push)操作。
    [0114]
    (4)复位(reset the connection,rst)标志:长1位,表示复位tcp连接。
    [0115]
    (5)同步(synchronize,syn)标志位:长1位,在连接建立时用来同步序号。当syn=1而ack=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使syn=1和ack=1。因此,syn置1就表示这是一个连接请求或连接接收报文。
    [0116]
    (6)结束(finish,fin)标志位:长1位,用于释放tcp连接时标识发送方比特流结束。当fin=1时,表明此报文段的发送端的数据已经发送完毕,并要求释放连接。
    [0117]
    8、窗口大小(window):用来进行流量控制。单位为字节数,窗口大小的值是本机期望一次接收的字节数。例如windows size=3,表示一次可以发送三个数据包。
    [0118]
    9、校验和(check sum):对整个tcp报文段进行校验和计算,并由目标端进行验证。
    [0119]
    10、紧急指针:如果tcp通信中,发送端有紧急的数据需要尽快发送给接收端,并且让接收端的tcp协议尽快通知相应的应用程序,可以将urg置位,并通过紧急指针指示紧急
    数据在报文段中的结束位置。紧急指针是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
    [0120]
    11、选项(options):可能包括“窗口扩大因子”、“时间戳”等选项。
    [0121]
    本技术实施例可以基于原始tcp的报文头的格式,首先通过修改修改接口,获得传输数据的尾部报文。示例性地,原始tcp的格式为:void send(int sockfd,char*data,int size,int flags=msgend),其中data是数据缓存,size是数据长度,flags是传输的标识。本技术通过增加flag=msgend的类别,来说明发送端发送的是传输数据的尾部报文。
    [0122]
    图5和图6分别示出了本技术实施例提供的两种tcp报文头的格式。如图5所示,reserved字段为010,表示当前tcp报文为本次传输数据的尾部报文。如图6所示,reserved字段为011,表示当前tcp报文为本次数据传输的末包(即尾部报文中的最后一个报文)。
    [0123]
    上述图5和图6的其他字段与上述图4相同。应理解,表示当前tcp报文为本次传输数据的尾部报文的reserved字段也可以是100或者001;表示当前tcp报文为本次数据传输的末包的reserved字段也可以是110或者101。具体表示方式本技术对此不作限定。
    [0124]
    下面结合图7,对本实施实施例提供的数据传输的方法进行详细说明。
    [0125]
    在本技术实施例中,上述第一定时器对应的第一时长为1/2倍的rtt,该第一定时器也可以称作查询超时(query timeout,qto)定时器或其他名称。在本技术实施例中,上述第二定时器对应的第二时长为3/2倍rtt,该第二定时器也可以称作加速超时(acceleration timeout,ato)定时器或其他名称。本技术实施例以qto定时器和ato定时器为例进行描述。
    [0126]
    图7是本技术提供实施例提供的最后一个拥塞窗口内的报文。如图7所示,报文1至报文15是本次传输数据的最后一个拥塞窗口内的报文,在本实施例中,发送端将本次数据传输的最后拥塞窗口的靠后1/2窗口的报文设为尾部报文,即报文8至报文15是尾部报文,报文15为末包。
    [0127]
    发送端在本次传输数据的最后一个拥塞窗口内需要发送150kb的消息(即包括图7所示的报文1至报文15),数据传输的宽带为100mbps,rtt为10ms。若无数据丢包,该150kb的消息传输完成需要的最小时间为150kb*8/100mbps=12ms+10ms=22ms。下面分析在丢包情况下的数据传输时间。
    [0128]
    发送端在一个拥塞窗口内发送报文1至报文15,接收端若接收到报文8至报文15中的任一报文,则启动qto。示例性地,在报文8到达接收端,接收端就可以启动qto,接收端后续收到报文9,那么该接收端可以将qto清零,重新计时。
    [0129]
    本技术实施例以报文8丢失为例说明。应理解,如果报文8丢包了,报文9、报文10、报文11到达接收端后,接收端可以发送3个重复的ack信息给发送端。此时,发送端会启动fr机制,重传报文8以及报文8之后的数据。如果报文8丢包了,报文9、报文10、报文11任一报文到达接收端后,仍会启动qto,开始计时,直至qto超时,发送第一重传请求。
    [0130]
    本技术实施例以报文13到达接收端,报文14和报文15丢失为例说明。在报文13到达接收端后,启动qto,在qto超时后接收端发送特殊的重传请求(s-dupack)给发送端,请求发送端重新发送报文14和报文15,同时可以启动ato,若接收端在1/2倍rtt的时间内可以收到报文14和报文15,则所需要的传输时间为22ms+(1+1/2)*10ms=37ms。
    [0131]
    示例性地,rto超时最少需要3个rtt,因此,采用rto机制恢复尾部丢失的报文,则
    需要22ms+3*10ms=52ms;采用pto机制重传丢失的报文,则需要22ms+20*1/3+30*2/3=48.7ms。相比之下,采用本技术提供的数据传输方法,在恢复丢失的报文时,所需要的时间相对较短且传输效率也有所提升。
    [0132]
    若接收端在3/2倍rtt的时间内未收到报文14和/或报文15,则接收端发送第二重传请求,请求发送端再次发送未收到的报文14和/或报文15,同时重置ato,若报文14和报文15均顺利到达接收端,则整体的传输时间为22ms+(0.5+1.5+1)*10ms=52ms。
    [0133]
    示例性地,二次重传若是采用rto机制,此时rto计时会加倍,则需要22ms+30ms+60ms=112ms;若是pto方案采用双次触发的模式,则需要22ms+20ms+20*1/3+30*2/3=68.7ms;若pto方案采用单次触发的模式,则需要22ms+20ms+30ms=72ms。相比之下,二次重传若采用本技术提供的数据传输方法,恢复丢失报文的时间更短,传输速率更快。
    [0134]
    应理解,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
    [0135]
    上文中结合图2至图7,详细描述了本技术实施例的方法,下面将结合图8至图10,详细描述本技术实施例的装置。
    [0136]
    图8示出了本技术实施例提供的一种数据传输的装置800,该装置800包括:接收模块810、处理模块820以及发送模块830。
    [0137]
    其中,接收模块810用于:接收尾部报文,该尾部报文为本次数据传输的最后一个拥塞窗口内、最后一个发送周期内或最后一个bdp内的全部报文或靠后一部分报文,该尾部报文具有第一标识;处理模块820用于:在接收到该尾部报文中的任一报文之后,启动第一定时器,该第一定时器的时长为第一时长;发送模块830用于:若该第一定时器超时,且接收到的该尾部报文中存在报文缺失,则发送第一重传请求,该第一重传请求用于请求重传该尾部报文中丢失的报文。
    [0138]
    可选地,该第一时长大于或等于1/2倍的rtt且小于或等于rtt。
    [0139]
    可选地,处理模块820还用于:在发送该第一重传请求的时刻启动第二定时器,该第二定时器的时长为第二时长;发送模块830还用于:若该第二定时器超时,且接收到的该尾部报文中存在报文缺失,则发送第二重传请求,同时通过处理模块820重置该第二定时器,该第二重传请求用于请求重传该尾部报文中丢失的报文。
    [0140]
    可选地,该第二时长大于或等于rtt且小于或等于2倍的rtt。
    [0141]
    可选地,该第一标识位于该尾部报文的报文头中的保留字段。
    [0142]
    在一个可选例子中,本领域技术人员可以理解,装置800可以具体为上述实施例中的接收端,该装置800可以用于执行上述方法200中与接收端对应的各个流程和/或步骤,为避免重复,此处不再赘述。
    [0143]
    图9示出了本技术实施例提供的另一种数据传输的装置900,该装置900包括:发送模块910和接收模块920。
    [0144]
    其中,发送模块910用于:发送尾部报文,该尾部报文为本次数据传输的最后一个拥塞窗口内、最后一个发送周期内或最后一个bdp内的全部报文或靠后一部分报文,该尾部报文具有第一标识;接收模块920用于:接收第一重传请求,该第一重传请求用于请求重传该尾部报文中丢失的报文,该第一重传请求是在第一定时器超时后接收到的,该第一定时器的时长为第一时长;
    [0145]
    可选地,该第一时长大于或等于1/2倍的rtt且小于或等于rtt。
    [0146]
    可选地,接收模块920还用于:接收第二重传请求,该第二重传请求用于请求重传该尾部报文中丢失的报文,该第二重传请求是在第二定时器超时后接收到的,该第二定时器的时长为第二时长;发送模块910还用于:基于该第二重传请求,发送该尾部报文中丢失的报文。
    [0147]
    可选地,该第二时长大于或等于rtt且小于或等于2倍的rtt。
    [0148]
    可选地,该第一标识位于该尾部报文的报文头中的保留字段。
    [0149]
    在一个可选例子中,本领域技术人员可以理解,装置900可以具体为上述实施例中的发送端,该装置900可以用于执行上述方法200中与发送端对应的各个流程和/或步骤,为避免重复,此处不再赘述。
    [0150]
    应理解,这里的装置800和装置900以功能模块的形式体现。这里的术语“模块”可以指应用特有集成电路(application specific integrated circuit,asic)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。
    [0151]
    上述装置800和装置900具有实现上述方法200中的相应步骤的功能;上述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
    [0152]
    在本技术的实施例,装置800和装置900也可以是芯片或者芯片系统,例如:片上系统(system on chip,soc)。本技术在此不做限定。
    [0153]
    图10示出了本技术实施例提供的再一种数据传输的装置1000。该装置1000包括处理器1010、收发器1020和存储器1030。其中,处理器1010、收发器1020和存储器1030通过内部连接通路互相通信,该存储器1030用于存储指令,该处理器1010用于执行该存储器1030存储的指令,以控制该收发器1020发送信号和/或接收信号。
    [0154]
    应理解,装置1000可以具体为上述实施例中的发送端或接收端,或者,上述实施例中的发送端或接收端的功能可以集成在装置1000中,装置1000可以用于执行上述实施例中的发送端或接收端对应的各个步骤和/或流程。可选地,该存储器1030可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。该处理器1010可以用于执行存储器中存储的指令,并且该处理器执行该指令时,该处理器可以执行上述方法实施例中与终端设备或网络设备对应的各个步骤和/或流程。
    [0155]
    应理解,在本技术实施例中,该处理器1010可以是中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
    [0156]
    在实现过程中,上述方法200的各步骤可以通过处理器1010中的硬件的集成逻辑电路或者软件形式的指令完成。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器1010执行完成,或者用处理器1010中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、
    寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器1010执行存储器中的指令,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
    [0157]
    本技术实施还提供了一种通信系统,该通信系统可以包括上述图8所示的接收端(即装置800)和/或上述图9所示的发送端(即装置900)。
    [0158]
    本技术提供一种可读计算机存储介质,该可读计算机存储介质用于存储计算机程序,该计算机程序用于实现上述实施例中各种可能的实现方式所示的接收端对应的方法。
    [0159]
    本技术提供另一种可读计算机存储介质,该可读计算机存储介质用于存储计算机程序,该计算机程序用于实现上述实施例中各种可能的实现方式所示的发送端对应的方法。
    [0160]
    本技术提供一种计算机程序产品,该计算机程序产品包括计算机程序(也可以称为代码,或指令),当该计算机程序在计算机上运行时,该计算机可以执行上述实施例中各种可能的实现方式所示的接收端对应的方法。
    [0161]
    本技术提供另一种计算机程序产品,该计算机程序产品包括计算机程序(也可以称为代码,或指令),当该计算机程序在计算机上运行时,该计算机可以执行上述实施例中各种可能的实现方式所示的发送端对应的方法。
    [0162]
    所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
    [0163]
    在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
    [0164]
    所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
    [0165]
    另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
    [0166]
    所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
    [0167]
    以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。

    技术特征:
    1.一种数据传输的方法,其特征在于,包括:接收尾部报文,所述尾部报文为本次数据传输的最后一个拥塞窗口内、最后一个发送周期内或最后一个带宽时延积bdp内的全部报文或靠后一部分报文,所述尾部报文具有第一标识;在接收到所述尾部报文中的任一报文之后,启动第一定时器,所述第一定时器的时长为第一时长;若所述第一定时器超时,且接收到的所述尾部报文中存在报文缺失,则发送第一重传请求,所述第一重传请求用于请求重传所述尾部报文中丢失的报文。2.根据权利要求1所述的方法,其特征在于,所述第一时长大于或等于1/2倍的往返时间rtt且小于或等于rtt。3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:在发送所述第一重传请求的时刻启动第二定时器,所述第二定时器的时长为第二时长;若所述第二定时器超时,且接收到的所述尾部报文中存在报文缺失,则发送第二重传请求,同时重置所述第二定时器,所述第二重传请求用于请求重传所述尾部报文中丢失的报文。4.根据权利要求3所述的方法,其特征在于,所述第二时长大于或等于rtt且小于或等于2倍的rtt。5.根据权利要求1至4中任一项所述的方法,其特征在于,所述第一标识位于所述尾部报文的报文头中的保留字段。6.一种数据传输的方法,其特征在于,包括:发送尾部报文,所述尾部报文为本次数据传输的最后一个拥塞窗口内、最后一个发送周期内或最后一个bdp内的全部报文或靠后一部分报文,所述尾部报文具有第一标识;接收第一重传请求,所述第一重传请求用于请求重传所述尾部报文中丢失的报文,所述第一重传请求是在第一定时器超时后接收到的,所述第一定时器的时长为第一时长;基于所述第一重传请求,发送所述尾部报文中丢失的报文。7.根据权利要求6所述的方法,其特征在于,所述第一时长大于或等于1/2倍的rtt且小于或等于rtt。8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:接收第二重传请求,所述第二重传请求用于请求重传所述尾部报文中丢失的报文,所述第二重传请求是在第二定时器超时后接收到的,所述第二定时器的时长为第二时长;基于所述第二重传请求,发送所述尾部报文中丢失的报文。9.根据权利要求8所述的方法,其特征在于,所述第二时长大于或等于rtt且小于或等于2倍的rtt。10.根据权利要求6至9中任一项所述的方法,其特征在于,所述第一标识位于所述尾部报文的报文头中的保留字段。11.一种数据传输的装置,其特征在于,包括:接收模块,用于接收尾部报文,所述尾部报文为本次数据传输的最后一个拥塞窗口内、最后一个发送周期内或最后一个bdp内的全部报文或靠后一部分报文,所述尾部报文具有
    第一标识;处理模块,用于在接收到所述尾部报文中的任一报文之后,启动第一定时器,所述第一定时器的时长为第一时长;发送模块,用于若所述第一定时器超时,且接收到的所述尾部报文中存在报文缺失,则发送第一重传请求,所述第一重传请求用于请求重传所述尾部报文中丢失的报文。12.根据权利要求11所述的装置,其特征在于,所述第一时长大于或等于1/2倍的rtt且小于或等于rtt。13.根据权利要求11或12所述的装置,其特征在于,所述处理模块还用于:在发送所述第一重传请求的时刻启动第二定时器,所述第二定时器的时长为第二时长;所述发送模块还用于:若所述第二定时器超时,且接收到的所述尾部报文中存在报文缺失,则发送第二重传请求,同时通过所述处理模块重置所述第二定时器,所述第二重传请求用于请求重传所述尾部报文中丢失的报文。14.根据权利要求13所述的装置,其特征在于,所述第二时长大于或等于rtt且小于或等于2倍的rtt。15.根据权利要求11至14中任一项所述的装置,其特征在于,所述第一标识位于所述尾部报文的报文头中的保留字段。16.一种数据传输的装置,其特征在于,包括:发送模块,用于发送尾部报文,所述尾部报文为本次数据传输的最后一个拥塞窗口内、最后一个发送周期内或最后一个bdp内的全部报文或靠后一部分报文,所述尾部报文具有第一标识;接收模块,用于接收第一重传请求,所述第一重传请求用于请求重传所述尾部报文中丢失的报文,所述第一重传请求是在第一定时器超时后接收到的,所述第一定时器的时长为第一时长;所述发送模块还用于:基于所述第一重传请求,发送所述尾部报文中丢失的报文。17.根据权利要求16所述的装置,其特征在于,所述第一时长大于或等于1/2倍的rtt且小于或等于rtt。18.根据权利要求16或17所述的装置,其特征在于,所述接收模块还用于:接收第二重传请求,所述第二重传请求用于请求重传所述尾部报文中丢失的报文,所述第二重传请求是在第二定时器超时后接收到的,所述第二定时器的时长为第二时长;所述发送模块还用于:基于所述第二重传请求,发送所述尾部报文中丢失的报文。19.根据权利要求18所述的装置,其特征在于,所述第二时长大于或等于rtt且小于或等于2倍的rtt。20.根据权利要求16至19中任一项所述的装置,其特征在于,所述第一标识位于所述尾部报文的报文头中的保留字段。21.一种通信系统,其特征在于,包括权利要求11至15中任一项所述的装置和/或权利要求16至20中任一项所述的装置。
    22.一种数据传输的装置,其特征在于,包括:处理器,所述处理器与存储器耦合,所述存储器用于存储计算机程序,当所述处理器调用所述计算机程序时,使得所述装置执行如权利要求1至10中任一项所述的方法。23.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序包括用于实现如权利要求1至10中任一项所述的方法的指令。

    技术总结
    本申请提供了一种数据传输的方法和装置,能够减少丢失报文的恢复时间,进而减少数据传输任务的完成时间,提高了数据传输效率。该方法包括:发送端发送尾部报文,该尾部报文为本次数据传输的最后一个拥塞窗口内、最后一个发送周期内或最后一个带宽时延积BDP内的全部报文或靠后一部分报文,该尾部报文具有第一标识,相应地,接收端接收该尾部报文;接收端在接收到该尾部报文中的任一报文之后,启动第一定时器;若该第一定时器超时,且接收端接收到的该尾部报文中存在报文缺失,则接收端发送第一重传请求,相应地,发送端接收该第一重传请求;发送端基于该第一重传请求,发送该尾部报文中丢失的报文。相应地,接收端接收该丢失的报文。接收端接收该丢失的报文。接收端接收该丢失的报文。


    技术研发人员:徐安民 于德雷 王闯 王万红
    受保护的技术使用者:华为技术有限公司
    技术研发日:2020.11.23
    技术公布日:2022/5/25
    转载请注明原文地址:https://tc.8miu.com/read-14948.html

    最新回复(0)