一种基于UDP的可靠一对多数据传输方法技术

技术编号:37489184 阅读:8 留言:0更新日期:2023-05-07 09:27
本发明专利技术公开了一种基于UDP的可靠一对多数据传输方法,包括发送端将待发送数据分块分包后并建立状态位图sbmp;接收端创建对应的状态位图rbmp;发送端依次发送数据块,每个块的数据传输具体包括:sbmp清零同时rbmp清零;如果sbmp位为0则发送当前位对应的数据包至发送端,接收端收到数据包后将对应的rbmp标记1;将sbmp所有位设置为1,则将sbmp与rbmp的对应位进行与运算,并将运算结果存入sbmp的对应位;发送端查看当前sbmp是否全部为1,如果全部为1则当前数据块发送完成,否则重复上述过程,直到sbmp的都为1;根据数据块的数目判断数据是否完成传输。本发明专利技术能够提升数据传输速度。本发明专利技术能够提升数据传输速度。本发明专利技术能够提升数据传输速度。

【技术实现步骤摘要】
一种基于UDP的可靠一对多数据传输方法


[0001]本专利技术涉及数据传输
,具体涉及一种基于UDP的可靠一对多数据传输方法。

技术介绍

[0002]随着信息技术的快速发展,在数据传输方面的需求也越来越多,但是不同应用不同网络环境对数据传输方法的要求也不相同,但是可靠、高效永远是数据传输追求的目标。TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。 一个TCP连接必须要经过三次握手才能建立起来,每次传输数据后必须等待对方回复ACK数据包确认收到,才能进行下一个数据包传输,在高延迟网络中,会浪费很多时间等待ACK。UDP(User Data Protocol,用户数据报协议)是一个非连接的协议,传输数据之前双端不建立连接,只是尽量把数据包发送给对方,且不需要等待对方确认,因此效率仅受限于当前网络环境能传输的最大速度,但是由于其不需要确认数据是否收到,会导致传输过程中出现数据丢失的情况。在不稳定的网络环境中(如wifi)使用TCP传输会导致效率很低,是其保障数据可靠的机制导致的,无法改变。因此,这种情况下通常使用UDP进行传输。
[0003]现有技术公开号为CN114124940A公开了一种UDP协议的数据定制传输方法,包括将Pattern数据文件进行编址、分块和压缩操作;该方案在提高测试效率的前提下,通过增加ACK机制,确保下发的Pattern数据的可靠性和完整性。但是该方案因为其状态位图无法同时存储多个接收端的状态,因此无法一对多数据传输使用,每个数据包接收端都要反馈ACK报文状态,由于网络带宽是固定的,会导致传输速度降低,浪费网络资源,且由于UDP的不稳定性会导致反馈的ACK报文丢失,本来已经接收成功的数据包,因其ACK报文丢失导致数据包重传,从而出现重复补包浪费网络资源。
[0004]因此,如何解决大文件数据通过TCP传输时效率较低问题,同时如何确保下发的文件数据的可靠性和完整性方面的问题成为急需解决的问题。

技术实现思路

[0005]1.所要解决的技术问题:针对上述的技术问题,本申请提出一种基于UDP的可靠一对多数据传输方法,本方法通过舍弃实时反馈丢包信息,避免浪费等待反馈的时间,从而提升数据传输速度,且由于不再等待,可以直接最大化利用网络资源进行收发数据,来实现传输的高效性;最后通过状态位图反馈接收情况,进行数据补发,来实现数据的可靠性。
[0006]2.技术方案:一种基于UDP的可靠一对多数据传输方法,包括以下步骤:步骤一:发送端将待发送数据按照预设单位数据块大小b分成M块;每一个数据块按照预设单位数据包大小s分成N个数据包,其中s小于等于网络最大传输单元MTU;根据数
据包的个数N创建对应数目位的状态位图sbmp;其中M、N均为大于等于1的整数。
[0007]步骤二:发送端将待发送数据HEAD信息,通过UDP广播或组播的形式发送给所有接收端;所述待发送数据HEAD信息包括待发送数据大小、数据块大小b、数据块数目M、每个数据包大小s、每个数据块中包含数据包的数目N;接收端接收到待发送数据HEAD信息后根据数据包数目N创建对应数目位状态位图rbmp,使状态位图rbmp的每一位对应一个数据包,然后回复发送端确认收到HEAD信息;发送端如果在预设的时间发现有的接收端没有回复,则重新发送HEAD信息至没有回复的接收端,直到所有接收端都回复收到为止。
[0008]步骤三:发送端依次发送所有数据块,每个数据块的数据传输具体包括以下步骤:S31:发送端将状态位图sbmp中所有位清零。
[0009]S32:发送端采用UDP广播或组播的形式通知所有接收端准备传输当前块,接收端收到通知后,清零状态位图rbmp。
[0010]S33:发送端依次查看sbmp位是否为0,如果为0则发送当前位对应的数据包。
[0011]S34:接收端收到数据包后,将数据包存储到状态位图rbmp的对应位置,并将其在rbmp中对应位置标记为1。
[0012]S35:发送端发送完当前块的所有数据包后,采用UDP广播或组播的形式通知所有接收端结束传输当前块;接收端收到通知后,将标记后的状态位图rbmp发送给发送端,如果发送端收到标记后的状态位图rbmp则回复接收端,否则接收端重新发送标记后的状态位图rbmp,直到发送端接收到为止。
[0013]S36:发送端将状态位图sbmp所有位设置为1,每收到一个接收端的rbmp,则将sbmp与rbmp的对应位进行与运算,并将运算结果存入sbmp的对应位。
[0014]S37:发送端查看当前sbmp是否全部为1,如果全部为1则当前数据块发送完成,否则重复执行步骤S33

