一种数据传输的方法以及相关设备与流程

文档序号:11681029阅读:291来源:国知局
一种数据传输的方法以及相关设备与流程

本发明实施例涉及通信技术领域,尤其涉及一种数据传输的方法以及相关设备。



背景技术:

众所周知,大数据技术涉及到数据的采集、传输、处理和管理的各个方面,其中,数据传输是指将大数据从一个机构搬运到其他的机构,通常使用文件传输协议(英文:filetransferprotocol,缩写:ftp)进行传输,ftp是基于传输控制协议(英文:transmissioncontrolprotocol,缩写:tcp)实现数据传输的。在使用tcp传输数据时的吞吐量往往会受到很多因素的影响,例如丢包率和往返时延(英文:roundtriptime,英文:rtt),对于100gb的数据而言,若传输速率为1.32兆比特每秒(英文:megabitpersecond,英文缩写:mbps),需要用7天的时间传输完成,如果是0.31mbps则需要30天的时间才能完成传输。

目前,针对大数据中的tcp传输性能低的弱点,出现了许多新的技术来提升大数据的传输效率。例如,采用网格式文件传输协议(英文:gridfiletransferprotocol,缩写:gridftp),该技术通过在发送端和接收端之间建立多条tcp流来传输数据,在发送端将数据分发到多条tcp流上,然后在接收端再将这些来自多条tcp流的数据组合起来。当其中一条或多条tcp流上出现拥塞丢包的情况,发送端会根据接收端回应的确认(英文:acknowledgement,缩写:ack)消息,使得发送端将拥塞窗口减半,导致吞吐量下降。但是由于有多条tcp流同时传输数据,所以在少数tcp流出现数据传输失败的情况下,对平均吞吐量的影响比较小,因此保证了tcp传输性能。

然而,使用上述方案虽然可以保证大数据的数据传输吞吐量,但是需要建立多条tcp连接,假设以20条tcp流来计算,每一条tcp流占用20m内存,则一组数据传输就需要400m的内存,如果同时有多组数据传输,加上 系统其它应用的内存开销,系统内存将成为数据传输的瓶颈。



技术实现要素:

本发明提供了一种数据传输的方法以及相关设备,可以有效避免发送端将tcp拥塞窗口减小的情况,这样也就无需为了保证吞吐量而采用多条tcp流来传输数据,本方案不仅能够保证吞吐量足够大且稳定,相比于采用多条tcp传输数据还可以大大降低对内存的需求,节省系统资源。

有鉴于此,本发明第一方面提供了一种数据传输的方法,包括:

接收端使用第一协议接收发送端发送的k个数据包,其中,每个数据包中都包含有序列号所述k个数据包为发送端发送的l个数据包中的部分数据包;

当接收端使用第一协议并根据k个数据包中的序列号检测到目标数据包发生丢失的时候,接收端可以根据目标数据包来确定第二发送时延,在本发明中,第二发送时延是大于第一发送时延的,而第一发送时延是人为预先设定的;

接收端使用第一协议,再按照第二发送时延向发送端发送确认消息ack,确认消息ack是用来通知发送端这样的一个消息,即“目前接收端已经收到了所述l个数据包”;

接收端使用第二协议向发送端发送关于目标数据包的重传请求,使得发送端可以根据重传请求发送丢失的目标数据包;

接收端使用第二协议接收发送端重传的目标数据包,然而,接收端也可以在使用第二协议接收发送端重传的目标数据包之后,使用第一协议按照第二发送时延向发送端发送确认消息ack,至此,完成数据传输。

本发明提供了一种可应用于大数据场景下数据传输的方法,接收端使用第一协议接收发送端发送的k个数据包,其中,每个数据包中包含序列号,所述k个数据包为发送端发送的l个数据包中的部分数据包。当接收端使用第一协议根据k个数据包中的序列号检测到目标数据包丢失时,根据目标数据包确定第二发送时延,第二发送时延大于第一发送时延,第一发送时延为预先设定的,接收端使用第一协议按照第二发送时延向发送端发送确认消息 ack,确认消息ack用于通知发送端接收端收到了l个数据包,接收端使用第二协议向发送端发送目标数据包的重传请求,并使用第二协议接收发送端重传的目标数据包。使用上述方法进行数据传输,可以有效避免发送端将tcp拥塞窗口减小的情况,这样也就无需为了保证吞吐量而采用多条tcp流来传输数据,本方案不仅能够保证吞吐量足够大且稳定,相比于采用多条tcp传输数据还可以大大降低对内存的需求,节省系统资源。

结合本发明实施例的第一方面,在第一种可能的实现方式中,接收端根据目标数据包确定第二发送时延之前,还可以包括:

接收端判断k个数据包中第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号是否连续,其中,第一数据包是在第二数据包之前被接收的,也就是第一数据包是第二数据包的前一个数据包,或者前n个数据包,n为大于等于1的正整数;

若第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号连续时,则接收端可以确定没有数据包丢失;

若第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号不连续时,则接收端可以确定至少一个数据包发生了丢失,其中,至少一个丢失了的数据包为目标数据包。

其次,本发明实施例中,提供了一种判断数据包是否丢失的方法,可以通过判断数据包中第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号是否连续,来确定数据包是否丢失。通过上述方法来确定丢失的数据包,如果没有丢失数据包就不用增加第二发送时延,如果采用上述方式判断出有目标数据包丢失,则进而可以增加第二发送时延,因此,判断目标数据包是否丢失可以更准确的了解是否需要增加第二发送时延,提升方案的可行性和实用性。

结合本发明实施例的第一方面,在第二种可能的实现方式中,接收端使用第二协议向发送端发送目标数据包的重传请求之前,还可以包括:

接收端使用第一协议向接收端的第二协议发送目标数据包的信息,其中,目标数据包的信息至少可以包括目标数据包的长度和/或偏移,偏移是指丢失数据包在整个数据流中的偏移位置,长度则是指数据包中的字节数大小。

其次,本发明实施例中,具体说明了第一协议与第二协议之间的关系,在接收端或发送端均使用第一协议与第二协议进行数据交换,第一协议主要解决了丢包时可以延迟确认消息ack的发送,而在发送端与接收端之间则使用第二协议来配合完成数据的有效传输,负责丢失数据包的重传,新增的第二协议在实际应用过程中起到了提升数据包重传效率的作用,而第一协议与第二协议进行数据交换则是对本发明方案的具体实施提供了支持,进而提升了方案的可行性和实用性。

结合本发明实施例的第一方面的第一种可选实施例,在第三种可能的实现方式中,接收端在确定至少一个数据包丢失之后,还可以包括:

根据使用第一协议获取到的初始序列号,第一数据包的最后一个字节所对应的序列号以及第二数据包的第一个字节所对应的序列号,再使用第二协议来确定目标数据包在整个数据流中的位置。

再次,本发明实施例中,接收端可以通过初始序列号,第一数据包的最后一个字节所对应的序列号以及第二数据包的第一个字节所对应的序列号,并使用第一协议向第二协议发送这些信息,使得接收端采用第二协议确定目标数据包在整个待发送的数据流中的位置。从而使得方案具有更强的可行性,并且增强方案的实用性和灵活性。

结合本发明实施例的第一方面的第三种可选实施例,在第四种可能的实现方式中,接收端根据第一协议获取到的初始序列号,第一数据包的最后一个字节所对应的序列号以及第二数据包的第一个字节所对应的序列号,使用第二协议确定目标数据包的位置,可以包括:

接收端可以按照公式m=a+1计算目标数据包第一个字节对应的序列号:

其中,m为目标数据包对应的第一个字节,a为第一数据包的最后一个字节所对应的序列号;

接收端可以按照公式n=b-a-1计算目标数据包的长度:

其中,n为目标数据包的长度,b为第二数据包的第一个字节所对应的序列号,a为第一数据包的最后一个字节所对应的序列号;

接收端可以按照q=a-y计算目标数据包的偏移位置:

其中,q为目标数据包的偏移位置,a为第一数据包的最后一个字节所 对应的序列号,y为初始序列号。

进一步地,本发明实施例中,说明了如何使用第二协议确定目标数据包的位置,接收端可以根据相关公式计算目标数据包对应的第一个字节,目标数据包的长度以及目标数据包的偏移位置,从而确定目标数据包的位置,为方案的实现提供具体的依据,增加方案的可行性。

结合本发明实施例的第一方面、第一方面第一至第四种中任意一种可选实施例,在第五种可能的实现方式中,接收端根据目标数据包确定第二发送时延之后,还可以包括:

接收端启动计数器;

接收端每收到一个数据包时,都需要判断是否发生了数据包丢失,如果发送了数据包丢失,则重置计数器,并且增加第二发送时延,如果没有发生数据包的丢失,则增加计数器的数值,接收端进而判断计数器的数值是否达到预置门限,如果达到,则降低第二发送时延,且重置计数器。

更进一步地,本发明实施例中,接收端可以根据实际情况来控制第二发送时延。接收端在判断数据包丢失时增加第二发送时延,可以避免接收端一旦检测到丢失数据包就向发送端发送确认消息ack,从而导致发送端的拥塞窗口减半。接收端在判断数据包未丢失时降低第二发送时延,这样可以使得发送端更及时地了解接收端的接收情况。如此,由于发送端的拥塞窗口没有骤然下降,可以保证tcp传输数据的吞吐量,并且通过接收端计数器计算数据包个数的方法来控制第二发送时延,可以提升方案的可行性和灵活性。

本发明第二方面提供一种接收端,包括:

接收模块,用于使用第一协议接收发送端发送的k个数据包,其中,每个数据包中包含序列号;所述k个数据包为发送端发送的l个数据包中的部分数据包;

确定模块,用于当通第一协议根据接收模块接收到的所述k个数据包中的序列号检测到目标数据包丢失时,根据目标数据包确定第二发送时延,第二发送时延大于第一发送时延,第一发送时延为预先设定的;

发送模块,用于使用第一协议按照确定模块确定的第二发送时延向发送端发送确认消息ack,,所述确认消息ack用于通知所述发送端接收端收到 了所述l个数据包;

其中,所述发送模块,还用于当确定模块使用所述第一协议根据所述k个数据包中的序列号检测到目标数据包丢失时,使用第二协议向发送端发送目标数据包的重传请求;

接收模块,还用于发送模块使用第二协议向发送端发送目标数据包的重传请求之后,使用第二协议接收发送端重传的目标数据包。

结合本发明实施例的第二方面,在第一种可能的实现方式中,接收端还可以包括判断模块;

判断模块,用于确定模块根据目标数据包确定发送时延之前,判断k个数据包中第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号是否连续,其中,第一数据包在第二数据包之前被接收;

确定模块,还用于若判断模块判断第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号连续时,则确定没有数据包丢失;

若判断模块判断第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号不连续时,则确定至少一个数据包丢失,其中,至少一个数据包为目标数据包。

结合本发明实施例的第二方面,在第二种可能的实现方式中,

发送模块,还用于发送模块使用第二协议向发送端发送目标数据包的重传请求之前,使用第一协议向第二协议发送目标数据包的信息。

结合本发明实施例的第二方面的第一种可选实施例,在第三种可能的实现方式中,

确定模块,还用于确定模块确定至少一个数据包丢失之后,根据第一协议的初始序列号,第一数据包的最后一个字节所对应的序列号以及第二数据包的第一个字节所对应的序列号,使用第二协议确定目标数据包的位置。

结合本发明实施例的第二方面的第三种可选实施例,在第四种可能的实现方式中,确定模块包括:

计算单元,用于按照公式m=a+1计算目标数据包对应的第一个字节:

其中,m为目标数据包第一个字节对应的序列号,a为第一数据包的最 后一个字节所对应的序列号;

按照公式n=b-a-1计算所述目标数据包的长度:

其中,n为所述目标数据包的长度,b为第二数据包的第一个字节所对应的序列号,a为第一数据包的最后一个字节所对应的序列号;

按照q=a-y计算目标数据包的位置:

其中,q为目标数据包的位置,a为第一数据包的最后一个字节所对应的序列号,y为初始序列号。

结合本发明实施例的第二方面、第一方面第一至第四种中任意一种可选实施例,在第五种可能的实现方式中,接收端还包括启动模块和计数模块;

启动模块,用于确定模块根据目标数据包确定第二发送时延之后,启动计数器;

计数模块,用于启动模块启动计数器后,每收到一个数据包时,判断是否发生数据包丢失,若丢失,则重置计数器,并增加第二发送时延,若未丢失,则增加计数器的数值,判断计数器的数值是否达到预置门限,若达到,则降低第二发送时延,重置计数器。

本发明第三方面提供一种接收端,包括:存储器、收发器、处理器以及总线系统;

其中,存储器用于存储程序;

处理器用于执行所述存储器中的程序,具体如下步骤:

控制收发器使用第一协议接收发送端发送的k个数据包,其中,每个数据包中包含序列号;所述k个数据包为发送端发送的l个数据包中的部分数据包;

当使用第一协议根据所述k个数据包中的序列号检测到目标数据包丢失时,根据目标数据包确定第二发送时延,第二发送时延大于第一发送时延,第一发送时延为预先设定的;

