基于UDP协议的数据流快速传输方法、系统及介质与流程

文档序号:20608521发布日期:2020-05-01 22:19阅读:406来源:国知局
基于UDP协议的数据流快速传输方法、系统及介质与流程

本发明涉及网络数据传输技术,具体涉及一种基于udp协议的数据流快速传输方法、系统及介质,用于端到端的数据流快速传输网络环境中,适用于各类设备之间的数据传输。



背景技术:

随着因特网的快速发展,人们对网络通信的需求越来越多,尤其是互联网领域,大数据的爆炸式增长,对网络带宽的要求也越来越高。需要更快的传输和改善的拥塞控制机制。从网络的设计之初到如今,tcp/ip协议族一直扮演的重要角色。传输控制协议(tcp)是tcp/ip协议族的一部分,其中随着因特网的成功,tcp/ip协议族已经取得了作为世界上最重要的数据通信协议之一的位置。tcp在使用tcp/ip协议的设备之间提供可靠数据连接。tcp在ip之上进行工作,其中ip用来将数据打包成称为数据报的数据分组,并且用于进行通过网络的传输。tcp协议是一种可靠的传输层协议,通信之前需要进行三次握手,传输过程中,发送端会根据接收端的反馈,动态调整传输窗口的大小,传输过程消耗的资源比较多。不同于tcp,用户数据报协议(udp)是无连接的并且不可靠的传输层协议。协议在本质上是非常简单的。来自应用层的数据向下传递到传输层并且封装在数据报中。数据报被发送给主机但是没有任何机制保证其安全地到达目地的设备。如果期望可靠性的话,任何检查都被推回到应用层。但是,它的简单性减少了使用该协议的开销,并且这些服务在很多情况下是足够的。



技术实现要素:

本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于udp协议的数据流快速传输方法、系统及介质,本发明能在udp协议的基础上,以最少的资源消耗,在保证数据的有效传输的同时又能动态调整进行拥塞控制,使数据能高效快速的在各种网络环境下进行传输,具有资源消耗低、数据传输速度快的优点。

为了解决上述技术问题,本发明采用的技术方案为:

一种基于udp协议的数据流快速传输方法,接收端接收目标文件时的步骤包括:

接收端每接收目标文件的一个基于udp协议的非重复数据包,记录其数据包索引并将其放入缓存,同时更新目标文件的索引位置a和c,统计ttl时间内收取的数据包数量x,其中索引位置0~a为目标文件已收到的数据包,索引位置c为已收到数据包的最大索引,且接收端在接收目标文件的数据包的过程中:

以第一周期定时扫描索引位置b、索引位置c-x之间的索引,将该区间内未接收的包索引生成重传请求发送给发送端,将索引位置c-x更新为新的索引位置b,其中索引位置b的初始值为索引位置0。

可选地,所述接收端在接收目标文件的数据包的过程中还包括:以第二周期定时扫描索引位置a、索引位置b-x之间的索引,将该区间内未接收的包索引生成重传请求发送给发送端。

可选地,所述接收端在接收目标文件的数据包的过程中还包括在接收最后一个数据包是进行校验的步骤,扫描索引位置a、最大索引位置n-1之间的索引,将该区间内未接收的包索引生成重传请求发送给发送端。

可选地,所述将该区间内未接收的包索引生成重传请求发送给发送端的步骤包括:扫描确定该区间内的未接收包索引数量,计算未接收包索引数量占该区间包索引总数量的比例c,如果比例c超过预设阈值,则直接将该区间的起始索引位置、结束索引位置生成重传请求发送给发送端;否则,将该区间未接收包索引生成重传请求发送给发送端。

可选地,所述接收端还包括在接收目标文件完毕后,对接收的目标文件进行分块校验,然后针对校验失败的分块生成重传请求发送给发送端。

可选地,所述接收端在接收目标文件的数据包的过程中还包括:以第三周期定时统计本周期内的丢包数量并计算本周期内的接收速度,然后将本周期内的丢包数量以及接收速度发送给发送端以便发送端控制数据包发送速度。

可选地,所述将本周期内的丢包数量以及接收速度发送给发送端之后,还包括发送端控制数据包发送速度的步骤,详细步骤包括:

s1)将本次的接收速度直接或者进行调整后加入所有速度集合all_speed中;

