CN118282585B - 一种基于udp的数据传输方法、设备及可读存储介质 - Google Patents
一种基于udp的数据传输方法、设备及可读存储介质 Download PDFInfo
- Publication number
- CN118282585B CN118282585B CN202410698199.3A CN202410698199A CN118282585B CN 118282585 B CN118282585 B CN 118282585B CN 202410698199 A CN202410698199 A CN 202410698199A CN 118282585 B CN118282585 B CN 118282585B
- Authority
- CN
- China
- Prior art keywords
- packet
- retransmission
- data
- buffer zone
- nack
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 92
- 238000000034 method Methods 0.000 title claims abstract description 40
- 239000000872 buffer Substances 0.000 claims abstract description 142
- 101000741965 Homo sapiens Inactive tyrosine-protein kinase PRAG1 Proteins 0.000 claims abstract description 79
- 102100038659 Inactive tyrosine-protein kinase PRAG1 Human genes 0.000 claims abstract description 79
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 14
- 238000012549 training Methods 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 10
- 230000015654 memory Effects 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 6
- 238000004904 shortening Methods 0.000 claims description 2
- 238000004891 communication Methods 0.000 abstract description 10
- 230000009286 beneficial effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 238000003062 neural network model Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Radio Relay Systems (AREA)
Abstract
本发明涉及通信技术领域,更具体地,本发明涉及一种基于UDP的数据传输方法、设备及可读存储介质,该方法包括向服务端发送数据包,并接收服务端返回的NACK包,所述NACK包中包含丢失数据包的序列号信息;根据所述序列号信息将丢失数据包备份至第一重传缓冲区;从所述第一重传缓冲区中提取丢失数据包并向服务端进行组包重传,同时将组包重传的丢失数据包备份至第二重传缓冲区;响应于第一重传缓冲区中无待组包重传的丢失数据包,根据乱序算法从第二重传缓冲区中随机选择对应的丢失数据包进行重传。根据本发明的方案,解决了目前卫星链路中数据传输稳定性差、效率低的问题。
Description
技术领域
本发明涉及通信技术领域。更具体地,本发明涉及一种基于UDP的数据传输方法、设备及可读存储介质。
背景技术
在断网、断路、断电等情况下,卫星传输成为了最为可靠和直接的通讯手段。在高延迟高丢包的卫星网络中,传输文件面临着诸多挑战。在卫星网络中使用传统的http/tcp/rUDP协议传输图片时,常常受制于卫星网络的高丢包率和高延迟,导致传输过程中出现延迟、卡顿、中断和超时等问题,从而影响了现场图片传输的实时性和可靠性。低码率,高丢包导致数据包随机丢失的概率非常高,普通传输手段无法有效传输文件,经常出现超时,连接中断等异常,需要采取一些特殊的技术手段来保证文件传输的可靠性和效率。
网络传输底层通信时,常用的传输方案有TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)两种。
使用TCP传输数据虽然可靠,但是传输双方沟通太过频繁,传输效率并不高。并且由于卫星网络的高延迟特性,TCP的拥塞控制和重传机制会导致额外的延迟,传统的TCP协议在这种环境下表现不佳。
因而,为了提高传输效率常常会使用UDP协议进行传输。然而,由于UDP本身不提供可靠性保证,使用UDP传输数据包并不可靠。为了保证数据传输的可靠性,同时为了避免传输中的丢包问题,现有的解决方案是通过数据重传的方式。
例如公开号为CN112929455A,发明名称为基于UDP的数据传输方法、装置、设备和可读存储介质的中国发明专利申请中,就公开了当丢包时向发送方发送重发请求,并根据丢包数量调整单次传输数量。但是该方案中,对于高延迟、高丢包和低速率特点的卫星网络通道上,数据传输过程仍然会存在一些问题:例如发送端发送完数据之后,仍未收到接收端的应答,导致传输带宽资源浪费,卫星链路无法实现满负载使用,导致传输效率降低。
因此,如何解决卫星链路中数据传输稳定性差、效率低的问题,是当前研究的重点。
发明内容
为解决上述卫星链路中数据传输稳定性差、效率低的问题,本发明在如下的多个方面中提供方案。
在第一方面中,本发明提供了一种基于UDP的数据传输方法,用于发送数据包的客户端,所述数据传输方法包括:向服务端发送数据包,并接收服务端返回的NACK包,所述NACK包中包含丢失数据包的序列号信息;根据所述序列号信息将丢失数据包备份至第一重传缓冲区;从所述第一重传缓冲区中提取丢失数据包并向服务端进行组包重传,同时将组包重传的丢失数据包备份至第二重传缓冲区;响应于第一重传缓冲区中无待组包重传的丢失数据包,根据乱序算法从第二重传缓冲区中随机选择对应的丢失数据包进行重传。
本发明的有益效果在于:通过第一重传缓冲区和第二重传缓冲区中数据重传的逻辑配合,使得通信链路中始终有数据在传输,在第一重传缓冲区中数据耗尽时,第二重传缓冲区接替第一重传缓冲区进行数据包的重传操作,充分利用了卫星网络中低速链路的传输能力,满负载传输数据,保证了数据及时有效地传输。
在一个实施例中,从所述第一重传缓冲区中提取丢失数据包并向服务端进行组包重传,包括:获取设定时间内实际收到的NACK包的数量;根据理论应到的NACK包的数量和实际收到的NACK包的数量计算得到NACK包的丢包率;根据所述丢包率调整组包重传的时间间隔,其中丢包率越高则对应的组包重传的时间间隔越小。
本发明的有益效果在于:通过NACK包的丢包率计算可以准确估计整个链路的丢包率,根据NACK包的丢包率动态调整重传的时间间隔,可以保证数据包达到的成功率,提升数据传输效率和可靠性。
在一个实施例中,其中NACK包的丢包率的计算公式为:,;式中,表示理论应到的NACK包的数量,表示统计时间,表示每个NACK包的发送间隔,表示丢包率,表示实际收到的NACK包的数量。
本发明的有益效果在于:根据统计时间内NACK包的传输情况,确定丢包率的计算公式,实现了对丢包率的准确量化计算,能够更加准确地评估链路中的丢包率情况。
在一个实施例中,根据所述丢包率调整组包重传的时间间隔,包括:响应于NACK包的丢包率大于50%,组包重传的时间间隔缩短为初始间隔的二分之一;响应于NACK包的丢包率小于30%,组包重传的时间间隔恢复至初始间隔。
本发明的有益效果在于:通过设置相应的阈值判定,实现对组包重传的时间的调整,有效提升了数据传输过程对链路状态的适应能力,提升数据传输过程的可靠性。
在一个实施例中,将组包重传的丢失数据包备份至第二重传缓冲区,包括:将第一缓冲区中最后N个组包重传的丢失数据包存入第二重传缓冲区,并将第二重传缓冲区中多余的丢失数据包删除。
本发明的有益效果在于:通过对第二重传缓冲区中的数据进行更新删除,可以使得服务端尽可能多的收到文件的前部分数据,提升服务端插入数据时的解码效率,保证数据能够快速接收完毕。
在一个实施例中,将第一缓冲区中最后N个组包重传的丢失数据包存入第二重传缓冲区,包括:当待存入第二重传缓冲区的丢失数据包对应的序列号信息为第一缓冲区和第二缓冲区中的最小值时,翻倍存入第二重传缓冲区;当待存入第二重传缓冲区的丢失数据包对应的序列号信息不是第一缓冲区和第二缓冲区中的最小值时,直接将对应的丢失数据包存入第二重传缓冲区。
本发明的有益效果在于:第二重传缓冲区中通过最小ID复制的数据更新方式,能够动态调整数据冗余情况,提升数据传输的可靠性和整体传输效率。
在一个实施例中,其中随机选择对应的丢失数据包进行重传,包括:
利用丢包率预测模型对卫星网络当前的网路状态进行检测,以得到预测的丢包率,其中丢包率预测模型利用卫星链路中历史丢包情况和网络状态数据构建的数据集训练得到;根据预测的丢包率的倒数与标准周期的乘积,确定第二重传缓冲区中重传的时间周期;根据预设的随机算法从第二重传缓冲区中选择丢失数据包,并根据所述时间周期进行重传。
本发明的有益效果在于:通过对卫星链路的历史状态进行评估,可以对当前的链路状态进行预测,从而调整第二重传缓冲区中定时重传的时间,实现对整体传输过程的自适应调节,保证了数据传输过程的效率和可靠性。
在第二方面中,本发明还提供了一种电子设备,包括:处理器;存储器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如前文一个或多个实施例所述的基于UDP的数据传输方法。
在第三方面中,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如前文一个或多个实施例所述的基于UDP的数据传输方法。
基于上述方案,可以最高效率的利用卫星链路中的低速通道,有效避免消耗额外的重传带宽,同时通过第二重传缓冲区的配合传输,保证了链路资源的有效利用,能够使服务端尽快完成数据接收任务,提升数据传输效率。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示意性示出根据本发明的实施例的基于UDP的数据传输方法的流程图;
图2是示意性示出根据本发明的实施例的客户端和服务端之间通过UDP协议进行网络通信的示意图;
图3是示意性示出根据本发明的实施例的服务端的数据处理流程图;
图4是示意性示出根据本发明的实施例的客户端的数据处理流程图;
图5是示意性示出根据本发明的实施例的电子设备的组成结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图来详细描述本发明的具体实施方式。
图1是示意性示出根据本发明的实施例的基于UDP的数据传输方法100的流程图。根据本发明的上下文,客户端与服务端之间的数据传输过程基于UDP协议,客户端发送数据,服务端接收数据。
如图1所示,在步骤S101处,发送数据包,并接收NACK包。具体地,向服务端发送数据包,并接收服务端返回的NACK包,所述NACK包中包含丢失数据包的序列号信息。在一些实施例中,客户端会向服务端定时发送数据,服务端负责接数据,并返回计算好的NACK包,客户端在接收到NACK包之后,将进行周期性的数据重传操作,直至服务端接收到所有的数据包。
在步骤S102处,丢失数据包备份至第一重传缓冲区。具体地,根据序列号信息将丢失数据包备份至第一重传缓冲区。在一些实施例中,第一重传缓冲区可以存入待重传的数据包,即NACK包中的序列号信息对应的丢失数据包,以根据客户端的组包重传策略进行数据重传操作。
在步骤S103处,组包重传并备份至第二重传缓冲区。具体地,从第一重传缓冲区中提取丢失数据包并向服务端进行组包重传,同时将组包重传的丢失数据包备份至第二重传缓冲区。
在一些实施例中,数据重传操作过程中,可以根据卫星链路的丢包情况对数据重传的时间间隔进行调整。具体地,获取设定时间内实际收到的NACK包的数量。根据理论应到的NACK包的数量和实际收到的NACK包的数量计算得到NACK包的丢包率。根据丢包率调整组包重传的时间间隔,其中丢包率越高则对应的组包重传的时间间隔越小。
其中NACK包的丢包率的计算公式为:
,
;
式中,表示理论应到的NACK包的数量,表示统计时间,表示每个NACK包的发送间隔,表示丢包率,表示实际收到的NACK包的数量。
上述内容中,根据丢包率调整组包重传的时间间隔,可以采用以下方式:响应于NACK包的丢包率大于50%,组包重传的时间间隔缩短为初始间隔的二分之一。响应于NACK包的丢包率小于30%,组包重传的时间间隔恢复至初始间隔。
进一步,还可以建立丢包率与组包重传的时间间隔的映射关系,从而根据丢包率进行时间间隔的平滑调整。
在一个是应用场景中,将组包重传的丢失数据包备份至第二重传缓冲区时,可以将第一缓冲区中最后N个组包重传的丢失数据包存入第二重传缓冲区,并将第二重传缓冲区中多余的丢失数据包删除。
例如,可以采用最小序列号复制操作实现写入过程。具体地,当待存入第二重传缓冲区的丢失数据包对应的序列号信息为第一缓冲区和第二缓冲区中的最小值时,翻倍存入第二重传缓冲区。当待存入第二重传缓冲区的丢失数据包对应的序列号信息不是第一缓冲区和第二缓冲区中的最小值时,直接将对应的丢失数据包存入第二重传缓冲区。
在步骤S104处,第二重传缓冲区随机重传。具体地,响应于第一重传缓冲区中无待组包重传的丢失数据包,根据乱序算法从第二重传缓冲区中随机选择对应的丢失数据包进行重传。
在一些实施例中,当第一重传缓冲区中无待重传的数据时,客户端此时处于静默状态,浪费了卫星通道的传输时间。而且服务端只能等待下一次发出的NACK包对应的数据包,服务端接收完成数据的时间不能保证。基于此,通过提取第二重传缓冲区中的数据进行辅助重传操作,可以有效弥补通道中的空白传输时间,从而提升通道的传输效率。
进一步,本发明中除了通过随机选取数据包进行重传操作之外,还可以通过预测的丢包情况,对第二重传缓冲区中的数据重传操作的时间周期进行调整,从而增强了传输过程的适应性,有效提升传输效率。
具体地,获取卫星链路中历史丢包情况和网络状态数据,并构建数据集。根据所述数据集对神经网络模型进行训练,以得到丢包率预测模型。利用丢包率预测模型对卫星网络当前的网路状态进行检测,以得到预测的丢包率。根据预测的丢包率的倒数与标准周期的乘积,确定第二重传缓冲区中重传的时间周期。根据预设的随机算法从第二重传缓冲区中选择丢失数据包,并根据所述时间周期进行重传。该预设的随机算法例如可以是乱序选择,即随机从第二缓冲区中选取一个丢失数据包进行发送。通过这种方式,在传输完毕前,可以保证卫星链路上始终有数据发送。
进一步,上述神经网络模型例如可以采用长短期记忆网络(LSTM,Long Short-Term Memory),也可以采用在LSTM模型基础上进行改进的门控循环模型(gated recurrentunit,GRU)。
以LSTM模型的训练过程为例,获取卫星链路中网络状态数据和对应时刻的历史丢包情况,并构建数据集。对该卫星链路中历史丢包情况中的丢包率设置标签。通过数据集中的网络状态数据和标签构成训练数据集,用于LSTM模型的训练。在训练过程中,可以将数据集中网络状态数据和标签(对应时刻的丢包率)输入LSTM模型进行训练。损失函数可以采用交叉熵损失函数。使用梯度下降算法更新该LSTM模型的参数,当达到训练次数或者模型损失小于设定阈值时结束训练,可以得到对应的丢包率预测模型。该训练过程对应的收敛条件可以根据需要进行设定。由于上述训练过程采用的是现有的训练方式,区别仅在于数据集的选取,将不在说明具体过程。
在丢包率预测模型训练完成后,可以将当前的网络状态作为该丢包率预测模型的输入,预测卫星链路中对应的丢包率。该网络状态例如可以是卫星链路中的延时抖动情况、流量信息和传输速度等。
接下来以客户端和服务端的数据传输过程为例,对本发明的方案进行详细说明。
客户端作为UDP数据发送方,服务端接收数据,作为接收方,客户端和服务端具有专用交互信令。由于UDP协议是无状态的,因此客户端和服务端在正式传输数据前,需要进行简单的握手机制来保证UDP逻辑链路的正常建立。客户端和服务端之间数据传输的整体流程如图2所示。客户端向服务端连续发送HELLO握手包,服务端在接收到HELLO握手包之后,向客户端回应,此时链路建立完成。链路建立完成后,客户端需要定时发送数据,服务器端负责接收数据,并基于NACK(Negative Acknowledgement)机制返回计算好的NACK包,客户端得到NACK包后周期性的进行数据重传。进一步,由于卫星网络的特殊性,需要尽可能的减少重传的数据包。
NACK机制是一种用于实时通信的网络协议,用于在传输过程中检测和纠正丢包。当接收方检测到数据包丢失时,它会发送一个NACK消息给发送方,请求重新发送丢失的数据包。这种机制可以确保数据的完整性和准确性,从而提供更好的用户体验。
在实际应用中,服务端在接收到数据包后,会检查序列号以确定是否有丢失的数据包。序列号是一个连续的数值,用于标识数据包的顺序。如果服务端发现某个数据包的序列号不连续,就意味着有数据包丢失。
如果发现有丢失的数据包,服务端会发送一个NACK包给客户端,指示需要重新发送丢失的数据包。NACK包中包含了丢失的数据包的序列号信息,这样客户端就能准确地知道哪些数据包需要重新发送。
客户端收到NACK包后,会根据服务端的请求重新发送丢失的数据包。为了确保数据的实时性,客户端通常会优先重传最新的数据包。本发明中为了保证卫星链路的传输通道有效性,减小卫星通道中空白的传输时间,设置两个重传缓冲区进行数据重传,即在第一缓冲区进行数据重传的基础上,还设置第二缓冲区,以辅助第一缓冲区进行数据重传操作。
具体地,客户端设置第一缓冲区(图2中示出的重传缓冲1)和第二缓冲区(图2中示出的重传缓冲2),客户端在发送数据包后,如果收到服务端返回的NACK包,根据NACK包中的序列号信息选择对应的数据包,并按照设定的规则存入重传缓冲区即第一缓冲区中。第一缓冲区再将存入的数据包进行组包重传。
在一些应用场景中,客户端从NACK包中获取需要重传的数据包的ID序列,并对待重传的数据包进行排序,以重传数据。同时在第一缓冲区重传数据包时,将待重传的数据包写入第二缓冲区中,以作为重传备用。第二缓冲区中将保留N个最后待重传的数据包,并将多余的进行删除。当第一缓冲区中的数据包重传完成之后,即第一缓冲区中没有待重传的数据包时,此时将随机选择第二缓冲区中的数据包进行重传发送,并且第二缓冲区重传的数据包将回环保留在第二缓冲区中。
服务端在收到重新发送的数据包后,会将其插入正确的顺序中,以恢复丢失的数据。同时,服务端将继续计算未收到数据包的ID序列(即序列号信息),并对应生成新的NACK包,以发送至客户端。客户端通过提取第一重传缓冲区和第二重传缓冲区中的丢失数据包,循环发送重传数据包,并接收从服务端返回的NACK包,直到接收到服务端发送的结束包,将停止发送数据包。这样,即使在网络状况不佳的情况下,也能保证音频和视频的流畅播放。
接下来将对服务端和客户端的运行逻辑分别进行说明。
如图3所示,服务端的核心是接收数据包,并且及时准确的把NACK包返回给客户端。具体地,服务端接收来自客户端的UDP数据,并插入接收缓冲区。服务端通过遍历收到包序号和包的总个数,可以计算出当前没收到的包,并生成未收到包ID序列,生成NACK列表。同时发送的频率需要控制在一定程度,发送过快会引起卫星网络的超载。扫描NACK列表发送时间,并生成NACK消息发送给客户端。
如图4所示,客户端除了正常发送所有的数据以外,就是收到NACK包后,及时进行数据包的重传,尽可能的填满发送带宽,同时计算NACK包的丢包率来估计整个链路的丢包率。同时由于卫星网络的高丢包,高延迟特性,很容易出现这样一个场景,该发送的数据包以及需要重传的数据包都已经发送完毕,但是新的NACK仍未到达,导致了发送端此时处于静默状态,白白浪费了卫星通道的传输时间。因此,除了设置常规的重传缓冲(即第一重传缓冲区或重传缓冲1)之外,还设置了平滑重传缓冲(第二重传缓冲区或重传缓冲2)来应对这种情况。通过第二缓冲区填充空白的传输时间,提高通道传输效率,更高效的完成传输任务。另外,为了使服务端能尽可能多的收到文件的前部完整部分,可以在对第二缓冲区的数据进行最小id数据复制操作,这样服务端收到的数据可以进行优先解码而无需等待全部数据接收完毕。
具体地,如图2所示,客户端接收到NACK包后,根据NACK包中的序列号信息(ID)存入重传缓冲1。重传缓冲1将对需要重传的数据根据ID进行排序。当重传缓冲1中有需要进行重传的数据包时,即重传缓冲1可用,将准备重传数据并从重传缓冲1中发送重传包(即丢失数据包)时,同时将重传包的ID写入重传缓冲2中。重传缓冲2最多保持N个最后ID序列号的重传包,多余的重传包将从重传缓冲2中删除。重传缓冲2插入重传包时,判断插入包的ID是否为重传缓冲1和重传缓冲2中的最小ID,如果是,则翻倍插入,如果不是,则普通插入。当重传缓冲1中没有重传包时,即重传缓冲1不可用,将自动在重传缓冲2中进行乱序选择,选择一个包进行重传发送,发送后的数据包仍将回环保留在重传缓冲2中。通过这种方式,在传输完毕前,可以保证卫星链路上始终有数据发送,不必等NACK包的到达,同时由于重传缓冲2是对重传数据包的重传,因此可以提高这些包的到达成功率,提高了系统的传输效率。
上述第一重传缓冲区(或重传缓冲1)中数据包重传时的发送逻辑为:
按一定的interval(发送间隔)发送数据,当监测丢包率超过50%,发送间隔减半,当监测到丢包率低于30%,恢复初始间隔。
而该丢包率可以根据NACK包丢包率计算:
NACK包是按照一定频率发送给对端的,因此,NACK包的丢包率可以根据一定时间内理论上应到的NACK包和实际收到的NACK包数量进行计算。
,
;
式中,表示理论应到的NACK包的数量,表示统计时间,表示每个NACK包的发送间隔,表示丢包率,表示实际收到的NACK包的数量。
本发明的上述技术方案主要是解决高延迟,高丢包,低速率的卫星网络通道上,传统TCP/HTTP无法有效进行数据传输的问题。通过UDP以及特殊算法,满负载使用卫星链路,通过NACK方式而非ACK确认,提高了低速链路的数据传输效率。通过这个算法,可以让手持终端在“三断”场景下,及时的传输现场照片,现场语音以及其他小容量文件给远程指挥中心,远程指挥中心根据现场信息,进行及时有效的决策,对于应急工作有很大的意义。
同时,重传缓冲2的更新方式,通过重传缓冲1的信息,动态调整重传缓冲2的数据,在启用重传缓冲2获取数据包ID的时候,采用了乱序算法,保证重传包最大的随机性,对抗网络丢包,提高重传包的正确接收概率。重传缓冲1和重传缓冲2的配合逻辑,默认情况下重传缓冲2是不工作的,当重传缓冲1数据耗尽后,重传缓冲2开始定时发送重传数据,接替重传缓冲1进行数据包的重传工作,充分利用低速链路的传输能力,满负载传输数据,保证数据及时有效的通过卫星进行传输。
进一步,上述重传缓冲2的定时发送重传数据时,可以通过该卫星链路的历史丢包情况进行预测,从而确定相应的时间周期。具体地,本实施例中通过构建预测模型确定传输时的时间周期。在实际应用场景中,获取卫星链路中历史丢包情况和网络状态数据,并构建数据集。根据数据集对神经网络模型进行训练,以得到丢包率预测模型。利用丢包率预测模型对卫星网络当前的网路状态进行检测,以得到预测的丢包率。根据预测的丢包率的倒数与标准周期的乘积,确定第二重传缓冲区中重传的时间周期。根据预设的随机算法从第二重传缓冲区中选择丢失数据包,并根据所述时间周期进行重传。
通过上述方案,由于使用了传统的UDP协议,底层传输协议无需做任何修改。使用了专用的UDP传输和流控算法,可以最高效率的利用卫星低速通道,尽量避免消耗额外的重传带宽。通过尽可能优先传输ID较小的包,方便接收端及时解码数据。另外上述方案也便于与现有终端和服务器进行集成,同时支持多个终端并行进行数据传输。
图5是示意性示出根据本实施例中的一种电子设备的结构框图。
本发明还提供了一种电子设备。如图5所示,所述设备包括处理器和存储器,所述存储器存储有计算机程序指令,当所述计算机程序指令被所述处理器执行时实现根据上述基于UDP的数据传输方法。
所述设备还包括通信总线和通信接口等本领域技术人员熟知的其他组件,其设置和功能为本领域中已知,因此在此不再赘述。
在本发明中,前述的存储器可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,计算机可读存储介质可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive RandomAccess Memory)、动态随机存取存储器DRAM(Dynamic Random Access Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等,或者可以用于存储所需信息并且可以由应用程序、模块或两者访问的任何其他介质。任何这样的计算机存储介质可以是设备的一部分或可访问或可连接到设备。本发明描述的任何应用或模块可以使用可以由这样的计算机可读介质存储或以其他方式保持的计算机可读/可执行指令来实现。
基于此,本发明中还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如前文所述的基于UDP的数据传输方法。
在本说明书的描述中,“多个”、“若干个”的含义是至少两个,例如两个,三个或更多个等,除非另有明确具体的限定。虽然本说明书已经示出和描述了本发明的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式提供的。本领域技术人员会在不偏离本发明思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本发明的过程中,可以采用对本文所描述的本发明实施例的各种替代方案。
Claims (7)
1.一种基于UDP的数据传输方法,其特征在于,用于发送数据包的客户端,所述数据传输方法包括:
向服务端发送数据包,并接收服务端返回的NACK包,所述NACK包中包含丢失数据包的序列号信息;
根据所述序列号信息将丢失数据包备份至第一重传缓冲区;
从所述第一重传缓冲区中提取丢失数据包并向服务端进行组包重传,同时将组包重传的丢失数据包备份至第二重传缓冲区,包括:将第一缓冲区中最后N个组包重传的丢失数据包存入第二重传缓冲区,包括:当待存入第二重传缓冲区的丢失数据包对应的序列号信息为第一缓冲区和第二缓冲区中的最小值时,翻倍存入第二重传缓冲区;当待存入第二重传缓冲区的丢失数据包对应的序列号信息不是第一缓冲区和第二缓冲区中的最小值时,直接将对应的丢失数据包存入第二重传缓冲区;并将第二重传缓冲区中多余的丢失数据包删除;
响应于第一重传缓冲区中无待组包重传的丢失数据包,根据乱序算法从第二重传缓冲区中随机选择对应的丢失数据包进行重传。
2.根据权利要求1所述的基于UDP的数据传输方法,其特征在于,从所述第一重传缓冲区中提取丢失数据包并向服务端进行组包重传,包括:
获取设定时间内实际收到的NACK包的数量;
根据理论应到的NACK包的数量和实际收到的NACK包的数量计算得到NACK包的丢包率;
根据所述丢包率调整组包重传的时间间隔,其中丢包率越高则对应的组包重传的时间间隔越小。
3.根据权利要求2所述的基于UDP的数据传输方法,其特征在于,其中NACK包的丢包率的计算公式为:
,
;
式中,表示理论应到的NACK包的数量,表示统计时间,表示每个NACK包的发送间隔,表示丢包率,表示实际收到的NACK包的数量。
4.根据权利要求2所述的基于UDP的数据传输方法,其特征在于,根据所述丢包率调整组包重传的时间间隔,包括:
响应于NACK包的丢包率大于50%,组包重传的时间间隔缩短为初始间隔的二分之一;
响应于NACK包的丢包率小于30%,组包重传的时间间隔恢复至初始间隔。
5.根据权利要求1所述的基于UDP的数据传输方法,其特征在于,其中随机选择对应的丢失数据包进行重传,包括:
利用丢包率预测模型对卫星网络当前的网路状态进行检测,以得到预测的丢包率,其中丢包率预测模型利用卫星链路中历史丢包情况和网络状态数据构建的数据集训练得到;
根据预测的丢包率的倒数与标准周期的乘积,确定第二重传缓冲区中重传的时间周期;
根据预设的随机算法从第二重传缓冲区中选择丢失数据包,并根据所述时间周期进行重传。
6.一种电子设备,其特征在于,包括:
处理器;
存储器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如权利要求1~5中任一项所述的基于UDP的数据传输方法。
7.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述程序被处理器执行时实现如权利要求1~5中任一项所述的基于UDP的数据传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410698199.3A CN118282585B (zh) | 2024-05-31 | 2024-05-31 | 一种基于udp的数据传输方法、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410698199.3A CN118282585B (zh) | 2024-05-31 | 2024-05-31 | 一种基于udp的数据传输方法、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118282585A CN118282585A (zh) | 2024-07-02 |
CN118282585B true CN118282585B (zh) | 2024-08-06 |
Family
ID=91638552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410698199.3A Active CN118282585B (zh) | 2024-05-31 | 2024-05-31 | 一种基于udp的数据传输方法、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118282585B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719809A (zh) * | 2009-11-25 | 2010-06-02 | 中兴通讯股份有限公司 | 一种媒体数据包丢包恢复的方法及系统 |
CN109787722A (zh) * | 2019-01-25 | 2019-05-21 | 北京数码视讯技术有限公司 | 数据传输方法、装置和服务器 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103269260A (zh) * | 2013-06-03 | 2013-08-28 | 腾讯科技(深圳)有限公司 | 数据传输方法、数据接收端、数据发送端和数据传输系统 |
US9565140B2 (en) * | 2013-10-11 | 2017-02-07 | Mediatek, Inc. | HARQ memory space management for LTE carrier aggregation |
CN107147481A (zh) * | 2017-07-19 | 2017-09-08 | 北京数码视讯科技股份有限公司 | 丢包重传方法、装置及电子设备 |
CN112235829A (zh) * | 2020-10-15 | 2021-01-15 | 展讯通信(上海)有限公司 | 数据传输方法、设备和存储介质 |
CN112165355B (zh) * | 2020-10-23 | 2022-03-22 | 中国电子科技集团公司第三十研究所 | 一种面向卫星网络的基于udp的可靠数据传输方法 |
CN116566920A (zh) * | 2023-05-10 | 2023-08-08 | 深圳市深信服信息安全有限公司 | 一种数据传输控制方法及相关装置 |
-
2024
- 2024-05-31 CN CN202410698199.3A patent/CN118282585B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719809A (zh) * | 2009-11-25 | 2010-06-02 | 中兴通讯股份有限公司 | 一种媒体数据包丢包恢复的方法及系统 |
CN109787722A (zh) * | 2019-01-25 | 2019-05-21 | 北京数码视讯技术有限公司 | 数据传输方法、装置和服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN118282585A (zh) | 2024-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220014312A1 (en) | Data transmission method and apparatus | |
US8310920B2 (en) | Method and system for accelerating transmission of data between network devices | |
US6141324A (en) | System and method for low latency communication | |
WO2022247550A1 (zh) | 数据重传处理方法、装置、计算机设备和存储介质 | |
WO2017005055A1 (zh) | 流媒体网络传输的带宽计算方法、服务器端和系统 | |
KR20180048760A (ko) | 패킷 전송 방법 및 사용자 장비 | |
US20080101290A1 (en) | Apparatus for Arq Controlling in Wireless Portable Internet System and Method Thereof | |
WO2021004056A1 (zh) | 用于数据传输的方法和rdma网卡 | |
JP2007089177A (ja) | 無線通信システムにおける状態報告信号の伝送速度を改善する方法及び装置 | |
CN106416179A (zh) | 实现扩展传输控制功能的传输加速器 | |
CN101656597A (zh) | 数据接收和发送方法、装置及数据传输系统 | |
CN1917639A (zh) | 使用丢包重传的视频信号增强方法 | |
WO2011000200A1 (zh) | 一种高效的流媒体传输方法 | |
CN112261142B (zh) | 一种rdma网络的数据重传方法、装置及fpga | |
CN113114526B (zh) | 一种基于分包防干扰的数据传输方法及装置 | |
CN108173851B (zh) | 一种用于空间信息网络的高效多媒体传输方法 | |
KR100240645B1 (ko) | 멀티캐스트 통신의 패킷 오류 제어기 및 이를 이용한패킷 오류제어 방법 | |
CN102106176A (zh) | 在移动通信系统中用于用户设备的信号传输方法和装置 | |
JP2005244897A (ja) | 信頼性のある通信方法及びその装置 | |
CN118282585B (zh) | 一种基于udp的数据传输方法、设备及可读存储介质 | |
CN113612580A (zh) | 基于喷泉码编码策略和冗余自适应的屏幕更新传输方法 | |
JP2003218936A (ja) | 可変長メッセージの送受信方法および送受信装置 | |
JP2006191368A (ja) | ネットワーク伝送装置 | |
CN113612737A (zh) | 一种基于分组与重传机制的长报文可靠传输方法 | |
JPH09284343A (ja) | 蓄積型マルチメディア情報の転送再生方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |