一种数据重传的方法、接收端及系统的制作方法
【专利摘要】本发明公开了一种数据重传的方法、接收端及系统。该方法包括:接收发送端发送的数据包;当所述数据包中有数据包丢失时,记录第一个丢失的数据包的序号,将所述第一个丢失的数据包的序号作为起始丢包的序号,根据所述第一个丢失的数据包之后的丢包情况生成对应的预设长度的丢包位图;根据所述起始丢包的序号和所述丢包位图生成选择性重传信息,将所述选择性重传信息发送给发送端,使得发送端根据所述选择性重传信息进行指定数据的重传。本发明提供的技术方案能够解决现有的数据重传方法存在选择性重传的数据包过大,以及重传效率低下的问题。
【专利说明】一种数据重传的方法、接收端及系统
【技术领域】
[0001]本发明涉及计算机【技术领域】,特别是涉及一种数据重传的方法、接收端及系统。
【背景技术】
[0002]在当今的互联网时代,数据及信息的互通是为关键的一部分内容。数据在传输的过程中,需要对丢包的数据做数据重传以保证数据的完整性。
[0003]对于数据的重传,有两个关键的因素:
[0004]一个是指定性重传。即重传要做到精准,以保证所有的重传都是有效的重传,这样才能保证传输数据中都是有效数据。再一个就是如何进行重传。重传需要根据对端的丢包反馈进行重传,反馈的数据也跑在用户的网络上,所以反馈的设计直接决定重传的效率和重传交互中带宽的占耗。
[0005]现有技术中,在P2P传输中,很多NAT后的终端无法直接建立TCP连接,使得UDP打洞成为首选的方案。然而当传输的数据需要保持完整性时,而UDP本身又是不可靠传输。因此,在目前的方案中,通常采用选择性重传ARQ作为数据重传的方案。其中,在选择性重传中,接收端在发现一个数据包丢失时,向发送端发送一个指示该数据包丢失的反馈信息,当发送方接收到接收方的反馈信息时,发送方只发送该反馈信息中标识的数据包。即接收端发现N个数据包丢失后,会反馈对应N个数据包的的N个否定应答NACK。可见,在数据出错较大的情况下,会导致是选择性重传的数据包大,并且会导致重传效率低。
[0006]综上所述,现有的数据重传方法存在选择性重传的数据包过大,以及重传效率低下的问题。
【发明内容】
[0007]本发明提供了一种数据重传的方法、接收端及系统。本发明提供的技术方案能够解决现有的数据重传方法存在选择性重传的数据包过大,以及重传效率低下的问题。
[0008]本发明提供了一种数据重传方法,该方法包括:
[0009]接收发送端发送的数据包;
[0010]当所述数据包中有数据包丢失时,记录第一个丢失的数据包的序号,将所述第一个丢失的数据包的序号作为起始丢包的序号,根据所述第一个丢失的数据包之后的丢包情况生成对应的预设长度的丢包位图;
[0011]根据所述起始丢包的序号和所述丢包位图生成选择性重传信息,将所述选择性重传信息发送给发送端,使得发送端根据所述选择性重传信息进行指定数据的重传。
[0012]在上述方法中,所述根据所述第一个丢失的数据包之后的丢包情况生成对应的预设长度的丢包位图之后,所述方法还包括:
[0013]根据预设条件对所述丢包位图进行优化。
[0014]在上述方法中,所述根据预设条件对所述丢包位图进行优化包括:
[0015]当所述丢包位图中自第m位到最后一位的比特位相同,且自第m位到最后一位对应的标识为正确接收时,将从第m位到最后一位的比特位删除,保留第I位至第m-Ι位;其中,m为大于3的自然数。
[0016]在上述方法中,所述根据所述起始丢包的序号和所述丢包位图生成选择性重传信息包括:
[0017]将所述起始丢包的序号转换为二进制;
[0018]将所述转换后起始丢包的序号和所述丢包位图生成选择性重选信息。
[0019]在上述方法中,所述丢包位图的长度为2n个比特位,对应连续的2n个数据包,η为正整数;
[0020]当所述丢包位图中用“O”标识对应的数据包丢失,用“ I”标识对应的数据包没有丢失,被正确接收时,所述丢包位图中的第I位用于标识所述第一个丢失的数据包的前一位已经被正常接收的数据包的丢包情况;
[0021]或者,
[0022]当所述丢包位图中用“ I ”标识对应的数据包丢失,用“O”标识对应的数据包没有丢失,被正确接收时,所述丢包位图中的第I位用于标识所述第一个丢失的数据包的丢包情况。
[0023]本发明还公开了一种接收端,所述接收端包括:
[0024]接收模块,用于接收发送端发送的数据包;
[0025]处理模块,用于当所述数据包中有数据包丢失时,记录第一个丢失的数据包的序号,将所述第一个丢失的数据包的序号作为起始丢包的序号,根据所述第一个丢失的数据包之后的丢包情况生成对应的预设长度的丢包位图;
[0026]发送模块,用于根据所述起始丢包的序号和所述丢包位图生成选择性重传信息,将所述选择性重传信息发送给发送端,使得发送端根据所述选择性重传信息进行指定数据的重传。
[0027]在上述接收端中,所述接收端还包括:
[0028]优化模块,用于根据预设条件对所述丢包位图进行优化。
[0029]在上述接收端中,所述优化模块包括:
[0030]删除单元,用于当所述丢包位图中自第m位到最后一位的比特位相同,且自第m位到最后一位对应的标识为正确接收时,将从第m位到最后一位的比特位删除,保留第I位至第m-Ι位;其中,m为大于3的自然数。
[0031]在上述接收端中,所述发送模块包括:
[0032]转换单元,用于将所述起始丢包的序号转换为二进制;
[0033]生成单元,用于将所述转换后起始丢包的序号和所述丢包位图生成选择性重选信肩、O
[0034]本发明还提供了一种数据重传系统,所述系统包括发送端和上述中任意一项所述的接收端;
[0035]所述发送端,用于向所述接收端发送数据包,根据所述接收端发送的选择性重传信息进行数据重传;
[0036]其中,所述发送端,还用于接收到所述选择性重传信息之后,根据所述选择性重传信息将对应的需要重传的数据包放入重传队列中;如果在所述重传队列中存在重传数据包的序号小于所述选择性重传信息中的起始丢包序号时,将所述重传数据包退出所述重传队列。
[0037]综上所述,本发明提供的技术方案,接收端在接收发送端发送的数据包的过程中,当接收端发现有丢包时,将第一个丢包的序号作为起始丢包的序号,并根据后续的丢包情况生成对应的丢包位图;再将该选择性信息反馈给发送端,使得发送端根据该选择性重传信息进行数据重传。由于本发明中采用了丢包位图,并通过起始丢包的序号对后续的连续多个数据包的接收情况进行标识。减少了接收端反馈丢包时所需传输的信令大小,进而提高了重传的效率。此外,还可以对丢包位图进行进一步的优化,使得选择性重传信息所占的信令资源更小。
【专利附图】
【附图说明】
[0038]图1是本发明中一种数据重传方法的流程图;
[0039]图2是本发明中一种接收端的结构示意图;
[0040]图3是本发明中一种接收端的详细结构示意图;
[0041]图4是本发明中一种数据重传系统的结构示意图。
【具体实施方式】
[0042]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0043]图1是本发明中一种数据重传方法的流程图;本实施例中,发送端和接收端可以在进行数据传输之前,预先可以约定选择性重传信息为如下描述的结构。如图1所示,该方法包括如下步骤:
[0044]步骤101,接收发送端发送的数据包。
[0045]步骤102,当数据包中有数据包丢失时,记录第一个丢失的数据包的序号,将第一个丢失的数据包的序号作为起始丢包的序号,根据所述第一个丢失的数据包之后的丢包情况生成对应的预设长度的丢包位图。
[0046]步骤103,根据所述起始丢包的序号和所述丢包位图生成选择性重传信息,将所述选择性重传信息发送给发送端,使得发送端根据所述选择性重传信息进行指定数据的重传。
[0047]在本发明的一种实施例中,为了更好的对丢包进行记录,设定丢包位图的长度为2"个比特位,对应连续的2n个数据包;并记录第一个丢失的数据包的序号,将接收端检测到的第一丢失的数据包的序号作为起始丢包的序号,则在选择性重传信息中,丢包位图可以表示自第一个丢失的数据包开始的后续连续数据包的丢包情况。其中η为正整数。
[0048]在上述实施例中,可以根据数据包的总长度设置η的大小。举例为可以设置2η的值小于所要接收的数据包的总长度。
[0049]较佳的,在本发明的一种具体实施例中,η的值优选为5,即丢包位图为32位的丢包位图。其优点在于,不仅便于接收端能够快速地将对应的丢包在丢包位图中标识,也使得发送端能够根据该丢包位图较快的识别出对应的丢失的数据包。间接的加快了发送端重传的效率。并且当需要接收的数据包的个数大于32时,可以设置依次发送多个选择性重传信息。其中,相连两个选择性重传信息中的起始丢包的序号之差至少大于32。发送端根据接收到的选择性重传信息将需要重传的数据包放置到重传队列中。
[0050]在本发明的一种实施例中,在丢包位图中用“O”标识对应的数据包丢失,用“ I ”标识对应的数据包没有丢失,被正确接收时,丢包位图中的第I位用于标识第一个丢失的数据包的前一位已经被正常接收的数据包的丢包情况。即在比特位图中的第一位为I。
[0051]在本发明的另一种实施例中,在丢包位图中用“I”标识对应的数据包丢失,用“O”标识对应的数据包没有丢失,被正确接收时述丢包位图中的第I位用于标识第一个丢失的数据包的丢包情况。即在比特位图中的第一位为I
[0052]实施例一,在丢包位图中,用“ I”标识对应的数据包丢失,用“O”标识对应的数据包被正确接收;丢包位图中的第I位用于标识所述第一个丢包。则一个int的32个比特位表示起始丢包的序号之后的31个数据包的到达情况。其中,第k位(k〈32)为O,表示序号为[起始丢包序号+(k-Ι)]这个数据包的已经收到,如果为1,表示这个数据包丢失。当依次丢包的序号为14、16、18。所对应的丢包位图为:1010 1000 0000 0000 0000 0000 00000000,起始丢包的序号为:14。
[0053]实施例二,在丢包位图中,用“O”标识对应的数据包丢失,用“ I”标识对应的数据包被正确接收。丢包位图中的第I位用于标识第一个丢包之前的已经被正确接收的数据包。则一个int的32个比特位表示起始丢包的序号之后的31个数据包的到达情况。其中,第k位(k〈32)为1,表示序号为[(起始丢包序号_l) + (k-l)]这个数据包的已经收到,如果为0,表示这个数据包丢失。则依次丢包的序号为14、16、18。所对应的丢包位图为:10101111 1111 1111 1111 1111 1111 1111 1111,起始丢包的序号为:14。
[0054]在本发明中,为了减少发送的丢包位图的总长度,提高信息传输的效率。在生成预设对应长度的丢包位图之后,还可以根据预设条件对所述丢包位图进行优化,以减少丢包位图的总长度。
[0055]在本发明的一种较佳实施例中,根据预设条件对所述丢包位图进行优化具体为:当丢包位图中自第m位到最后一位的比特位相同,且自第m位到最后一位对应的标识为正确接收时,将从第m位到最后一位的比特位删除,保留第I位至第m-Ι位;其中,m为大于3的自然数。即可以将标识为正确接收的比特位删除,以实现对丢包位图的优化。
[0056]对于实施例一,对应的丢包位图可以优化为:10101。发送端在识别该丢包位图时,对于没有识别到的数据包的序号,默认为该数据包被正确接收。
[0057]实施例二中,对应的丢包位图可以优化为:1010。发送端在识别该丢包位图时,对于没有识别到的数据包的序号,默认为该数据包被正确接收。
[0058]由上述可知,在实施例一、二中,对应的丢包位图都得到了优化。优化后的丢包位图比原丢包位图减少了一定长度的比特位,减少了发送的选择性重传信息的数据量。进而在一定程度上提高了丢失的数据包重传的效率。
[0059]在本发明的一种实施例中,在发送端接收到选择性重传信息之后,根据选择性重传信息将对应的需要重传的数据包放入重传队列中;如果在重传队列中存在重传数据包的序号小于选择性重传信息中的起始丢包序号时,将重传数据包退出所述重传队列。由于在数据包重传之后,在收到正确接收的反馈之后,认为该数据包已经被正确接收,将给数据包从重传队列中移除。没有收到正确接收反馈的重传数据包仍然保留在重传队列中。并且,在本发明的具体实施例中,对于收到正确接收反馈的数据包,则认为数据包序号在此之前的,在重传队列中的数据包也已经被接收端正确接收。
[0060]举例为,当需要重传的第14个数据包仍然在重传队列中时,新加入的当前需要重传的数据包中,起始丢包序号为35时(以32位的丢包位图为例,第二次重传时的起始丢包序号大于第一次重传时的最后一位的数据包序号32),在收到该第35个数据包的重传后的正确接收的反馈时,默认仍在重传队列中的第14个数据包的重传已经被正确接收,将第14个数据包退出重传队列。
[0061]下面结合具体实施例进行详细说明,在本实施例的一种具体实施例中,发送端和接收端在进行数据传输之前,预先约定双方传输的的选择性重传信息的结构,该选择性重选信息包括起始丢包的序号和丢包位图。该起始丢包的序号表示第一个丢失数据包对应的序号;该丢包位图优选为32个比特位,“O”表示对应的数据包丢失,“I”表示对应的数据包正确接收;或者该丢包位图为按照预设条件进行优化后的丢包位图,具体详见下述描述,在此不再赘述。
[0062]发送端向接收端发送数据包,当接收端发现第15个数据包丢失时,将选择性重传信息中的起始丢包的序号设置为当前丢包的包序号15,即认为第15个数据包之前的第I?14个数据包都已经被正确接收。
[0063]丢包位图中第I位对应发送方发送的第14个包,因为第14个包已经收到,故丢包位图中的第I位为“I”;丢包位图中第2位对应发送的第I个丢包,即序号为15的数据包,因为该序号为15的数据包丢包,故丢包位图中第2位为O。此外接收端根据第15个数据包之后的丢包情况,生成对应的丢包位图。在本发明的一种实施例中,第15、19、21、23和24数据包丢失,则生成的对应的32位的丢包位图为:1011 1010 1001 1111 1111 1111 11111111。
[0064]优选的,在该丢包位图中从第12位开始至最后一位的比特位相同,且连续均为I(表示正确接收),可以将从第12位到第32位的比特位删除,在丢包位图中只保留第I位至第11位,实现丢包位图的优化处理,优化结果为:10111010100 (共11位)。
[0065]根据上述的起始丢包的序号为15以及对应的丢包位图为10111010100生成对应的选择性重传信息,具体的,先将起始丢包的序号转化成二进制后为1111,将转化后的起始丢包的序号和对应的丢包位图生成的选择性重传信息。再将生成的选择性重传信息反馈给发送端。
[0066]发送端根据接收到的选择性重传信息,获取到二进制的起始丢包的序号为1111,以及对应的丢包位图为10111010100,进行解析后得知起始的丢包序号为15,后续数据包的序号为19、21、23和24的数据包丢失,需要重传。发送端将需要重传的数据包序号为15、19、21、23和24的数据包放入重传队列中。
[0067]本实施例中,接收端在接收发送端发送的数据包的过程中,当接收端发现有丢包时,将第一个丢包的序号作为起始丢包的序号,并根据后续的丢包情况生成对应的丢包位图;再将该选择性信息反馈给发送端,使得发送端根据该选择性重传信息进行数据重传。由于本发明中采用了丢包位图,并通过起始丢包的序号对后续的连续多个数据包的接收情况进行标识。减少了接收端反馈丢包时所需传输的信令大小,进而提高了重传的效率。此外,还可以对丢包位图进行进一步的优化,使得选择性重传信息所占的信令资源更小。
[0068]本发明还提供了一种接收端,该接收端与对应的发送端约定选择性重传信息的结构;其中,所约定的择性重传信息包括:起始丢包的序号,以及表示从起始丢包开始的一定长度数据的丢包情况的丢包位图。
[0069]图2是本发明中一种接收端的结构示意图,如图2所述,该接收装置包括:接收模块201、处理模块202和发送模块203。
[0070]接收模块201,用于接收发送端发送的数据包。
[0071]处理模块202,用于当数据包中有数据包丢失时,记录第一个丢失的数据包的序号,将第一个丢失的数据包的序号作为起始丢包的序号,根据第一个丢失的数据包之后的丢包情况生成对应的预设长度的丢包位图。
[0072]发送模块203,用于根据起始丢包的序号和丢包位图生成选择性重传信息,将选择性重传信息发送给发送端,使得发送端根据选择性重传信息进行指定数据的重传。
[0073]图3是本发明中一种接收端的详细结构示意图,如图3所述,在本发明的一种实施例中,接收端还包括:优化模块204,用于根据预设条件对丢包位图进行优化。减少丢包位图的总的比特位数,降低发送选择性重传信息的资源消耗。
[0074]在本发明的一种实施例中,优化模块204包括:删除单元2041,用于当丢包位图中自第m位到最后一位的比特位相同,且自第m位到最后一位对应的标识为正确接收时,将从第m位到最后一位的比特位删除,保留第I位至第(m-Ι)位;其中,m为大于3的自然数。
[0075]在本发明的一种实施例中,发送模块204包括:转换单元2041和生成单元2042。其中,转换单元2041,用于将起始丢包的序号转换为二进制;生成单元2042,用于将转换后起始丢包的序号和所述丢包位图生成选择性重选信息。
[0076]本实施例中,接收端在接收发送端发送的数据包的过程中,当接收端发现有丢包时,将第一个丢包的序号作为起始丢包的序号,并根据后续的丢包情况生成对应的丢包位图;再将该选择性信息反馈给发送端,使得发送端根据该选择性重传信息进行数据重传。由于本发明中采用了丢包位图,并通过起始丢包的序号对后续的连续多个数据包的接收情况进行标识。减少了接收端反馈丢包时所需传输的信令大小,进而提高了重传的效率。此外,还可以对丢包位图进行进一步的优化,使得选择性重传信息所占的信令资源更小。
[0077]图4是本发明中一种数据重传系统的结构示意图,该数据重传系统包括:发送端301和接收端302 ;其中,接收端302可以为图2或图3中所示的接收端。
[0078]发送端301,用于向接收端发送数据包,根据接收端发送的选择性重传信息进行数据重传;
[0079]在本发明的一种实施例中,发送端301还用于,接收到选择性重传信息之后,根据选择性重传信息将对应的需要重传的数据包放入重传队列中;如果在重传队列中存在重传数据包的序号小于选择性重传信息中的起始丢包序号时,将重传数据包退出所述重传队列。
[0080]本发明提供的技术方案,接收端在接收发送端发送的数据包的过程中,当接收端发现有丢包时,将第一个丢包的序号作为起始丢包的序号,并根据后续的丢包情况生成对应的丢包位图;再将该选择性信息反馈给发送端,使得发送端根据该选择性重传信息进行数据重传。由于本发明中采用了丢包位图,并通过起始丢包的序号对后续的连续多个数据包的接收情况进行标识。减少了接收端反馈丢包时所需传输的信令大小,进而提高了重传的效率。此外,还可以对丢包位图进行进一步的优化,使得选择性重传信息所占的信令资源更小。
[0081]以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
【权利要求】
1.一种数据重传方法,其特征在于,该方法包括: 接收发送端发送的数据包; 当所述数据包中有数据包丢失时,记录第一个丢失的数据包的序号,将所述第一个丢失的数据包的序号作为起始丢包的序号,根据所述第一个丢失的数据包之后的丢包情况生成对应的预设长度的丢包位图; 根据所述起始丢包的序号和所述丢包位图生成选择性重传信息,将所述选择性重传信息发送给发送端,使得发送端根据所述选择性重传信息进行指定数据的重传。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一个丢失的数据包之后的丢包情况生成对应的预设长度的丢包位图之后,所述方法还包括: 根据预设条件对所述丢包位图进行优化。
3.根据权利要求2所述的方法,其特征在于,所述根据预设条件对所述丢包位图进行优化包括: 当所述丢包位图中自第m位到最后一位的比特位相同,且自第m位到最后一位对应的标识为正确接收时,将从第m位到最后一位的比特位删除,保留第I位至第m-Ι位;其中,m为大于3的自然数。
4.根据权利要求1所述的方法,其特征在于,所述根据所述起始丢包的序号和所述丢包位图生成选择性重传信息包括: 将所述起始丢包的序号转换为二进制; 将所述转换后起始丢包的序号和所述丢包位图生成选择性重选信息。
5.根据权利要求1所述的方法,其特征在于,所述丢包位图的长度为2"个比特位,对应连续的2n个数据包,η为正整数; 当所述丢包位图中用“O”标识对应的数据包丢失,用“I”标识对应的数据包没有丢失,被正确接收时,所述丢包位图中的第I位用于标识所述第一个丢失的数据包的前一位已经被正常接收的数据包的丢包情况; 或者, 当所述丢包位图中用“I”标识对应的数据包丢失,用“O”标识对应的数据包没有丢失,被正确接收时,所述丢包位图中的第I位用于标识所述第一个丢失的数据包的丢包情况。
6.—种接收端,其特征在于,所述接收端包括: 接收模块,用于接收发送端发送的数据包; 处理模块,用于当所述数据包中有数据包丢失时,记录第一个丢失的数据包的序号,将所述第一个丢失的数据包的序号作为起始丢包的序号,根据所述第一个丢失的数据包之后的丢包情况生成对应的预设长度的丢包位图; 发送模块,用于根据所述起始丢包的序号和所述丢包位图生成选择性重传信息,将所述选择性重传信息发送给发送端,使得发送端根据所述选择性重传信息进行指定数据的重传。
7.根据权利要求6所述的接收端,其特征在于,所述接收端还包括: 优化模块,用于根据预设条件对所述丢包位图进行优化。
8.根据权利要求7所述的接收端,其特征在于,所述优化模块包括: 删除单元,用于当所述丢包位图中自第m位到最后一位的比特位相同,且自第m位到最后一位对应的标识为正确接收时,将从第m位到最后一位的比特位删除,保留第I位至第m-Ι位;其中,m为大于3的自然数。
9.根据权利要求6所述的接收端,其特征在于,所述发送模块包括: 转换单元,用于将所述起始丢包的序号转换为二进制; 生成单元,用于将所述转换后起始丢包的序号和所述丢包位图生成选择性重选信息。
10.一种数据重传系统,其特征在于,所述系统包括发送端和如权利要求6?9中任意一项所述的接收端; 所述发送端,用于向所述接收端发送数据包,根据所述接收端发送的选择性重传信息进行数据重传; 其中,所述发送端,还用于接收到所述选择性重传信息之后,根据所述选择性重传信息将对应的需要重传的数据包放入重传队列中;如果在所述重传队列中存在重传数据包的序号小于所述选择性重传信息中的起始丢包序号时,将所述重传数据包退出所述重传队列。
【文档编号】H04L29/08GK104518853SQ201310451059
【公开日】2015年4月15日 申请日期:2013年9月27日 优先权日:2013年9月27日
【发明者】刘玎 申请人:北京新媒传信科技有限公司