s2)判断丢包数量是否为0,如果丢包数量为0,则将本次的接收速度直接或者进行调整后放入未丢包接收速度集合noloss_recv_speed中,取所有速度集合all_speed的平均值、未丢包接收速度集合noloss_recv_speed中的最大值作为新发送速度;如果丢包数量非0,取上一次的发送速度、本次的接收速度两者中的较大值作为新发送速度;

s3)采用最大限制发送速度allow_max_speed对新发送速度进行限速;

s4)采用限速后的新发送速度作为最终的发送速度控制数据包发送速度。

可选地,步骤s1)将本次的接收速度进行调整后加入所有速度集合all_speed中的详细步骤包括:

s1.1)判断本次的接收速度小于预设速度门槛值是否成立,如果成立则跳转执行步骤s1.2);否则跳转执行步骤s1.3);

s1.2)判断本周期内的丢包数量是否为0,如果为0则将本次的接收速度在原值的基础上增加速度常量并加入所有速度集合all_speed中;否则将本次的接收速度在原值的基础上提升第一预设比例并加入所有速度集合all_speed中;跳转执行步骤s2);

s1.3)判断本周期内的丢包数量是否为0,如果为0则将本次的接收速度在原值的基础上提升第二预设比例并加入所有速度集合all_speed中;否则将本次的接收速度在原值的基础上提升第三预设比例并加入所有速度集合all_speed中;跳转执行步骤s2)。

可选地,步骤s2)将本次的接收速度进行调整后放入未丢包接收速度集合noloss_recv_speed中的详细步骤包括:将本次的接收速度和预设的速度区间进行匹配确定对应的预设的速度区间,从而得到该预设的速度区间所对应的第四预设比例,最终将本次的接收速度在其原值的基础上增加第四预设比例后放入未丢包接收速度集合noloss_recv_speed中。

可选地,步骤s3)采用最大限制发送速度allow_max_speed对新发送速度进行限速的详细步骤包括:

s3.1)判断本周期内的丢包数量小于预设下限是否成立,若成立则设置最大限制发送速度allow_max_speed为0,不修正新发送速度,直接跳转执行步骤s4);否则跳转执行下一步;

s3.2)判断本周期内的丢包数量大于预设阈值是否成立,若成立则取未丢包接收速度集合noloss_recv_speed中的最大值作为最大限制发送速度allow_max_speed;否则,取上一次的发送速度作为最大限制发送速度allow_max_speed;

s3.3)将计算得到的新发送速度和最大限制发送速度allow_max_speed进行比较,若计算得到的新发送速度大于最大限制发送速度allow_max_speed,则取新发送速度的值为最大限制发送速度allow_max_speed;否则保持计算得到的新发送速度不变;跳转执行步骤s4)。

可选地,发送端向接收端发送目标文件时的执行步骤包括:

1)发送端与接收端建立tcp和udp通信,校验程序版本号并建立传输会话;

2)发送端通过udp通信与服务端测试mtu大小、rtt时间以及传输带宽,发送端根据mtu大小设置每个数据包的固定大小,将传输带宽作为初始发送速度,计算传输数据包的时间间隔ipd,将传输带宽和rtt时间发送给接收端以便接收端计算ttl时间内收取的数据包数量x;

3)发送端将目标文件的文件信息发送给接收端;

4)发送端向接收端发送请求通知接收端准备接收目标文件数据;

5)发送端以初始发送速度向接收端发送数据包,同时等待接收端发送的丢包数量以及接收速度,并根据收到的丢包数量以及接收速度控制数据包发送速度;若收到接收端的重传请求则将重传请求对应的数据包按照发送速度发送给接收端;如果收到接收端发送的完成接收请求,则跳转执行下一步;

6)停止发送,结束并退出。

此外,本实施例还包括一种基于udp协议的数据流快速传输系统,包括计算机设备,该计算机设备被编程或配置以执行所述基于udp协议的数据流快速传输方法的步骤,或者该计算机设备的存储器上存储有被编程或配置以执行所述基于udp协议的数据流快速传输方法的计算机程序。

此外,本实施例还包括一种计算机可读存储介质,该计算机可读存储介质上存储有所述基于udp协议的数据流快速传输方法的计算机程序。

和现有技术相比,本发明具有下述优点:

1、本发明以第一周期定时扫描索引位置b、索引位置c-x之间的索引,将该区间内未接收的包索引生成重传请求发送给发送端,将索引位置c-x更新为新的索引位置b,能够基于udp协议的数据流快速传输方法以udp协议在网络上进行数据的快速传输,以最接近带宽速度发送数据,且资源消耗少。

2、本发明以第一周期定时扫描索引位置b、索引位置c-x之间的索引,将该区间内未接收的包索引生成重传请求发送给发送端,将索引位置c-x更新为新的索引位置b,能保证数据正常到达接收端的同时,还能等待线路上正在传的数据延时到达,防止把正在传输线路上的数据当成丢包,而造成大量数据的重复传输,确保高效率地进行数据传输。

附图说明

图1为本发明实施例方法的基本流程示意图。

图2为本发明实施例中索引位置的原理示意图。

图3为本发明实施例中重传逻辑的示意图。

图4为本发明实施例中的速度控制流程示意图。

图5为本发明实施例中发送端向接收端发送目标文件时的执行流程示意图。

具体实施方式

如图1和图3所示,本实施例基于udp协议的数据流快速传输方法中接收端接收目标文件时的步骤包括:

接收端每接收目标文件的一个基于udp协议的非重复数据包,记录其数据包索引并将其放入缓存,同时更新目标文件的索引位置a和c,统计ttl时间内收取的数据包数量x,其中索引位置0~a为目标文件已收到的数据包,索引位置c为已收到数据包的最大索引,且接收端在接收目标文件的数据包的过程中:

以第一周期定时扫描索引位置b、索引位置c-x之间的索引,将该区间内未接收的包索引生成重传请求发送给发送端,将索引位置c-x更新为新的索引位置b,其中索引位置b的初始值为索引位置0。本实施例中,第一周期为300ms。

参见前文可知,本实施例中通过在发送端与接收端建立udp通信,实现双向的数据发送与接收。传输开始,通过口令及密钥,建立发送端与接收端之间的会话,在传输过程中,接收端通过不断的向发送端发送接收速度及丢包数量,以通知发送端实时控制发送速度;接收过程中,每接收完指定大小的块,便向发送端验证该数据块的完整性,若数据块校验错误,则向发送端请求重新发送该数据块;直到所有数据都被完整接收。

本实施例中,当发送端发送数据时,发送端与接收端建立连接后,测试mtu(最大传输单元),带宽及rtt时间(往返时延时间),根据mtu设置每次发送udp包的大小,并计算出rtt时间内可发送包的数量,给每个包标记一个索引,方便接收端组装数据。如图2所示,在接收端,记录四个包索引位置:a点表示此索引及之前的所有包都已接收到,c点表示当前接收到的包的最大索引,b点表示每次重传后的位置(b会向前移动),假设rtt时间内传输的包数量为x,则c-x点到c点之间的未接收到的包不记入丢包,视为正在链路上传输。每隔一断时间,接收端统计索引位置b、索引位置c-x之间的索引,将该区间内未接收的包索引生成重传请求发送给发送端,从而可实现对对可能丢包数据包进行重传,且确保重传数据包数量合理以保证传输速度。

本实施例中,每接收到一个非重复数据包,接收端记录数据包索引是将数据包索引记录到一个bitmap的数据结构中,标记为1,然后将其放入缓存,缓存具体为写文件队列,由异步线程写入文件中。同时,在bitmap中从图2中索引位置a开始扫描,如果后一个索引位置的包已接收,则使索引位置a前移直到遇到一个未接收的包的位置,完成索引位置a的更新。每隔300ms,扫描bitmap中图2中索引位置b到索引位置c-x之间的索引,通过滤波算法得到未接收到的包索引信息,同时索引位置b前移,然后将丢包信息发送给发送端,对需要重新发送的包进行重传。

如图1和图3所示,本实施例中接收端在接收目标文件的数据包的过程中还包括:以第二周期定时扫描索引位置a、索引位置b-x之间的索引,将该区间内未接收的包索引生成重传请求发送给发送端,通过将索引位置a、索引位置b-x之间未接收到的包的数量发送给接收端,可防止第一周期重传请求的数据再次丢失,这种双重传机制可保证数据快速并有效的传输。本实施例中,第二周期为1s,每隔1秒扫描bitmap中图2中的索引位置a、索引位置b-x区间的索引,将记录为未接收的包索引发送给发送端进行重传。

如图1和图3所示,为了进一步防止数据丢失,本实施例中接收端在接收目标文件的数据包的过程中还包括在接收最后一个数据包是进行校验的步骤,扫描索引位置a、最大索引位置n-1之间的索引,将该区间内未接收的包索引生成重传请求发送给发送端,可在上述双重传机制的基础上再增加一次防数据丢失机制,从而能够进一步保证数据快速并有效的传输。