S36,直到sbmp的所有位都为1。
[0015]步骤四:当收到的数据块个数和步骤二发送的HEAD中M相等时,接收端则判断数据完成传输。
[0016]进一步地,所述发送端将待发送数据按照预设单位数据块大小b分成M块为除去最后一个数据块大小小于b,其余数据块大小均等于b。
[0017]进一步地,所述每一个数据块按照预设单位数据包大小s分成N个数据包为除了最后一个数据包大小小于s,其余的数据包大小均等于s。
[0018]3.有益效果:(1)本专利技术中,将待传输的数据先分块后再分成数据包后进行传输,在传输大量数据时可以防止位图超出计算机内存大小,从而防止在算法上可行,但实际实施上不可行的问题,同时分块传输可以实现阶段性反馈发送进度。
[0019](2)本专利技术中,先将发送端处理后的数据生成相应的HEAD信息,通过将HEAD信息传输至接收端,接收端能够根据HEAD信息判断其接收的数据是否完整,同时可以在HEAD信息中附加其他信息,如传输文件时可以添加文件名。
[0020](3)本专利技术中,发送端的状态位图sbmp与接收端的状态位图rbmp一一对应,通过状态位图反馈接收情况,进行数据补发,从而实现数据的可靠性。
[0021](4)本专利技术中,接收端使用集中反馈状态位图来代替ACK状态报文,从而极大的减少了反馈数据包数量,避免了带宽占用。
[0022](5)本专利技术中采用的接收端在数据接收的最后发送状态位图至发送端,发送端通过相应的运算能够实现判断是否完成数据传输,使发送端不用再实时等待ACK报文,从而能够提升数据传输速度。
[0023](6)在传输数据过程中,发送端采用与运算计算状态位图,计算出需要补发的所有客户端数据包的并集,然后一遍发出,同时发送端采用UDP广播或组播的形式传输数据和数据补包,避免了重复补包。
[0024]综上所述,本方案通过对需要传输的数据进行分块分包,减少了状态位图对内存的占用,同时通过发送端与接收端的状态位图的运算,实现了舍弃实时反馈丢包信息,避免浪费等待反馈的时间,从而提升数据传输速度,且由于不再等待,可以直接最大化利用网络资源进行收发数据,来实现传输的高效性;最后通过状本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于UDP的可靠一对多数据传输方法,包括以下步骤:步骤一:发送端将待发送数据按照预设单位数据块大小b分成M块;每一个数据块按照预设单位数据包大小s分成N个数据包,其中s小于等于网络最大传输单元MTU;根据数据包的个数N创建对应数目位的状态位图sbmp;其中M、N均为大于等于1的整数;步骤二:发送端将待发送数据HEAD信息,通过UDP广播或组播的形式发送给所有接收端;所述待发送数据HEAD信息包括待发送数据大小、数据块大小b、数据块数目M、每个数据包大小s、每个数据块中包含数据包的数目N;接收端接收到待发送数据HEAD信息后根据数据包数目N创建对应数目位状态位图rbmp,使状态位图rbmp的每一位对应一个数据包,然后回复发送端确认收到HEAD信息;发送端如果在预设的时间发现有的接收端没有回复,则重新发送HEAD信息至没有回复的接收端,直到所有接收端都回复收到为止;步骤三:发送端依次发送所有数据块,每个数据块的数据传输具体包括以下步骤:S31:发送端将状态位图sbmp中所有位清零;S32:发送端采用UDP广播或组播的形式通知所有接收端准备传输当前块,接收端收到通知后,清零状态位图rbmp;S33:发送端依次查看sbmp位是否为0,如果为0则发送当前位对应的数据包;S34:接收端收到数据包后,将数据包存储到状态...

【专利技术属性】
技术研发人员:吴阳
申请(专利权)人:南京鼎岩信创科技有限公司
类型:发明
国别省市:

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1