控制收发器使用第一协议按照第二发送时延向发送端发送确认消息ack,所述确认消息ack用于通知所述发送端接收端收到了所述l个数据包;

控制收发器使用第二协议向发送端发送目标数据包的重传请求;

控制收发器使用第二协议接收发送端重传的目标数据包。

可选地,处理器用于执行所述存储器中的程序,具体还用于执行以下步骤:

判断k个数据包中第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号是否连续,其中,第一数据包在第二数据包之前被接收;

若第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号连续时,则确定没有数据包丢失;

若第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号不连续时,则确定至少一个数据包丢失,其中,至少一个数据包为目标数据包。

可选地,处理器用于执行所述存储器中的程序,具体还用于执行以下步骤:

控制收发器使用第一协议向第二协议发送目标数据包的信息。

可选地,处理器用于执行所述存储器中的程序,具体还用于执行以下步骤:

根据第一协议的初始序列号,第一数据包的最后一个字节所对应的序列号以及第二数据包的第一个字节所对应的序列号,使用第二协议确定目标数据包的位置。

可选地,处理器用于执行所述存储器中的程序,具体还用于执行以下步骤:

按照公式m=a+1计算目标数据包第一个字节对应的序列号:

其中,m为目标数据包对应的第一个字节,a为第一数据包的最后一个字节所对应的序列号;

按照公式n=b-a-1计算目标数据包的长度:

其中,n为目标数据包的长度,b为第二数据包的第一个字节所对应的序列号,a为第一数据包的最后一个字节所对应的序列号;

按照q=a-y计算目标数据包的偏移位置:

其中,q为目标数据包的偏移位置,a为第一数据包的最后一个字节所对应的序列号,y为初始序列号。

可选地,处理器用于执行所述存储器中的程序,具体还用于执行以下步骤:

启动计数器;

每收到一个数据包时,判断是否发生数据包丢失,若丢失,则重置计数器,并增加第二发送时延,若未丢失,则增加计数器的数值,判断计数器的数值是否达到预置门限,若达到,则降低第二发送时延,重置计数器。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明提供了一种可应用于大数据场景下数据传输的方法,接收端使用第一协议接收发送端发送的k个数据包,其中,每个数据包中包含序列号,所述k个数据包为发送端发送的l个数据包中的部分数据包。当接收端使用第一协议根据k个数据包中的序列号检测到目标数据包丢失时,根据目标数据包确定第二发送时延,第二发送时延大于第一发送时延,第一发送时延为预先设定的,接收端使用第一协议按照第二发送时延向发送端发送确认消息ack,确认消息ack用于通知发送端接收端收到了l个数据包,接收端使用第二协议向发送端发送目标数据包的重传请求,并使用第二协议接收发送端重传的目标数据包。使用上述方法进行数据传输,可以有效避免发送端将tcp拥塞窗口减小的情况,这样也就无需为了保证吞吐量而采用多条tcp流来传输数据,本方案不仅能够保证吞吐量足够大且稳定,相比于采用多条tcp传输数据还可以大大降低对内存的需求,节省系统资源。

附图说明

图1为本发明实施例中数据传输的方法一个实施例示意图;

图2为本发明实施例中第一协议与第二协议的交互过程示意图;

图3为本发明实施例中接收端控制第二发送时延的流程示意图;

图4为本发明实施例中提供的一种数据传输应用场景;

图5为本发明实施例中接收端一个实施例示意图;

图6为本发明实施例中接收端另一个实施例示意图;

图7为本发明实施例中接收端另一个实施例示意图;

图8为本发明实施例中接收端另一个实施例示意图;

图9为本发明实施例中接收端的硬件结构示意图。

具体实施方式

本发明提供了一种数据传输的方法以及相关设备,可以有效避免发送端将tcp拥塞窗口减小的情况,这样也就无需为了保证吞吐量而采用多条tcp流来传输数据,本方案不仅能够保证吞吐量足够大且稳定,相比于采用多条tcp传输数据还可以大大降低对内存的需求,节省系统资源。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

应理解,本发明实施例可以应用于大数据场景下的数据传输,但并不仅限于应用于大数据场景。在信息技术(英文全称:informationtechnology,英文缩写:it)中,大数据的关注度越来越高,这是由于大数据具有以下四大特点:第一个特点为数据量大,基本上是指从几十太字节(英文全称:terabyte,英文缩写:tb)到几拍字节(英文全称:petabyte,英文缩写:pb)这样的数量级,甚至可能发展到艾字节(英文全称:exabyte,英文缩写:eb);第二个特点为数据具有多样性,除了传统的销售和库存等数据之外,现在企业所采集和分析的数据还包括网络日志数据以及社交平台数据等媒体中的文本数据,智能手机中内置的全球定位系统(英文全称:globalpositioningsystem,英文缩写:gps)所产生的位置信息,监控摄像机的视频数据等;第三个特点为数据生成的速度和更新的频率高,实时性强;第四个特点为价值高,大数据的优势在于数据有用,价值含量高,对于很多行业而言,利用好大数据将成为赢得竞争的关键。

通常情况下,可以采用ftp来进行大数据的传输,ftp用于在因特网上控制文件的双向传输,同时它也是一个应用程序,基于不同的操作系统有不同的ftp应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在ftp的使用当中,常常会出现两个概念,即为下载和上传。其中,下载文件就是指从远程主机拷贝文件至自己的计算机上;而上传文件就是指将文件从自己的计算机中拷贝到远程主机上。

在上面的描述中了解到ftp可以为一种控制文件在因特网上进行双向传输的应用程序,然而ftp实则是基于tcp来实现数据传输功能的。tcp是一种面向连接的、可靠的、基于字节流的传输层通信协议,由国际互联网工程任务组(英文全称:theinternetengineeringtaskforce,英文缩写:ietf)的请求注解(英文全称:requestforcomments,英文缩写:rfc)793定义,在简化的计算机网络开放式系统互联(英文全称:opensysteminterconnection,英文缩写:osi)模型中,它完成第四层,即传输层,所指定的功能。应用层向tcp层发送用于网间传输的、且用8位字节表示的数据流,然后由tcp层把数据流封装成数据包,并通过网络将数据包传送给接收端的tcp层。tcp封装的每个数据包中包含该数据包的第一个字节对应的序列号,后续每个字节都会根据第一个字节的序列号进行递增,在出现字节对应的序列号不连续时,可以检测到丢包。在数据包传输过程中,接收端对已成功收到的数据包发回一个相应的确认消息ack,如果发送端在合理的rtt内未收到某个数据包对应的ack,那么该数据包就被假设为已丢失,该数据包将会被重传。

应理解,本发明实施例所提供的数据传输方法可以应用于网络设备,也可以应用于终端设备,此处不对具体的部署场景进行限定。

请参阅图1,本发明实施例中数据传输的方法一个实施例包括:

101、使用第一协议接收发送端发送的k个数据包,其中,每个数据包中包含序列号。所述k个数据包为发送端发送的l个数据包中的部分数据包。

本实施例中,接收端使用第一协议接收发送端发送的k个数据包,而每个数据包中都包含了序列号。其中,k为大于等于1的自然数,l为大于等于k的自然数。

其中,第一协议为传统tcp协议经过修改后得到的协议,本文称为修改后的tcp,也可以称为扩展的tcp,与传统tcp不同的是,修改后的tcp是根据丢包情况延迟确认消息ack的发送,并且将不使用第一协议修改后的tcp来重传数据包。本发明中接收端和发送端通过传统tcp中的方式建立tcp连接,从而使得接收端可以使用第一协议接收发送端发送的数据包。

每个数据包中的每个字节对应一个序列号,可以将第一个数据包的第一个字节序列号表示为x,紧随其后的第一数据包的第二个字节序列号为x+1,以此类推,x为大于等于0的正整数。假如第一个数据包的最后一个字节序列号是y,则第二个数据包的第一个字节序列号为y+1,y为大于等于0的正整数。

102、当使用第一协议根据k个数据包中的序列号检测到目标数据包丢失时,根据目标数据包确定第二发送时延,第二发送时延大于第一发送时延,第一发送时延为预先设定的。

本实施例中,当接收端使用第一协议并根据k个数据包中的序列号检测到有目标数据包丢失时,根据目标数据包在整个数据序列中的长度、偏移位置以及个数的至少一项信息确定第二发送时延,第二发送时延为接收端向发送端发送确认消息ack所推迟的时间。所述目标数据包为所述l个数据包中的至少一个数据包。

其中,第二发送时延大于第一发送时延,也就是说,假如预先设定的第一发送时延为8毫秒(英文全称:millisecond,英文缩写:ms),则每8ms时接收端会向发送端发送确认消息ack,以此来告诉发送端在这8ms内接收到了哪些数据包。如果发现在8ms内有目标数据包丢失时,则将8ms的第一发送时延延长,例如可以增加时延值,该时延值既可以是一个固定值,也可以是具有一定规律的数值。如果时延值为20ms,则得到的第二发送时延为28ms,且第二发送时延必然是大于第一发送时延的。若第二发送时延为28ms,那么在8ms时,接收端就不会告诉发送端自己没有接收到目标数据包,而且“隐瞒”数据包丢失的情况,在后面的20ms中再次尝试接收这些丢失的目标数据包,接收端使用第一协议接收丢失的目标数据包后,采用确认消息ack告诉发送端数据包均已收到。这样,便不会使得发送端因为发现 数据包丢失而迅速减小tcp拥塞窗口,也避免了发送端发送速率的快速下降。

103、使用第一协议按照第二发送时延向发送端发送确认消息ack,确认消息ack用于通知发送端接收端收到了l个数据包。

本实施例中,接收端使用第一协议并按照第二发送时延向发送端发送确认消息ack,其中,确认消息ack用于通知发送端,该接收端已经接收到了所述k个数据包,即告知发送端没有数据包丢失。

需要说明的是,步骤103与步骤105中接收端使用第二协议接收重传的目标数据包的顺序无关,也就是说,接收端使用第一协议按照发送时延向发送端发送确认消息ack,既可以在接收端使用第二协议接收发送端重传的目标数据包之前,也可以是在接收端使用第二协议接收发送端重传的目标数据包之后。

104、使用第二协议向发送端发送目标数据包的重传请求。

本实施例中,接收端使用第二协议向发送端发送目标数据包的重传请求,用于请求发送端重传目标数据包。

其中,第二协议可以为另一个经过修改的tcp,该经过修改的tcp被称为准tcp协议,应用于tcp准应用层,与传统tcp不同的是,第二协议能够接收第一协议发送的目标数据包的相关信息,并且能够采用第二协议来重传这些目标数据包。

此外,第二协议还可以是经过修改的用户数据报协议(英文全称:userdatagramprotocol,英文缩写:udp),传统的udp是osi参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。在网络中它与tcp协议一样用于处理数据包,是一种无连接的协议。udp有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。udp用来支持那些需要在计算机之间传输数据的网络应用。

网际互联协议(英文全称:internetprotocol,英文缩写:ip)层之间传输数据是不可靠传输,tcp层建立在不可靠的ip层上,提供可靠传输,准tcp层建立在tcp层的上一层。接收端通过采用第二协议的tcp准应用层向发送 端的采用第二协议的tcp准应用层发送重传请求,使得发送端根据接收到的重传请求来重传目标数据包。

105、使用第二协议接收发送端重传的目标数据包。

本实施例中,发送端使用第二协议接收到接收端发送的重传请求之后,会根据该请求使用第二协议向接收端重传丢失的目标数据包,接收端使用第二协议接收到相应的目标数据包。

需要说明的是,接收端可以在使用第二协议接收到发送端重传的目标数据包之后,使用第一协议按照第二发送时延向发送端发送确认消息ack,此处不做限定。

本发明提供了一种可应用于大数据场景下数据传输的方法,接收端使用第一协议接收发送端发送的k个数据包,其中,每个数据包中包含序列号,所述k个数据包为发送端发送的l个数据包中的部分数据包。当接收端使用第一协议根据k个数据包中的序列号检测到目标数据包丢失时,根据目标数据包确定第二发送时延,第二发送时延大于第一发送时延,第一发送时延为预先设定的,接收端使用第一协议按照第二发送时延向发送端发送确认消息ack,确认消息ack用于通知发送端接收端收到了l个数据包,接收端使用第二协议向发送端发送目标数据包的重传请求,并使用第二协议接收发送端重传的目标数据包。使用上述方法进行数据传输,可以有效避免发送端将tcp拥塞窗口减小的情况,这样也就无需为了保证吞吐量而采用多条tcp流来传输数据,本方案不仅能够保证吞吐量足够大且稳定,相比于采用多条tcp传输数据还可以大大降低对内存的需求,节省系统资源。

可选地,在上述图1对应的实施例的基础上,本发明实施例提供的数据传输的方法第一个可选实施例中,根据目标数据包确定第二发送时延之前,还可以包括:

判断k个数据包中第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号是否连续,其中,第一数据包在第二数据包之前被接收;

若第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号连续时,则确定没有数据包丢失;

若第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号不连续时,则确定至少一个数据包丢失,其中,至少一个数据包为目标数据包。