如图1和图3所示,本实施例中将该区间内未接收的包索引生成重传请求发送给发送端的步骤包括:扫描确定该区间内的未接收包索引数量,计算未接收包索引数量占该区间包索引总数量的比例c,如果比例c超过预设阈值,则直接将该区间的起始索引位置、结束索引位置生成重传请求发送给发送端;否则,将该区间未接收包索引生成重传请求发送给发送端。本实施例中输入bitmap中一段要计算丢包的索引区间,如图1中的b点到c点之间,以100个连续索引为一个段,假如输入的区间有n个段,则有:针对n个段中的每一个分段i:统计bitmap中i*100到i*100+100区间标记为0的个数,记为c;若c/100>60%成立,则将bitmap中i*100到i*100+100区间都标记为0,并将i*100和i*100+100这两个起始点和终点返回给调用方,让其通知发送端将这个区间的所有包都重新发送.这样可以减少发送的数据量,只发送起始点和终点索引就行,提高效率;否则,将i*100到i*100+100区间为0的索引返回给调用方,让其将这些包索引发送给发送端,让其只对这些包进行重传。通过上述将该区间内未接收的包索引生成重传请求的方式,对于离散的丢包数据,只重传丢失的包;对于密集的丢包数据,对指定区间的所有包进行重传,防止发送重传包数据影响传输效率。

为了进一步防止数据丢失,接收端还包括在接收目标文件完毕后,对接收的目标文件进行分块校验,然后针对校验失败的分块生成重传请求发送给发送端,可进一步防止数据丢失,分块的验证可以根据需要md5或验证算法来进行校验。

如图1和图3所示,为了实现对收发速度的控制和收发效率的优化,本实施例中接收端在接收目标文件的数据包的过程中还包括:以第三周期定时统计本周期内的丢包数量并计算本周期内的接收速度,然后将本周期内的丢包数量以及接收速度发送给发送端以便发送端控制数据包发送速度。本实施例中,第三周期具体为700ms,接收端每700ms统计这段时间的丢包数量,并计算这段时间的接收速度,然后发送给发送端。

如图4所示,本实施例中将本周期内的丢包数量以及接收速度发送给发送端之后,还包括发送端控制数据包发送速度的步骤,详细步骤包括:

s1)将本次的接收速度直接或者进行调整后加入所有速度集合all_speed中;

s2)判断丢包数量是否为0,如果丢包数量为0,则将本次的接收速度直接或者进行调整后放入未丢包接收速度集合noloss_recv_speed中,取所有速度集合all_speed的平均值、未丢包接收速度集合noloss_recv_speed中的最大值作为新发送速度;如果丢包数量非0,取上一次的发送速度、本次的接收速度两者中的较大值作为新发送速度;

s3)采用最大限制发送速度allow_max_speed对新发送速度进行限速;

s4)采用限速后的新发送速度作为最终的发送速度控制数据包发送速度。

作为一种可选的实施方式,步骤s1)具体为将本次的接收速度调整后加入所有速度集合all_speed中。本实施例中,步骤s1)将本次的接收速度进行调整后加入所有速度集合all_speed中的详细步骤包括:

s1.1)判断本次的接收速度小于预设速度门槛值(本实施例中为10mbps)是否成立,如果成立则跳转执行步骤s1.2);否则跳转执行步骤s1.3);

s1.2)判断本周期内的丢包数量是否为0,如果为0则将本次的接收速度在原值的基础上增加速度常量(本实施例中为500kbps)并加入所有速度集合all_speed中;否则将本次的接收速度在原值的基础上提升第一预设比例(本实施例中为5%)并加入所有速度集合all_speed中;跳转执行步骤s2);

s1.3)判断本周期内的丢包数量是否为0,如果为0则将本次的接收速度在原值的基础上提升第二预设比例(本实施例中为10%)并加入所有速度集合all_speed中;否则将本次的接收速度在原值的基础上提升第三预设比例(本实施例中为5%)并加入所有速度集合all_speed中;跳转执行步骤s2)。

作为一种可选的实施方式,本实施例中,步骤s2)将本次的接收速度进行调整后放入未丢包接收速度集合noloss_recv_speed中的详细步骤包括:将本次的接收速度和预设的速度区间进行匹配确定对应的预设的速度区间,从而得到该预设的速度区间所对应的第四预设比例,最终将本次的接收速度在其原值的基础上增加第四预设比例后放入未丢包接收速度集合noloss_recv_speed中。本实施例中预设的速度区间包括三个区段:小于1mbps,1mbps-10mbps,大于10mbps,分别增加对应的预设比例具体是指在本次的接收速度的基础上提升100kbps,5%和10%。

