CN112350803B - 数据包的传输方法、装置、系统、电子设备及存储介质 - Google Patents
数据包的传输方法、装置、系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112350803B CN112350803B CN202011409152.9A CN202011409152A CN112350803B CN 112350803 B CN112350803 B CN 112350803B CN 202011409152 A CN202011409152 A CN 202011409152A CN 112350803 B CN112350803 B CN 112350803B
- Authority
- CN
- China
- Prior art keywords
- data packet
- nack
- request
- fec
- cloud server
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本发明实施例提供了一种数据包的传输方法、装置、系统、电子设备及存储介质,所述方法包括:云服务器向客户端发送第一数据包;所述客户端向所述云服务器发送非确认NACK请求,其中,所述NACK请求用于指示所述云服务器向所述客户端传输的第一数据包出现丢失;所述云服务器接收所述NACK请求,并基于所述NACK请求生成前向纠错FEC数据包;向所述客户端发送所述FEC数据包,其中,所述FEC数据包用于还原所述第一数据包。解决了相关技术中NACK回应包丢失导致延时增加的技术问题,防止NACK回应包出现丢失的情况,提高了整个网络系统的稳定性和鲁棒性,提升了客户端的用户体验。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种数据包的传输方法、装置、系统、电子设备及存储介质。
背景技术
相关技术中,在资源传输过程中,丢包造成的影响多种多样,其中对视频质量的影响主要有:画面延时、马赛克现象、局部变形(图像的某些区域不清晰)、图像模糊、屏幕频繁刷新或闪烁、视音频不同步、帧率下降、图像静止等等。对音频质量的影响包括:总体音频失真、间断或间歇性噪音、音频中断等。而对内容和演示数据质量的影响则包括:幻灯片模糊变形、翻页速度减慢或屏幕频繁刷新和图像静止等等,另外,丢包还会引起过度延迟,甚至是中断。因此降低和避免丢包是资源传输过程中的重要关注的内容。
相关技术中,在视频资源传输过程中,可能使用到WebRTC(Web Real-TimeCommunication),WebRTC是Google的一个音视频实时通信项目,延时非常低,大量用于视频通话和其他一些超低延时的场景,场景对延时要求很高,同时相关技术在传输数据时,使用ACK/NACK来进行进行包的重传保证可靠性,如果出现丢包,接收端向发送端发NACK消息指示有丢失,需要发送端重传丢失的数据包,但是NACK回应包也有可能丢失,如果重传的NACK回应包再次丢失,网络延时更大,严重影响业务数据的正常传输。
针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。
发明内容
本发明实施例的目的在于提供一种数据包的传输方法、装置、系统、电子设备及存储介质,以解决相关技术中NACK回应包丢失导致延时增加的技术问题。具体技术方案如下:
在本发明实施例的第一方面,提供了一种数据包的传输方法,包括:云服务器向客户端发送第一数据包;所述客户端向所述云服务器发送非确认NACK请求,其中,所述NACK请求用于指示所述云服务器向所述客户端传输的第一数据包出现丢失;所述云服务器接收所述NACK请求,并基于所述NACK请求生成前向纠错FEC数据包;向所述客户端发送所述FEC数据包,其中,所述FEC数据包用于还原所述第一数据包。
可选的,在所述云服务器接收所述NACK请求之后,所述方法还包括:所述云服务器生成所述NACK请求的NACK回应包,其中,所述NACK回应包携带所述第一数据包;向所述客户端发送所述NACK回应包。
在本发明实施例的第二方面,提供了一种数据包的传输方法,包括:接收来自客户端的非确认NACK请求,其中,所述NACK请求用于指示云服务器向所述客户端传输的第一数据包出现丢失;基于所述NACK请求生成前向纠错FEC数据包;向所述客户端发送所述FEC数据包。
可选的,在接收来自客户端的非确认NACK请求之后,所述方法还包括:生成所述NACK请求的NACK回应包,其中,所述NACK回应包携带所述第一数据包;向所述客户端发送所述NACK回应包。
可选的,基于所述NACK请求生成前向纠错FEC数据包包括:以所述NACK请求为触发条件,获取所述第一数据包和第二数据包,其中,所述第二数据包是所述云服务器和所述客户端在传输过程中丢失的数据包;使用冗余纠错码对所述第一数据包和所述第二数据包进行FEC冗余计算,生成FEC数据包。
在本发明实施例的第三方面,提供了一种数据包的传输方法,包括:向云服务器发送非确认NACK请求,其中,所述NACK请求用于指示所述云服务器向客户端传输的第一数据包出现丢失;接收所述云服务器基于所述NACK请求反馈的前向纠错FEC数据包,其中,所述FEC数据包用于还原所述第一数据包。
可选的,在向云服务器发送非确认NACK请求之后,所述方法还包括:接收所述云服务器基于所述NACK请求反馈的NACK回应包,其中,所述NACK回应包携带所述第一数据包。
可选的,在接收所述云服务器基于所述NACK请求反馈的前向纠错FEC数据包和接收所述云服务器基于所述NACK请求反馈的NACK回应包之后,所述方法还包括:通过所述FEC数据包和所述NACK回应包相互验证所述第一数据包是否正确;在验证通过后,确定所述FEC数据包和所述NACK回应包的接收顺序,若所述FEC数据包先于所述NACK回应包收到,丢弃所述NACK回应包,若所述NACK回应包先于所述FEC数据包收到,丢弃所述FEC数据包。
在本发明实施例的第四方面,还提供了一种数据包的传输装置,包括:接收模块,用于接收来自客户端的非确认NACK请求,其中,所述NACK请求用于指示云服务器向所述客户端传输的第一数据包出现丢失;生成模块,用于基于所述NACK请求生成前向纠错FEC数据包;第一发送模块,用于向所述客户端发送所述FEC数据包。
可选的,所述装置还包括:生成模块,用于在所述接收模块接收来自客户端的非确认NACK请求之后,生成所述NACK请求的NACK回应包,其中,所述NACK回应包携带所述第一数据包;第二发送模块,用于向所述客户端发送所述NACK回应包。
可选的,所述生成模块包括:获取单元,用于以所述NACK请求为触发条件,获取所述第一数据包和第二数据包,其中,所述第二数据包是所述云服务器和所述客户端在传输过程中丢失的数据包;生成单元,用于使用冗余纠错码对所述第一数据包和所述第二数据包进行FEC冗余计算,生成FEC数据包。
在本发明实施例的第四方面,还提供了一种数据包的传输装置,包括:发送模块,用于向云服务器发送非确认NACK请求,其中,所述NACK请求用于指示所述云服务器向客户端传输的第一数据包出现丢失;第一接收模块,用于接收所述云服务器基于所述NACK请求反馈的前向纠错FEC数据包,其中,所述FEC数据包用于还原所述第一数据包。
可选的,所述装置还包括:第二接收模块,用于在所述发送模块向云服务器发送非确认NACK请求之后,接收所述云服务器基于所述NACK请求反馈的NACK回应包,其中,所述NACK回应包携带所述第一数据包。
可选的,所述装置还包括:验证模块,用于在所述第一接收模块接收所述云服务器基于所述NACK请求反馈的前向纠错FEC数据包和所述第二接收模块接收所述云服务器基于所述NACK请求反馈的NACK回应包之后,通过所述FEC数据包和所述NACK回应包相互验证所述第一数据包是否正确;丢弃模块,用于在验证通过后,确定所述FEC数据包和所述NACK回应包的接收顺序,若所述FEC数据包先于所述NACK回应包收到,丢弃所述NACK回应包,若所述NACK回应包先于所述FEC数据包收到,丢弃所述FEC数据包。
在本发明实施例的第五方面,还提供了一种数据包的传输系统,包括:客户端和云服务器,其中,所述云服务器包括如上述实施例所描述的装置;所述客户端包括如上述实施例所描述的装置。
在本发明实施例的第六方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一所述的数据包的传输方法或者应用程序更新方法。
在本发明实施例的七方面,还提供了一种存储介质,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的数据包的传输方法或者应用程序更新方法。
在本发明实施例的第八方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的数据包的传输方法或者应用程序更新方法。
本发明实施例提供的技术方案,接收来自客户端的非确认NACK请求,基于NACK请求生成前向纠错FEC数据包,向客户端发送FEC数据包,通过NACK请求触发FEC机制,并向客户端发送第一数据包的FEC数据包,可以提高第一数据包的重传成功率,避免NACK回应包丢失导致的延时增加,解决了相关技术中NACK回应包丢失导致延时增加的技术问题,防止NACK回应包出现丢失的情况,提高了整个网络系统的稳定性和鲁棒性,提升了客户端的用户体验。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的一种数据包的传输方法的流程图;
图2是根据本发明实施例的另一种数据包的传输方法的流程图;
图3是根据本发明实施例的又一种数据包的传输方法的流程图;
图4是本发明实施例的交互示意图;
图5为本发明实施例中示出的一种数据包的传输装置的结构示意图;
图6为本发明实施例中示出的另一种数据包的传输装置的结构示意图;
图7为本发明实施例中示出的一种数据包的传输系统的结构示意图;
图8为本发明实施例中示出的又一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个类似的实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
在本实施例中提供了一种数据包的传输方法,图1是根据本发明实施例的一种数据包的传输方法的流程图,如图1所示,该流程包括如下步骤:
步骤S102,接收来自客户端的非确认NACK请求,其中,所述NACK请求用于指示云服务器向所述客户端传输的第一数据包出现丢失;
在本实施例中,所述云服务器与所述客户端基于UDP(用户数据报协议,UserDatagram Protocol)或传输控制协议(TCP,Transmission Control Protocol)进行数据传输,UDP提供了一种无需建立连接就可以在云服务器与客户端之间传输封装的IP数据包的通讯链路,而TCP则需要提前建立连接,在基于UDP和TCP的通信过程中,都存在数据丢包。
在云服务器与客户端同步云游戏、视频直播等多媒体数据时,云服务在传输层基于UDP向客户端发送数据包,其中第一数据包在传输过程中丢失,客户端接收失败,客户端通过消息向云服务器发送NACK请求,以使云服务器重传该第一数据包。
步骤S104,基于NACK请求生成前向纠错FEC数据包;
在本实施例中,以NACK请求为触发条件,基于NACK请求确定出现丢失的第一数据包(可以根据NACK请求中的数据包标识、序列标识、字段标识、错误码等信息识别出出现丢失的第一数据包),然后从云服务器再次获取第一数据包,通过使用预定的编码算法,冗余纠错码对第一数据包进行FEC(Forward Error Correction,前向纠错)冗余计算,生成FEC数据包,客户端收到FEC数据包之后,可以使用冗余纠错码还原第一数据包。由于相关技术中是在云服务器首次向客户端发送第一数据包的时候,同时生成第一数据包的FEC数据包,一并发送给客户端,本实施例的方案是在第一数据包正常传输出现丢包,需要重传数据包的场景下,基于NACK请求再触发生成FEC数据包并向客户端发送FEC数据包,是对NACK回应包的一种重传保护机制,可以防止因NACK回应包传输失败导致的再次丢包,而NACK回应包本身属于一种重传机制,通过对NACK回应包进行重传保护,可以防止重传的第一数据包再次丢失,所以本实施例生成FEC数据包的条件和时机与相关技术不同,基于本实施例的方案在确定出第一数据包传输失败的情况下,向客户端发送FEC数据包,启动数据重传的重传保护机制,防止重传的数据包再次丢失,提高重传的成功率。
步骤S106,向客户端发送FEC数据包。
通过上述步骤,接收来自客户端的非确认NACK请求,基于NACK请求生成前向纠错FEC数据包,向客户端发送FEC数据包,通过NACK请求触发FEC机制,并向客户端发送第一数据包的FEC数据包,可以提高第一数据包的重传成功率,避免NACK回应包丢失导致的延时增加,解决了相关技术中NACK回应包丢失导致延时增加的技术问题,防止NACK回应包出现丢失的情况,提高了整个网络系统的稳定性和鲁棒性,提升了客户端的用户体验。
本实施例可以应用在云游戏等场景延时要求高的应用场景,在基于UDP等协议传输数据时,由于通信环境的不可靠性,相关技术使用ACK/NACK来进行数据包的重传保证可靠性,如果出现丢包,接收端向发送端发NACK消息指示有丢失,需要发送端重传丢失的数据包,发送端反馈NACK回应包,由于NACK回应包本身属于重传机制,所以在相关技术中没有使用FEC机制,这样导致如果出现重传的NACK回应包再次丢失,网络延时更大。
本实施例中的FEC是一种前向性纠错技术,发送方(在本实施例中为云服务器)将要发送的数据加上一定的冗余纠错码一起发送,接收方(在本实施例中为客户端)则根据纠错码对接收到的数据进行差错检测,如发现差错,则由接收方进行纠错,并还原出原始数据。
在计算机通信中有丢失和错误两种差错,错误的原因是某些比特数据发生畸变(也可认为是原始数据包丢失);丢失的原因是某些数据包没有收到,底层协议通常需要考虑这两种情况,使用冗余纠错码对既有丢包又有错误码的情况依然能重建正确的数据,可以在客户端上由硬件来实现,采用RS编码,汉明码等。
在本实施例的一个实施方式中,在接收来自客户端的非确认NACK请求之后,还包括:生成所述NACK请求的NACK回应包,其中,所述NACK回应包携带所述第一数据包;向所述客户端发送所述NACK回应包。NACK回应包是NACK请求的响应,通过解析NACK请求,确定在传输过程中第一数据包丢失,在云服务器上重新获取第一数据包,向客户端重传。
在本实施例中,通过同时发送NACK回应包和FEC数据包,可以防止NACK回应包丢失导致再次丢包,降低丢包概率,减少延时。
在本实施例的一个实施方式中,基于所述NACK请求生成前向纠错FEC数据包包括:以所述NACK请求为触发条件,获取所述第一数据包,使用冗余纠错码对所述第一数据包进行FEC冗余计算。生成FEC数据包,当出现NACK需要重传包时,对要重传的NACK回应包增加FEC冗余包,保证NACK回应的数据包(在本实施例指第一数据包)能顺利到达,防止发送NACK回应包可能出现再出现丢失的情况,以更短的时间传输资源数据,降低云游戏的延时。
在本实施例的另一个实施方式中,基于所述NACK请求生成前向纠错FEC数据包包括:以所述NACK请求为触发条件,获取所述第一数据包和第二数据包,其中,所述第二数据包是所述云服务器和所述客户端在传输过程中丢失的数据包;使用冗余纠错码对所述第一数据包和所述第二数据包进行FEC冗余计算,生成FEC数据包。
可选的,第二数据包是在历史时间向客户端传输过的数据包,如在最近时间传输过的数据包,或者是待传输的数据包,通过与第一数据包合并进行FEC冗余计算,可以提高数据包的利用率,增加传输速度。在一些示例中,第二数据包是另一个NACK请求指示丢失的数据包,也即,在一个传输周期中,在预设时间内,丢失了两个数据包(第一数据包和第二数据包),服务器将第一数据包和第二数据包进行组合FEC冗余计算,生成一个FEC数据包,提高了数据包的传输效率,节省了资源开销。
在本实施例中,FEC编码算法的有parity,Reed-Solomon,Hamming,LDPC,XOR。前向纠错也可以采用多层分组乘积码(Multi-level Block Product Code)进行FEC冗余计算,多层分组乘积码由分组乘积码BPC(3762,2992)构成,是二维分组乘积码BPC(4096,3249)的删余截短,可以在解码器上实现高性能Turbo算法。
可选的,在接收来自客户端的非确认NACK请求之前,还包括:向客户端发送第一数据包。客户端接收第一数据包失败,或者是第一数据包错误,客户端生成NACK请求,并发送给云服务器。
在本实施例中提供了另一种数据包的传输方法,应用在客户端侧,与上述实施例中云服务器侧的方案对应,图2是根据本发明实施例的另一种数据包的传输方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,向云服务器发送非确认NACK请求,其中,NACK请求用于指示云服务器向客户端传输的第一数据包出现丢失;
可选的,云服务器与客户端基于UDP或TCP进行数据传输;
步骤S204,接收云服务器基于NACK请求反馈的前向纠错FEC数据包,其中,FEC数据包用于还原第一数据包。
在本实施例的一个实施方式中,在向云服务器发送非确认NACK请求之后,还包括:接收云服务器基于NACK请求反馈的NACK回应包,其中,NACK回应包携带第一数据包。
在一些示例中,NACK回应包和FEC数据包封装在一个组合数据包,云服务器将整个数据包打包发送给客户端,进而提高资源利用率,也可以分开发送,避免组合包整体丢失,分散网络抖动带来的丢包风险。
在本实施例的一个实施方式,由于客户端只要FEC数据包和NACK回应包中的其中一个数据包,即可还原出丢失的第一数据包,为了防止数据冗余,降低客户端的数据存储量,提高存储利用率,在接收云服务器基于NACK请求反馈的前向纠错FEC数据包和接收云服务器基于NACK请求反馈的NACK回应包之后,还包括:通过所述FEC数据包和所述NACK回应包相互验证所述第一数据包是否正确;在验证通过后,确定所述FEC数据包和所述NACK回应包的接收顺序,若所述FEC数据包先于所述NACK回应包收到,丢弃所述NACK回应包,若所述NACK回应包先于所述FEC数据包收到,丢弃所述FEC数据包。
通过使用所述FEC数据包和所述NACK回应包相互验证,可以提高第一数据包的接收准确率,防止接收到的第一数据包再次错误。
在本实施例的另一些实施方式中,在接收云服务器基于NACK请求反馈的前向纠错FEC数据包和接收云服务器基于NACK请求反馈的NACK回应包其中一个之后,也即,在接收到FEC数据包,未接收到NACK回应包的情况下,或者是在接收到NACK回应包,未接收到FEC数据包的情况下,也可以丢失未接收到的NACK回应包和FEC数据包,例如,客户端在接收到FEC数据包之后,基于FEC数据包获取到第一数据包,向云服务器发送提示信息,指示云服务器无需再发送NACK回应包,或者是在客户端收到NACK回应包之后直接丢弃删除,在保证数据传输成功的前提下降低冗余数据的传输。
在本实施例中,在向云服务器发送非确认NACK请求之前,还包括:确定第一数据包在传输过程中丢失;生成所述第一数据包的所述NACK请求。
在通信过程中,丢包可能原因是多方面,包括多路径衰落(multi-path fading)所造成的信号衰减(signal degradation),或是因为通道阻塞造成的丢包(packet drop),再者损坏的数据包(corrupted packets)被拒绝通过,或有缺陷的网上硬件,网上驱动程序故障都可能造成丢包,丢包也受信号的信噪比(SNR)的影响。
在本实施例中提供了又一种数据包的传输方法,图3是根据本发明实施例的又一种数据包的传输方法的流程图,如图3所示,该流程包括如下步骤:
步骤S302,云服务器向客户端发送第一数据包;
步骤S304,客户端向云服务器发送非确认NACK请求,其中,NACK请求用于指示云服务器向客户端传输的第一数据包出现丢失;
步骤S306,云服务器接收NACK请求,并基于NACK请求生成前向纠错FEC数据包;
步骤S308,向客户端发送FEC数据包,其中,FEC数据包用于还原第一数据包。
可选的,在云服务器接收NACK请求之后,还包括:云服务器生成NACK请求的NACK回应包,其中,NACK回应包携带第一数据包;向客户端发送NACK回应包。
图4是本发明实施例的交互示意图,为了使重传的NACK回应包能最大程度的保证其顺利到达,云服务器使用WebRTC自带FEC功能用来发冗余包进行前项纠错。当出现NACK需要重传包时,对要重传的NACK包增加FEC冗余包,保证NACK回应的数据包能顺利到达。防止发送NACK回应包可能出现再出现丢失的情况。以更短的时间收完整音视频数据包来降低云游戏的延时。通过NACK数据包激活发送FEC冗余包使音视频快速到达,降低云游戏的延时。有针对性区分FEC包的发送对象。在一个实施场景中,包括如下流程:
客户端和云游戏服务器完成ICE(交互式连通,interactive connectivityestablishment)穿透,云游戏服务器向客户端实时推送音视频数据;
当客户端出现包丢失时向云游戏服务器发送NACK请求;
服务器收到NACK请求后,为了保证此次重传能有效到达,启动FEC前向抗丢包功能,激活特定的FEC组包功能。服务器端除了要发送NACK回应包之外,也会把丢失的包和后面要传的包(如果有),进行FEC冗余包计算,然后发送给客户端。接收端(客户端)收到ACK回应包后,如果没有发生丢包,继续正常处理,如果丢失部分包可以通过FEC冗余包还原出来;
客户端收到NACK的回应包或者FEC冗余包进行包还原。如果NACK回应包先收到,可以丢弃后续收的FEC还原包;如果NACK回应包收到时,FEC包已经收到且还原出NACK回应包,也不需要,可以丢弃。
由于FEC包过多的传输,在网络本来较差时可能会更进一步加剧网络的拥塞和丢包,在NACK请求之后反馈NACK回应包时,启动FEC机制,可以进一步控制和优化FEC包的量来避免网络拥塞,使用本实施例的方案,可以降低云游戏等数据包的传输延时,提升客户端的用户体验。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种数据包的传输装置、系统,用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
与上述方法实施例相对应,本发明实施例还提供了一种数据包的传输装置,应用在云服务器侧,图5为本发明实施例中示出的一种数据包的传输装置的结构示意图,如图5所示,该装置可以包括:接收模块50、生成模块52,第一发送模块54,其中,
接收模块50,用于接收来自客户端的非确认NACK请求,其中,所述NACK请求用于指示云服务器向所述客户端传输的第一数据包出现丢失;
生成模块52,用于基于所述NACK请求生成前向纠错FEC数据包;
第一发送模块54,用于向所述客户端发送所述FEC数据包。
在本发明实施例的具体实施方式中,所述装置还包括:生成模块,用于在所述接收模块接收来自客户端的非确认NACK请求之后,生成所述NACK请求的NACK回应包,其中,所述NACK回应包携带所述第一数据包;第二发送模块,用于向所述客户端发送所述NACK回应包。
在本发明实施例的具体实施方式中,所述生成模块包括:获取单元,用于以所述NACK请求为触发条件,获取所述第一数据包和第二数据包,其中,所述第二数据包是所述云服务器和所述客户端在传输过程中丢失的数据包;生成单元,用于使用冗余纠错码对所述第一数据包和所述第二数据包进行FEC冗余计算,生成FEC数据包。
与上述方法实施例相对应,本发明实施例还提供了另一种数据包的传输装置,应用在客户端侧,图6为本发明实施例中示出的另一种数据包的传输装置的结构示意图,如图6所示,该装置可以包括:发送模块60、第一接收模块62,其中,
发送模块60,用于向云服务器发送非确认NACK请求,其中,所述NACK请求用于指示所述云服务器向客户端传输的第一数据包出现丢失;
第一接收模块62,用于接收所述云服务器基于所述NACK请求反馈的前向纠错FEC数据包,其中,所述FEC数据包用于还原所述第一数据包。
在本发明实施例的具体实施方式中,所述装置还包括:第二接收模块,用于在所述发送模块向云服务器发送非确认NACK请求之后,接收所述云服务器基于所述NACK请求反馈的NACK回应包,其中,所述NACK回应包携带所述第一数据包。
在本发明实施例的具体实施方式中,所述装置还包括:验证模块,用于在所述第一接收模块接收所述云服务器基于所述NACK请求反馈的前向纠错FEC数据包和所述第二接收模块接收所述云服务器基于所述NACK请求反馈的NACK回应包之后,通过所述FEC数据包和所述NACK回应包相互验证所述第一数据包是否正确;丢弃模块,用于在验证通过后,确定所述FEC数据包和所述NACK回应包的接收顺序,若所述FEC数据包先于所述NACK回应包收到,丢弃所述NACK回应包,若所述NACK回应包先于所述FEC数据包收到,丢弃所述FEC数据包。
本发明实施例还提供了一种数据包的传输系统,图7为本发明实施例中示出的又一种数据包的传输系统的结构示意图,包括客户端70和云服务器72,其中,所述云服务器包括如上述实施例所描述的装置;所述客户端包括如上述实施例所描述的装置。
本发明实施例还提供了一种电子设备,如图8所示,包括处理器81、通信接口82、存储器83和通信总线84,其中,处理器81,通信接口82,存储器83通过通信总线84完成相互间的通信,存储器83,用于存放计算机程序;处理器81,用于执行存储器83上所存放的程序时,实现如下步骤:
接收来自客户端的非确认NACK请求,其中,所述NACK请求用于指示云服务器向所述客户端传输的第一数据包出现丢失;基于所述NACK请求生成前向纠错FEC数据包;向所述客户端发送所述FEC数据包。
可选的,在接收来自客户端的非确认NACK请求之后,所述方法还包括:生成所述NACK请求的NACK回应包,其中,所述NACK回应包携带所述第一数据包;向所述客户端发送所述NACK回应包。
可选的,基于所述NACK请求生成前向纠错FEC数据包包括:以所述NACK请求为触发条件,获取所述第一数据包和第二数据包,其中,所述第二数据包是所述云服务器和所述客户端在传输过程中丢失的数据包;使用冗余纠错码对所述第一数据包和所述第二数据包进行FEC冗余计算,生成FEC数据包。
或者实现如下步骤:
向云服务器发送非确认NACK请求,其中,所述NACK请求用于指示所述云服务器向客户端传输的第一数据包出现丢失;接收所述云服务器基于所述NACK请求反馈的前向纠错FEC数据包,其中,所述FEC数据包用于还原所述第一数据包。
可选的,在向云服务器发送非确认NACK请求之后,所述方法还包括:接收所述云服务器基于所述NACK请求反馈的NACK回应包,其中,所述NACK回应包携带所述第一数据包。
可选的,在接收所述云服务器基于所述NACK请求反馈的前向纠错FEC数据包和接收所述云服务器基于所述NACK请求反馈的NACK回应包之后,所述方法还包括:通过所述FEC数据包和所述NACK回应包相互验证所述第一数据包是否正确;在验证通过后,确定所述FEC数据包和所述NACK回应包的接收顺序,若所述FEC数据包先于所述NACK回应包收到,丢弃所述NACK回应包,若所述NACK回应包先于所述FEC数据包收到,丢弃所述FEC数据包。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种存储介质,该存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的数据包的传输方法或者应用程序更新方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的数据包的传输方法或者应用程序更新方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在存储介质中,或者从一个存储介质向另一个存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (9)
1.一种数据包的传输方法,其特征在于,包括:
云服务器向客户端发送第一数据包;
所述客户端向所述云服务器发送非确认NACK请求,其中,所述NACK请求用于指示所述云服务器向所述客户端传输的第一数据包出现丢失;
所述云服务器接收所述NACK请求,并基于所述NACK请求生成前向纠错FEC数据包;
向所述客户端发送所述FEC数据包,其中,所述FEC数据包用于还原所述第一数据包;
其中,在所述云服务器接收所述NACK请求之后,所述方法还包括:
所述云服务器生成所述NACK请求的NACK回应包,其中,所述NACK回应包携带所述第一数据包;向所述客户端发送所述NACK回应包;
所述客户端在接收所述云服务器基于所述NACK请求反馈的前向纠错FEC数据包和接收所述云服务器基于所述NACK请求反馈的NACK回应包之后,还包括:通过所述FEC数据包和所述NACK回应包相互验证所述第一数据包是否正确;在验证通过后,确定所述FEC数据包和所述NACK回应包的接收顺序,若所述FEC数据包先于所述NACK回应包收到,丢弃所述NACK回应包,若所述NACK回应包先于所述FEC数据包收到,丢弃所述FEC数据包。
2.一种数据包的传输方法,其特征在于,包括:
接收来自客户端的非确认NACK请求,其中,所述NACK请求用于指示云服务器向所述客户端传输的第一数据包出现丢失;
基于所述NACK请求生成前向纠错FEC数据包;
向所述客户端发送所述FEC数据包;
其中,在接收来自客户端的非确认NACK请求之后,所述方法还包括:
生成所述NACK请求的NACK回应包,其中,所述NACK回应包携带所述第一数据包;向所述客户端发送所述NACK回应包。
3.根据权利要求2所述的方法,其特征在于,基于所述NACK请求生成前向纠错FEC数据包包括:
以所述NACK请求为触发条件,获取所述第一数据包和第二数据包,其中,所述第二数据包是所述云服务器和所述客户端在传输过程中丢失的数据包;
使用冗余纠错码对所述第一数据包和所述第二数据包进行FEC冗余计算,生成FEC数据包。
4.一种数据包的传输方法,其特征在于,包括:
向云服务器发送非确认NACK请求,其中,所述NACK请求用于指示所述云服务器向客户端传输的第一数据包出现丢失;
接收所述云服务器基于所述NACK请求反馈的前向纠错FEC数据包,其中,所述FEC数据包用于还原所述第一数据包;
其中,在向云服务器发送非确认NACK请求之后,所述方法还包括:
接收所述云服务器基于所述NACK请求反馈的NACK回应包,其中,所述NACK回应包携带所述第一数据包;
在接收所述云服务器基于所述NACK请求反馈的前向纠错FEC数据包和接收所述云服务器基于所述NACK请求反馈的NACK回应包之后,所述方法还包括:
通过所述FEC数据包和所述NACK回应包相互验证所述第一数据包是否正确;
在验证通过后,确定所述FEC数据包和所述NACK回应包的接收顺序,若所述FEC数据包先于所述NACK回应包收到,丢弃所述NACK回应包,若所述NACK回应包先于所述FEC数据包收到,丢弃所述FEC数据包。
5.一种数据包的传输装置,其特征在于,包括:
接收模块,用于接收来自客户端的非确认NACK请求,其中,所述NACK请求用于指示云服务器向所述客户端传输的第一数据包出现丢失;
生成模块,用于基于所述NACK请求生成前向纠错FEC数据包;
第一发送模块,用于向所述客户端发送所述FEC数据包;
生成模块,用于在所述接收模块接收来自客户端的非确认NACK请求之后,生成所述NACK请求的NACK回应包,其中,所述NACK回应包携带所述第一数据包;向所述客户端发送所述NACK回应包。
6.一种数据包的传输装置,其特征在于,包括:
发送模块,用于向云服务器发送非确认NACK请求,其中,所述NACK请求用于指示所述云服务器向客户端传输的第一数据包出现丢失;
第一接收模块,用于接收所述云服务器基于所述NACK请求反馈的前向纠错FEC数据包,其中,所述FEC数据包用于还原所述第一数据包;
第二接收模块,用于在所述发送模块向云服务器发送非确认NACK请求之后,接收所述云服务器基于所述NACK请求反馈的NACK回应包,其中,所述NACK回应包携带所述第一数据包;
验证模块,用于在所述第一接收模块接收所述云服务器基于所述NACK请求反馈的前向纠错FEC数据包和所述第二接收模块接收所述云服务器基于所述NACK请求反馈的NACK回应包之后,通过所述FEC数据包和所述NACK回应包相互验证所述第一数据包是否正确;
丢弃模块,用于在验证通过后,确定所述FEC数据包和所述NACK回应包的接收顺序,若所述FEC数据包先于所述NACK回应包收到,丢弃所述NACK回应包,若所述NACK回应包先于所述FEC数据包收到,丢弃所述FEC数据包。
7.一种数据包的传输系统,其特征在于,包括:客户端和云服务器,其中,
所述云服务器包括如权利要求5所述的装置;
所述客户端包括如权利要求6所述的装置。
8.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口、存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求2-3或4任一所述的方法。
9.一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求2-3或4中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011409152.9A CN112350803B (zh) | 2020-12-04 | 2020-12-04 | 数据包的传输方法、装置、系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011409152.9A CN112350803B (zh) | 2020-12-04 | 2020-12-04 | 数据包的传输方法、装置、系统、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112350803A CN112350803A (zh) | 2021-02-09 |
CN112350803B true CN112350803B (zh) | 2023-04-07 |
Family
ID=74428008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011409152.9A Active CN112350803B (zh) | 2020-12-04 | 2020-12-04 | 数据包的传输方法、装置、系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112350803B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114422823A (zh) * | 2021-12-27 | 2022-04-29 | 炫彩互动网络科技有限公司 | 一种改进的云游戏流稳定传输方法 |
US11722427B1 (en) * | 2022-03-04 | 2023-08-08 | Cisco Technology, Inc. | Hybrid deadline-based transport for group applications using Hybrid Information-Centric Networking (hICN) |
CN115834973B (zh) * | 2023-01-12 | 2023-06-02 | 厦门简算科技有限公司 | 一种云端向本地终端数据高速传输方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719809B (zh) * | 2009-11-25 | 2012-10-10 | 中兴通讯股份有限公司 | 一种媒体数据包丢包恢复的方法及系统 |
CN103107952A (zh) * | 2013-03-08 | 2013-05-15 | 苏州工业园区云视信息技术有限公司 | 一种抗rtp媒体包网络丢包的方法 |
EP3416322A1 (en) * | 2017-06-14 | 2018-12-19 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Reliable ultra-low latency communications |
US11336401B2 (en) * | 2019-03-21 | 2022-05-17 | Electronics And Telecommunications Research Institute | Method of retransmission for downlink transmission in wireless communication system and apparatus for the same |
-
2020
- 2020-12-04 CN CN202011409152.9A patent/CN112350803B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112350803A (zh) | 2021-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112350803B (zh) | 数据包的传输方法、装置、系统、电子设备及存储介质 | |
CN107257270B (zh) | 基于混合自动重传请求的数据传输方法及系统 | |
CN109729439B (zh) | 实时视频传输方法 | |
TWI501579B (zh) | 使用透過單播系統接收之增量冗餘以在廣播系統中接收資料的接收器與接收方法 | |
JP6023368B1 (ja) | インタラクティブなリアルタイムメディアの転送プロトコル | |
CN113037440B (zh) | 数据重传处理方法、装置、计算机设备和存储介质 | |
US20130254611A1 (en) | Recovering data in multimedia file segments | |
JP2004517534A (ja) | パケット・チャネルを介するマルチメディア通信のための方法 | |
CN106416179A (zh) | 实现扩展传输控制功能的传输加速器 | |
CN108809893A (zh) | 一种视频质量评估方法和设备 | |
CN111181700A (zh) | 数据传输方法、装置、电子设备及存储介质 | |
CN110557677A (zh) | 一种视频传输的方法及装置 | |
US11689323B2 (en) | Efficient on-demand packet recovery for broadcast and multicast networks system and method | |
CN106034011A (zh) | 一种组播传输质量保障的控制方法及系统 | |
JP2012510767A (ja) | 誤り制御オンデマンド | |
JP5236735B2 (ja) | 送信機及び受信機間の改良されたデータ構造境界同期 | |
US9191696B2 (en) | Reception device and program for reception device | |
JP2010213150A (ja) | 送信装置、大容量ファイル配信システム、同システムにおけるファィル再送制御方法、再送制御プログラム | |
CN112804028B (zh) | 一种数据包的传输方法、设备及存储介质 | |
KR20170028887A (ko) | 멀티미디어 데이터를 송수신하는 방법 및 장치 | |
CN117040692A (zh) | 一种业务数据传输的方法及装置、电子设备、存储介质 | |
CN116318545A (zh) | 视频数据传输方法、装置、设备及存储介质 | |
CN114039702B (zh) | 数据传输方法、装置、设备和介质 | |
JP2008092213A (ja) | 受信機、パケット再送方法及びプログラム | |
CN114900716B (zh) | 云视频数据的传输方法、云平台、云终端及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
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 |