本实施例中,提供了一种判断数据包是否丢失的方法,具体为,第一数据包在第二数据包之前被接收,假设第一数据包的长度为10个字节,每个字节分别对应一个序列号,即第一数据包中10个字节的序列号分别为1、2、3、4、5、6、7、8、9以及10,于是,在收到第一数据包之后,可以得到第一数据包的最后一个字节所对应的序列为10。

在收到第一数据包之后,紧接着收到第二数据包,这时需要解析第二数据包并得到第二数据包中第一个字节所对应的序列号,如果该第一个字节所对应的序列号为11时,则说明第二数据包与第一数据包时连续的,即确定没有数据包丢失。如果第二数据包中第一个字节不为11时,则说明第二数据包与第一数据包之间不连续,即确定有至少一个数据包丢失,这至少一个丢失的数据包为目标数据包,

其次,本发明实施例中,提供了一种判断数据包是否丢失的方法,可以通过判断k个数据包中第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号是否连续,来确定数据包是否丢失。通过上述方法来确定丢失的数据包,如果没有丢失数据包就不用增加第二发送时延,如果采用上述方式判断出有目标数据包丢失,则进而可以增加第二发送时延,因此,判断目标数据包是否丢失可以更准确的了解是否需要增加第二发送时延,提升方案的可行性和实用性。

可选地,在上述图1对应的实施例的基础上,本发明实施例提供的数据传输的方法第二个可选实施例中,使用第二协议向发送端发送目标数据包的重传请求之前,还可以包括:

使用第一协议向第二协议发送目标数据包的信息。

本实施例中,接收端在使用第二协议向发送端发送目标数据包的重传请求之前,需要先通过接收端的第一协议向接收端的第二协议发送目标数据包的相关信息,目标数据包的相关信息包括丢失数据包的偏移和长度,偏移是指丢失数据包在整个数据流中的偏移位置;长度是指数据包中的字节数大 小。可以理解的是,目标数据包的信息还可能包含其他的一些信息。

接收端使用第一协议向接收端的第二协议发送目标数据包的信息具体可以参阅图2,图2为本发明实施例中第一协议与第二协议的交互过程示意图。如图2所示,在网络单元(英文全称:networkelement,英文缩写:ne)部署两套tcp/ip协议栈。将数据传输分为三个部分,从服务器到ne_a,由ne_a到ne_b,由ne_b到客户端。其中tcp_a和tcp_b采用现有标准的tcp/ip协议栈。ne设备中的数据交互有很多方法,比如共享内存和消息等,可以在服务器和客户端设置tcp代理,通过ne进行通信。ne_a可以一边从服务器获得数据,一边向ne_b发送数据,ne_b可以一边从ne_a接收数据,一边向客户端发送数据。

其中,tcp_a与tcp_b是现有的tcp协议,服务器与ne_a之间采用现有的tcp协议在tcp对等协议层上进行数据传输,ne_b与客户端之间采用现有的tcp协议在tcp对等协议层上进行数据传输,在ne_a与ne_b中分别对现有的tcp协议进行修改,得到第一协议以及第二协议,在发送端的tcp对等协议层上通过应用层向采用第一协议的tcp层发送数据包,同样地,在接收端的tcp对等协议层上通过应用层向采用第一协议的tcp层发送数据包。在接收端使用第一协议来向发送端发送确认消息ack,发送端采用第二协议向接收端发送被请求重传的目标数据包。

在本发明方案中,ne_a为服务器侧的发送端,而ne_b为客户端侧的接收端,我们以接收端为例进行描述。接收端通过接收端的第一协议向接收端的第二协议发送目标数据包的信息,具体可以是接收端内使用第一协议计算出目标数据包的第一个字节对应的序列号,目标数据包的长度以及目标数据包的偏移位置,并使用第一协议向第二协议发送这些目标数据包的信息。

其次,本发明实施例中,具体说明了第一协议与第二协议之间的关系,在接收端或发送端均使用第一协议与第二协议进行数据交换,第一协议主要解决了丢包时可以延迟确认消息ack的发送,而在发送端与接收端之间则使用第二协议来配合完成数据的有效传输,负责丢失数据包的重传,新增的第二协议在实际应用过程中起到了提升数据包重传效率的作用,而第一协议与第二协议进行数据交换则是对本发明方案的具体实施提供了支持,进而提升 了方案的可行性和实用性。

可选地,在上述图1对应的第一个可选实施例的基础上,本发明实施例提供的数据传输的方法第三个可选实施例中,确定至少一个数据包丢失之后,还可以包括:

根据第一协议的初始序列号,第一数据包的最后一个字节所对应的序列号以及第二数据包的第一个字节所对应的序列号,使用第二协议确定目标数据包的位置。

本实施例中,提供了一种确定目标数据包在整个待发送数据流中的位置的方法。接收端可以使用第一协议接收发送端发送的数据包,并判断这些数据包中是否有数据包丢失。当确定至少一个数据包丢失之后,接收端可以获取第一协议的初始序列号,即发送端用于使用第一协议向接收端发送首个数据包时该首个数据包中的第一字节的序列号,并且解析得到第一数据包的最后一个字节所对应的序列号,以及第二数据包的第一个字节所对应的序列号,第一数据包在第二数据包之前一个被接收,接收端可以根据初始序列号和第一数据包的最后一个字节所对应的序列号,计算得到丢失数据包在整个数据流中的偏移位置,接收端还可以根据第一数据包的最后一个字节所对应的序列号以及第二数据包的第一个字节所对应的序列号,计算得到丢失数据包的长度,即字节数大小。

在实际应用中,对于传输的数据包数据量较小的情况,可以直接采用序列号标记每个数据包的顺序,然而,对于大数据的传输而言,数据包的数量往往会比较大,通常情况下使用tcp进行数据传输的数据包序列号大小是有限的,最大的序列号为(232-1),初始序列号为0至(232-1)中任意一个正整数。当出现序列号大于(232-1)时,则需要设置一个序列号循环次数,比如,当实际序列号为(232+1)时,也就意味着已经超出了(232-1)的范围,于是设置序列号循环次数为“1”,表示一个循环的结束,用实际的序列号减去最大序列号后再减1,即可得到实际序列号的表达方式。可将(232+1)表示为1_1,其中,1_1中的第一个“1”是指一个循环结束,第二个“1”只是在新的一个循环中所占的位置为第二个位置,因为前面还有一个位置的序列号为“0”。

通过增加序列号循环次数可在大数据传输时,针对序列号大于最大序列号的情况进行处理,增加了方案在实际应用中的可行性,并且可以更加精准的计算出目标数据包的位置。

需要说明的是,除了可以采用增加序列号循环次数的方法来计算数据包的序列号,还可以通过改进协议来增加数据包携带的最大序列号。