作为一种可选的实施方式,步骤s3)采用最大限制发送速度allow_max_speed对新发送速度进行限速的详细步骤包括:

s3.1)判断本周期内的丢包数量小于预设下限(本实施例中为100)是否成立,若成立则设置最大限制发送速度allow_max_speed为0,不修正新发送速度,直接跳转执行步骤s4);否则跳转执行下一步;

s3.2)判断本周期内的丢包数量大于预设阈值(本实施例中为300)是否成立,若成立则取未丢包接收速度集合noloss_recv_speed中的最大值作为最大限制发送速度allow_max_speed;否则,取上一次的发送速度作为最大限制发送速度allow_max_speed;

s3.3)将计算得到的新发送速度和最大限制发送速度allow_max_speed进行比较,若计算得到的新发送速度大于最大限制发送速度allow_max_speed,则取新发送速度的值为最大限制发送速度allow_max_speed;否则保持计算得到的新发送速度不变;跳转执行步骤s4)。

参见前述步骤可知,本实施例中通过步骤s1)将本次的接收速度调整后加入所有速度集合all_speed中,步骤s2)将本次的接收速度进行调整后放入未丢包接收速度集合noloss_recv_speed中,结合步骤s3)采用最大限制发送速度allow_max_speed对新发送速度进行限速,能够实现发送速度的最大优化,确保数据传输的效率。

如图5所示,本实施例中发送端向接收端发送目标文件时的执行步骤包括:

1)发送端与接收端建立tcp和udp通信,校验程序版本号并建立传输会话(session);

2)发送端通过udp通信与服务端测试mtu大小、rtt时间以及传输带宽,发送端根据mtu大小设置每个数据包的固定大小(512或1024字节),将传输带宽作为初始发送速度,计算传输数据包的时间间隔ipd(inter-packetdelay),将传输带宽和rtt时间发送给接收端以便接收端计算ttl时间内收取的数据包数量x(方便传输过程中用作丢包反馈);

3)发送端将目标文件的文件信息发送给接收端;

4)发送端向接收端发送请求通知接收端准备接收目标文件数据;

5)发送端以初始发送速度向接收端发送数据包,同时等待接收端发送的丢包数量以及接收速度,并根据收到的丢包数量以及接收速度控制数据包发送速度;若收到接收端的重传请求则将重传请求对应的数据包按照发送速度发送给接收端;如果收到接收端发送的完成接收请求,则跳转执行下一步;

6)停止发送,结束并退出。

本实施例中步骤1)中发送端与接收端同时使用tcp和udp通信,都是一开始就建立连接,在程序退出时关闭。之所以用到tcp是因为为整个过程中还涉及到一些交互命令的发送,比如从发送端将文件信息发送到接收端等.这些命令的交互由tcp完成是为了让可靠性由tcp去保证,提高传输前和后的工作效率,将重点放到数据的传输上。tcp协议的另一用处是,某些网络设备会对udp流量进行检测,进而对udp包限流,导致udp不可用,这时候将发送数据从udp协议切换到tcp传输,保证数据能顺利传输完成.切换到tcp后,定期检测udp是否可用,可用则再次切换回udp协议传输.

综上所述,本实施例基于udp协议的数据流快速传输方法以udp协议在网络上进行数据的快速传输,以最接近带宽速度发送数据,且资源消耗少;当发送速度过快而引起数据丢失时,发送端能快速响应,及时调整发送速率,同时将丢失的数据进行重传,能减少数据的重复传输,为用户节省资源。本实施例基于udp协议的数据流快速传输方法的两段丢包重传机制,能保证数据正常到达接收端的同时,还能等待线路上正在传的数据延时到达。防止把正在传输线路上的数据当成丢包,而造成大量数据的重复传输。高效率的进行数据传输。

此外,本实施例还提供一种基于udp协议的数据流快速传输系统,包括计算机设备,该计算机设备被编程或配置以执行前述基于udp协议的数据流快速传输方法的步骤,或者该计算机设备的存储器上存储有被编程或配置以执行前述基于udp协议的数据流快速传输方法的计算机程序。

此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有前述基于udp协议的数据流快速传输方法的计算机程序。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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