至此,接收端在tcp层使用第一协议,将计算得到的数据包在整个待发送的数据流中的偏移位置以及长度等信息发送至tcp准应用层,在tcp准应用层中采用第二协议来根据上述信息得到这些丢失的目标数据包所在的具体位置,从而进行目标数据包的重传。

再次,本发明实施例中,接收端可以通过初始序列号,第一数据包的最后一个字节所对应的序列号以及第二数据包的第一个字节所对应的序列号,并使用第一协议向第二协议发送这些信息,使得接收端采用第二协议确定目标数据包在整个待发送的数据流中的位置。从而使得方案具有更强的可行性,并且增强方案的实用性和灵活性。

可选地,在上述图1对应的第三个可选实施例的基础上,本发明实施例提供的数据传输的方法第四个可选实施例中,根据第一协议的初始序列号,第一数据包的最后一个字节所对应的序列号以及第二数据包的第一个字节所对应的序列号,使用第二协议确定目标数据包的位置,可以包括:

按照公式m=a+1计算目标数据包第一个字节对应的序列号:

其中,m为目标数据包对应的第一个字节,a为第一数据包的最后一个字节所对应的序列号;

按照公式n=b-a-1计算目标数据包的长度:

其中,n为目标数据包的长度,b为第二数据包的第一个字节所对应的序列号,a为第一数据包的最后一个字节所对应的序列号;

按照q=a-y计算目标数据包的偏移位置:

其中,q为目标数据包的偏移位置,a为第一数据包的最后一个字节所对应的序列号,y为初始序列号。

本实施例中,提供了确定目标数据包的位置的公式,具体地:

(1)按照公式m=a+1计算目标数据包对应的第一个字节;

m为目标数据包对应的第一个字节,a为第一数据包的最后一个字节所对应的序列号,假设a为20099,则m为20099+1=20100,这是因为目标数据包为第一数据包与第二数据包之间丢失的数据包,且目标数据包的第一个字节与第一数据包的最后一个字节是连续的。

(2)按照公式n=b-a-1计算目标数据包的长度;

n为目标数据包的长度,b为第二数据包的第一个字节所对应的序列号,假设b为21100,a为第一数据包的最后一个字节所对应的序列号,假设a为20099,则n为21100-20099-1=1000,这是因为第一数据包与第二数据包之间隔着目标数据包,因此将第二数据包的第一个字节所对应的序列号减去第一数据包的最后一个字节所对应的序列号,再减去1就是目标数据包的字节长度大小。

(3)按照q=a-y计算目标数据包的偏移位置;

q为目标数据包的偏移位置,a为第一数据包的最后一个字节所对应的序列号,假设a为20099,y为初始序列号,假设y为99,则q为20099-99=20000,这是因为偏移位置是指目标数据包起始的位置,用第一数据包的最后一个字节所对应的序列号减去初始序列号,就可以知道目标数据包是在什么位置了。

进一步地,本发明实施例中,说明了如何使用第二协议确定目标数据包的位置,接收端可以根据相关公式计算目标数据包对应的第一个字节,目标数据包的长度以及目标数据包的偏移位置,从而确定目标数据包的位置,为方案的实现提供具体的依据,增加方案的可行性。

可选地,在上述图1以及图1对应的第一至第四个可选实施例中任一项的基础上,本发明实施例提供的数据传输的方法第五个可选实施例中,根据目标数据包确定第二发送时延之后,还可以包括:

启动计数器;

每收到一个数据包时,判断是否发生数据包丢失,若丢失,则重置计数器,并增加第二发送时延,若未丢失,则增加计数器的数值,判断计数器的数值是否达到预置门限,若达到,则降低第二发送时延,重置计数器。

本实施例中,接收端根据目标数据包确定第二发送时延之后,可以根据 实际情况来控制第二发送时延。

具体地,请参阅图3,图3为本发明实施例中接收端控制第二发送时延的流程示意图,如图3所示:

步骤201:用户设置第一发送时延,将计数器归零,并设置计数器溢出值。

例如,用户根据实际情况设置第一发送时延,即ack延迟初始值为8毫秒,再将计数器归零,最后设置计数器溢出值为100,即预置门限为100,也就是当不丢包的个数大于或等于100时,计数器就会溢出。

步骤202:启动计数器,该计数器用于计算数据包的个数,并开始接收发送端发送的数据包。

步骤203:确定是否有数据包丢失。

接收端每收到一个数据包时,都需要判断是否发生了数据包的丢失,判断的方法如上述图1对应的第一个可选实施例所描述的过程,即通过判断第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号是否连续,来确定是否有数据包丢失。

步骤204:当确定有数据包丢失时,重置计数器,并增加第二发送时延。

如果第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号不连续,则确定发生了数据包的丢失,此时需重置计数器,并增加第二发送时延,每次增加一个固定值,比如20ms,那么丢失一个数据包的时候,第二发送时延为28ms(ack延迟初始值+1×固定值),当然如果连续丢失两个数据包,则第二发送时延为48ms(ack延迟初始值+2×固定值),以此类推,采用上述方式计算第二发送时延;

步骤205:当确定没有数据包丢失时,累加不丢包计时器的值。

如果第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号连续,则确定没有发生数据包的丢失,此时需要对计数器进行累加,例如对于归零后的计数器而言,当确定接收到的第一个数据包没有丢失时,则计数器的值为1,当第二个数据包也没有丢失时,则计数器的值累加到2,以此类推,采用上述方式对计数器进行累加处理。

步骤206:判断计数器是否溢出,即判断计数器的数值是否达到预置门限。

在计数器每次进行累加后都需要判断计数器的数值是否达到预置门限,根据步骤201可知计数器溢出值为100,即预置门限为100,如果累加后的计数器达到预置门限转至步骤207,如果累加后的计数器的数值小于预置门限,则转至步骤202,继续接收下一个数据包。

步骤207:当所述计数器溢出时,减少所述第二发送时延,将所述计数器归零。

如果累加后的计数器的数值达到预置门限,假设累加后的计数器刚好为100时,那么需要降低第二发送时延,可以每到100就根据第二固定值,例如1ms,减少第二发送时延,并且重置计数器,即将计数器归零,并转至步骤202继续接收后续的数据包。

需要说明的是,本实施例中的第一发送时延、每次增加的固定值的大小、计数器的预置门限和第二固定值的大小,均可以根据实际情况进行设定。

更进一步地,本发明实施例中,接收端可以根据实际情况来控制第二发送时延。接收端在判断数据包丢失时增加第二发送时延,可以避免接收端一旦检测到丢失数据包就向发送端发送确认消息ack,从而导致发送端的拥塞窗口减半。接收端在判断数据包未丢失时降低第二发送时延,这样可以使得发送端更及时地了解接收端的接收情况。如此,由于发送端的拥塞窗口没有骤然下降,可以保证tcp传输数据的吞吐量,并且通过接收端计数器计算数据包个数的方法来控制第二发送时延,可以提升方案的可行性和灵活性。

为便于理解,下面以一个具体应用场景对本发明中一种数据传输的方法进行详细描述,请参阅图4,图4为本发明实施例中提供的一种数据传输应用场景,具体为:

1:发送端的tcp层与接收端的tcp层之间建立tcp连接,假设发送端初始序列号是99,接收端的初始序列号是21234。

2:发送端和接收端之间进行数据交互,发送端发送数据包,接收端确认接收到的数据包。数据包从发送端发出,被接收端接收,如果此过程中没有发生丢包,则发送端发送数据包最后一个字节对应的序列号是19099。

3:发送端通过采用第一协议的tcp层向接收端的tcp层发送序列号为19100且长度1000的数据包,该段数据包第一个字节的偏移位置为19000(即 19099-99=19000),发送端发送数据包最后一个字节对应的序列号是20099。

4:发送端采用第一协议通过tcp层发送序列号为20100,长度1000的数据包,该数据包第一个字节的偏移位置为20000,假设该数据包在传输过程中发送丢失。

5:发送端采用第一协议通过tcp层发送序列号为21100,长度1000的数据包,该数据包第一个字节的偏移位置为21000,该数据包被接收端接收。

a:接收端检测到接收的数据包序列号不再连续,则接收端的tcp层可以判断此时发生了丢包,根据上一个包的最后一个字节的序列号和当前接收到的数据包第一个字节对应的序列号可以得到丢失数据包的序列号和长度。若上一个包的最后一个字节的序列号为20099,则丢失数据包第一个字节对应的序列号为20099+1=20100,丢失数据包的长度为21100-20099-1=1000,丢失数据包的第一个字节的偏移位置20099-99=20000,接收端tcp层将这些信息上报至tcp准应用层。

b:接收端的tcp层增加第二发送时延,且由接收端的tcp准应用层向发送端的tcp准应用层发起重传请求,该请求中携带的信息为,丢失数据包的第一个字节的偏移位置为20000,长度1000;

6-8:接收端的tcp层和发送端的tcp层之间继续数据包的发送、接收和确认。

下面对本发明中的接收端进行详细描述,请参阅图5,本发明实施例中的接收端300包括:

接收模块301,用于使用第一协议接收发送端发送的k个数据包,其中,每个数据包中包含序列号;所述k个数据包为发送端发送的l个数据包中的部分数据包;

确定模块302,用于当使用所述第一协议根据所述接收模块301接收到的所述k个数据包中的序列号检测到目标数据包丢失时,根据所述目标数据包确定第二发送时延,所述第二发送时延大于第一发送时延,所述第一发送时延为预先设定的;

发送模块303,用于使用所述第一协议按照所述确定模块302确定的所述第二发送时延向所述发送端发送确认消息ack,所述确认消息ack用于通 知所述发送端接收端收到了所述l个数据包;

所述发送模块303,还用于当所述确定模块302使用所述第一协议根据k个数据包中的序列号检测到目标数据包丢失时,使用第二协议向所述发送端发送所述目标数据包的重传请求;

所述接收模块301,还用于所述发送模块303使用第二协议向所述发送端发送所述目标数据包的重传请求之后,使用所述第二协议接收所述发送端重传的所述目标数据包。

本实施例中,接收模块301使用第一协议接收发送端发送的k个数据包,其中,每个接收的数据包中包含序列号,所述k个数据包为发送端发送的l个数据包中的部分数据包;当使用第一协议根据接收模块301接收到的k个数据包中的序列号检测到目标数据包丢失时,确定模块302根据目标数据包确定第二发送时延,第二发送时延大于第一发送时延,第一发送时延为预先设定的,发送模块303使用第一协议按照确定模块302确定的第二发送时延向发送端发送确认消息ack,确认消息ack用于通知发送端接收端收到了l个数据包,当确定模块302使用第一协议根据k个数据包中的序列号检测到目标数据包丢失时,发送模块303使用第二协议向发送端发送目标数据包的重传请求,发送模块303使用第二协议向发送端发送目标数据包的重传请求之后,接收模块301使用第二协议接收发送端重传的目标数据包。

本发明提供了一种可应用于大数据场景下数据传输的方法,接收端使用第一协议接收发送端发送的k个数据包,其中,每个数据包中包含序列号,所述k个数据包为发送端发送的l个数据包中的部分数据包。当接收端使用第一协议根据k个数据包中的序列号检测到目标数据包丢失时,根据目标数据包确定第二发送时延,第二发送时延大于第一发送时延,第一发送时延为预先设定的,接收端使用第一协议按照第二发送时延向发送端发送确认消息ack,确认消息ack用于通知发送端接收端收到了l个数据包,接收端使用第二协议向发送端发送目标数据包的重传请求,并使用第二协议接收发送端重传的目标数据包。使用上述方法进行数据传输,可以有效避免发送端将tcp拥塞窗口减小的情况,这样也就无需为了保证吞吐量而采用多条tcp流来传输数据,本方案不仅能够保证吞吐量足够大且稳定,相比于采用多条 tcp传输数据还可以大大降低对内存的需求,节省系统资源。

可选地,在上述图5对应的实施例的基础上,参阅图6,本发明实施例提供的接收端另一实施例中,所述接收端300还包括判断模块304,

所述判断模块304,用于所述确定模块302根据所述目标数据包确定发送时延之前,判断所述k个数据包中第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号是否连续,其中,所述第一数据包在所述第二数据包之前被接收;

所述确定模块302,还用于若所述判断模块304判断所述第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号连续时,则确定没有数据包丢失;

若所述判断模块304判断所述第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号不连续时,则确定至少一个数据包丢失,其中,所述至少一个数据包为所述目标数据包。

其次,本发明实施例中,提供了一种判断数据包是否丢失的方法,可以通过判断k个数据包中第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号是否连续,来确定数据包是否丢失。通过上述方法来确定丢失的数据包,如果没有丢失数据包就不用增加第二发送时延,如果采用上述方式判断出有目标数据包丢失,则进而可以增加第二发送时延,因此,判断目标数据包是否丢失可以更准确的了解是否需要增加第二发送时延,提升方案的可行性和实用性。

可选地,在上述图5对应的实施例的基础上,本发明实施例提供的接收端另一实施例中,

所述发送模块303,还用于所述发送模块303使用第二协议向所述发送端发送所述目标数据包的重传请求之前,使用所述第一协议向所述第二协议发送所述目标数据包的信息。

其次,本发明实施例中,具体说明了第一协议与第二协议之间的关系,在接收端或发送端均使用第一协议与第二协议进行数据交换,第一协议主要解决了丢包时可以延迟确认消息ack的发送,而在发送端与接收端之间则使用第二协议来配合完成数据的有效传输,负责丢失数据包的重传,新增的第 二协议在实际应用过程中起到了提升数据包重传效率的作用,而第一协议与第二协议进行数据交换则是对本发明方案的具体实施提供了支持,进而提升了方案的可行性和实用性。

可选地,在上述图6对应的实施例的基础上,本发明实施例提供的接收端另一实施例中,

所述确定模块302,还用于所述确定模块302确定至少一个数据包丢失之后,根据所述第一协议的初始序列号,所述第一数据包的最后一个字节所对应的序列号以及所述第二数据包的第一个字节所对应的序列号,使用第二协议确定所述目标数据包的位置。

再次,本发明实施例中,接收端可以通过初始序列号,第一数据包的最后一个字节所对应的序列号以及第二数据包的第一个字节所对应的序列号,并使用第一协议向第二协议发送这些信息,使得接收端采用第二协议确定目标数据包在整个待发送的数据流中的位置。从而使得方案具有更强的可行性,并且增强方案的实用性和灵活性。

可选地,在上述图6对应的第二个实施例的基础上,参阅图7,本发明实施例提供的接收端的另一实施例中,所述确定模块302包括:

计算单元3021,用于按照公式m=a+1计算所述目标数据包对应的第一个字节:

其中,所述m为所述目标数据包对应的第一个字节,所述a为所述第一数据包的最后一个字节所对应的序列号;

按照公式n=b-a-1计算所述目标数据包的长度:

其中,所述n为所述目标数据包的长度,所述b为所述第二数据包的第一个字节所对应的序列号,所述a为所述第一数据包的最后一个字节所对应的序列号;

按照q=a-y计算所述目标数据包的位置:

其中,所述q为所述目标数据包的位置,所述a为所述第一数据包的最后一个字节所对应的序列号,所述y为所述初始序列号。

进一步地,本发明实施例中,说明了如何使用第二协议确定目标数据包的位置,接收端可以根据相关公式计算目标数据包对应的第一个字节,目标 数据包的长度以及目标数据包的偏移位置,从而确定目标数据包的位置,为方案的实现提供具体的依据,增加方案的可行性。

可选地,在上述图5、图6或者图7对应实施例的基础上,参阅图8,本发明实施例提供的接收端的另一实施例中,所述接收端300还包括启动模块305和计数模块306;

所述启动模块305,用于所述确定模块302根据所述目标数据包确定第二发送时延之后,启动计数器;

所述计数模块306,用于所述启动模块305启动计数器后,每收到一个数据包时,判断是否发生数据包丢失,若丢失,则重置所述计数器,并增加所述第二发送时延,若未丢失,则增加所述计数器的数值,判断所述计数器的数值是否达到预置门限,若达到,则降低所述第二发送时延,重置所述计数器。

图9是本发明实施例接收端40的结构示意图。接收端40可包括存储器410、收发器420、处理器430以及总线系统440。

存储器410可以包括只读存储器和随机存取存储器,并向处理器430提供指令和数据。存储器410的一部分还可以包括非易失性随机存取存储器(英文全称:non-volatilerandomaccessmemory,英文缩写:nvram)。

存储器410用于存储程序指令。

所述处理器430用于执行所述存储器410中的程序指令,以实现如下步骤。

控制所述收发器使用第一协议接收k个数据包,其中,每个数据包中包含序列号;所述k个数据包为发送端发送的l个数据包中的部分数据包;

当使用所述第一协议根据所述k个数据包中的序列号检测到目标数据包丢失时,根据所述目标数据包确定第二发送时延,所述第二发送时延大于第一发送时延,所述第一发送时延为预先设定的;

控制所述收发器使用所述第一协议按照所述第二发送时延向所述发送端发送确认消息ack,所述确认消息ack用于通知所述发送端所述接收端收到了所述l个数据包;

控制所述收发器使用第二协议向所述发送端发送所述目标数据包的重传请求;

控制所述收发器使用所述第二协议接收所述发送端重传的所述目标数据包。

本发明实施例中处理器430还用于执行所述存储器410中的程序指令以使用所述第一协议向所述第二协议发送所述目标数据包的信息。

处理器430控制接收端40的操作,处理器430还可以称为中央处理单元(英文全称:centralprocessingunit,英文缩写:cpu)。具体的应用中,接收端440的各个组件通过总线系统440耦合在一起,其中总线系统440除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统440。

上述本发明实施例揭示的方法可以应用于处理器430中,或者由处理器430实现。处理器430可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器430中的硬件的集成逻辑电路或者软件形式的指令完成。可选地,处理器430还用于:

判断所述k个数据包中第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号是否连续,其中,所述第一数据包在所述第二数据包之前被接收;

若所述第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号连续时,则确定没有数据包丢失;

若所述第一数据包的最后一个字节所对应的序列号与第二数据包的第一个字节所对应的序列号不连续时,则确定至少一个数据包丢失,其中,所述至少一个数据包为所述目标数据包。

可选地,处理器430还用于:

根据所述第一协议的初始序列号,所述第一数据包的最后一个字节所对应的序列号以及所述第二数据包的第一个字节所对应的序列号,使用第二协议确定所述目标数据包的位置。

可选地,处理器430具体用于:

按照公式m=a+1计算所述目标数据包第一个字节对应的序列号:

其中,所述m为所述目标数据包对应的第一个字节,所述a为所述第一数据包的最后一个字节所对应的序列号;

按照公式n=b-a-1计算所述目标数据包的长度:

其中,所述n为所述目标数据包的长度,所述b为所述第二数据包的第一个字节所对应的序列号,所述a为所述第一数据包的最后一个字节所对应的序列号;

按照q=a-y计算所述目标数据包的偏移位置:

其中,所述q为所述目标数据包的偏移位置,所述a为所述第一数据包的最后一个字节所对应的序列号,所述y为所述初始序列号。

可选地,处理器430还用于:

启动计数器;

每收到一个数据包时,判断是否发生数据包丢失,若丢失,则重置所述计数器,并增加所述第二发送时延,若未丢失,则增加所述计数器的数值,判断所述计数器的数值是否达到预置门限,若达到,则降低所述第二发送时延,重置所述计数器。

图9的相关描述可以参阅图1方法部分的相关描述和效果进行理解,本处不做过多赘述。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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