数据传输方法、装置和服务器制造方法及图纸

技术编号:21166390 阅读:24 留言:0更新日期:2019-05-22 09:29
本发明专利技术提供了一种数据传输方法、装置和服务器,其中,数据传输方法首先接收发送端发送的数据包并将其放入第一数据输入管道;将普通数据包从第一数据输入管道输入至多级队列的第一级队列;根据包序号判断第一级队列中的普通数据包是否连续;如果不连续,向发送端发送重传指令,并接收发送端发送的重传数据包,将该重传数据包插入至多级队列中缺失的包序号对应的位置;将重传数据包对应的位置之前的数据包,输出至其所在队列的下一级队列;在数据包输出至下一级队列的过程中,如果输出的数据包不连续,再次向发送端发送重传指令,并继续将数据包输出至下一级队列。本发明专利技术减少了重传失败时发送重传指令的等待时间,提高了数据包的重传效率。

Data transmission method, device and server

The invention provides a data transmission method, device and server, in which the data transmission method first receives the data packet sent by the sender and puts it into the first data input pipeline; inputs the ordinary data packet from the first data input pipeline to the first level queue of the multi-level queue; judges whether the ordinary data packet in the first level queue is continuous or not according to the packet sequence number; and if it is not continuous. To send a retransmit instruction to the sender and receive the retransmitted data packet sent by the sender, insert the retransmitted data packet into the position corresponding to the missing packet serial number in the multi-level queue, output the data packet before the position corresponding to the retransmitted data packet to the next level queue of the queue in which it belongs, and if the output data packet is discontinuous in the process of the output of the data packet to the next level queue, Send the retransmit instruction to the sender again, and continue to output the packet to the next level queue. The invention reduces the waiting time for sending the retransmit instruction when the retransmit fails, and improves the retransmit efficiency of the data package.

【技术实现步骤摘要】
数据传输方法、装置和服务器
本专利技术涉及数据传输
,尤其是涉及一种数据传输方法、装置和服务器。
技术介绍
将本地采集到的视频信息经过编码压缩,通过网路传输到远端,远端对视频信息进行解码解压缩的过程就是视频通讯;但是在实际的环境中,网络情况千差万别,传输过程中不可避免的会出现数据包丢失,这会给视频通讯的质量带来影响,视频质量会下降,因此,如何在各种各样的网络环境中,实现快速可靠的数据包传输成为一个重要的研究方向。现有技术中丢包重传方法的重传判断通常是基于统计超时的判断,即等待重传包超时后才会发送重传请求,导致重传效率低。
技术实现思路
有鉴于此,本专利技术的目的在于提供数据传输方法、装置和服务器,以提高数据包的重传效率。第一方面,本专利技术实施例提供了一种数据传输方法,该方法应用于接收端,该接收端设置有第一数据输入管道和多级队列;该方法包括:接收发送端发送的数据包,将数据包放入第一数据输入管道;该数据包包括普通数据包和重传数据包;该数据包携带有包序号;将普通数据包从第一数据输入管道输入至多级队列的第一级队列中;根据包序号,判断第一级队列中的普通数据包是否连续;如果普通数据包不连续,向发送端发送重传指令,并接收发送端发送的重传指令对应的重传数据包,将接收到的重传数据包插入至多级队列中缺失的包序号对应的位置;该重传指令中携带有重传数据包的包序号;该重传数据包的包序号包括多级队列中缺失的包序号;将该重传数据包对应的位置之前的数据包,输出至多级队列中重传数据包对应的位置所在队列的下一级队列;在重传数据包对应的位置之前的数据包输出至下一级队列的过程中,如果输出的数据包不连续,再次向发送端发送重传指令,并继续将重传数据包对应的位置之前的数据包输出至下一级队列。进一步地,上述接收发送端发送的数据包,将所述数据包放入第一数据输入管道的步骤之后,包括:根据包序号,判断第一数据输入管道中的数据包是否连续;如果不连续,向发送端发送重传指令,并记录发送重传指令的时刻。进一步地,上述方法还包括:第一数据输入管道中的所有数据包输入至多级队列的第一级队列后,数据包依次从第一级队列输出至第一级队列的下一级队列;在该数据包从第一级队列输出至第一级队列的下一级队列的过程中,判断数据包是否连续;如果不连续,将计算当前时刻与在第一数据输入管道中该不连续的数据包发送重传指令的时刻的时间差,如果该时间差超过预设的时间阈值,则再次发送重传指令,并继续依次将第一级队列的数据包输入至下一级队列;如果该时间差没有超过预设的时间阈值,则第一级队列停止输出,第一级队列的下一级队列中的数据包依次从下一级队列依次输出至下一级队列的下一级队列;在从下一级队列依次输出至下一级队列的下一级队列的过程中,判断下一级队列中的数据包是否连续,如果不连续,将计算当前时刻与该不连续的数据包上一次发送重传指令的时间差,如果该时间差没有超过预设的时间阈值,则下一级队列停止输出;如果该时间差超过预设的时间阈值,则再次发送重传指令,并继续依次将下一级队列的数据包输入至下一级队列的下一级队列,直到该数据包输出至多级队列的最后一级队列中。进一步地,上述将接收到的重传数据包插入至多级队列中缺失的包序号对应的位置的步骤,包括:判断在多级队列的第一级队列中是否搜索到重传指令对应的重传数据包的包序号对应的位置;如果在第一级队列中搜索到对应的位置,将重传指令对应的重传数据包插入至第一级队列中搜索到的位置;如果在第一级队列中搜索不到对应的位置,判断在第一级队列的下一级队列是否搜索到所述重传指令对应的重传数据包的包序号对应的位置;如果在第一级队列的下一级队列搜索到对应的位置,将重传数据包插入至下一级队列中搜索到的位置;如果在第一级队列的下一级队列搜索不到,判断在下一级队列的下一级队列是否搜索到所述重传指令对应的重传数据包的包序号对应的位置,直到搜索到包序号对应的位置。进一步地,上述在重传数据包对应的位置之前的数据包输出至下一级队列的过程中,如果输出的数据包不连续,再次向发送端发送重传指令,并继续将重传数据包对应的位置之前的数据包输出至下一级队列的步骤,包括:在重传数据包对应的位置之前的数据包输出至下一级队列的过程中,判断重传数据包对应的位置之前连续的数据包是否从多级队列中重传数据包对应的位置所在队列输出完毕;如果没有输出完毕,判断未输出的重传数据包对应的位置之前的数据包是否连续;如果连续,将未输出的重传数据包对应的位置之前的数据包输出至下一级队列中;如果不连续,则再次向发送端发送重传指令,并继续将未输出的重传数据包对应的位置之前的数据包输出至所述下一级队列中。第二方面,本专利技术实施例还提供一种数据传输方法,该方法应用于发送端,该方法包括:接收第二数据输入管道发送的数据包,将数据包放入缓存数组中;将缓存数组中的数据包发送至接收端;当发送端接收到重传指令时,解析重传指令;根据解析结果,在缓存数组中查找重传指令对应的数据包,并将重传指令对应的数据包发送至接收端;该重传指令对应的数据包为重传数据包。进一步地,上述重传指令对应的数据包发送至接收端的步骤,包括:判断发送端是否接收到重传指令;如果接收到重传指令,则解析重传指令,根据解析结果从缓存数组中查找重传指令对应的数据包,将重传指令对应的数据包发送至接收端,并再次判断发送端是否接收到重传指令;如果没有接收到重传指令,判断是否接收第二数据输入管道发送的下一个数据包;若接收到下一个数据包,将下一个数据包放入缓存数组中,将缓存数组中的下一个数据包发送至接收端,再次判断发送端是否接收到重传指令;若没有接收到下一个数据包,再次判断发送端是否接收到重传指令。第三方面,本专利技术实施例还提供一种数据传输装置,该装置设置于接收端,该接收端设置有第一数据输入管道和多级队列;该装置包括:数据包接收模块,用于接收发送端发送的数据包,将数据包放入第一数据输入管道;数据包包括普通数据包和重传数据包;数据包携带有包序号;第一判断模块,用于将普通数据包从第一数据输入管道输入至多级队列的第一级队列中;根据包序号,判断第一级队列中的普通数据包是否连续;重传数据包插入模块,用于如果普通数据包不连续,向发送端发送重传指令,并接收发送端发送的重传指令对应的重传数据包,将接收到的重传数据包插入至多级队列中缺失的包序号对应的位置;重传指令中携带有重传数据包的包序号;重传数据包的包序号包括多级队列中缺失的包序号;数据包输出模块,用于将重传数据包对应的位置之前的数据包,输出至多级队列中重传数据包对应的位置所在队列的下一级队列;重传指令发送模块,用于在重传数据包对应的位置之前的数据包输出至下一级队列的过程中,如果输出的数据包不连续,再次向发送端发送重传指令,并继续将重传数据包对应的位置之前的数据包输出至下一级队列。第四方面,本专利技术实施例还提供一种数据传输装置,该装置应用于发送端,该装置包括:缓存数组输入模块,用于接收第二数据输入管道发送的数据包,将数据包放入缓存数组中;数据包发送模块,用于将缓存数组中的数据包发送至接收端;指令解析模块,用于当发送端接收到重传指令时,解析重传指令;重传发送模块,用于根据解析结果,在缓存数组中查找重传指令对应的数据包,并将重传指令对应的数据包发送至接收端。第五方面,本专利技术实施例还提本文档来自技高网...

【技术保护点】
1.一种数据传输方法,其特征在于,所述方法应用于接收端,所述接收端设置有第一数据输入管道和多级队列;所述方法包括:接收发送端发送的数据包,将所述数据包放入所述第一数据输入管道;所述数据包包括普通数据包和重传数据包;所述数据包携带有包序号;将所述普通数据包从所述第一数据输入管道输入至所述多级队列的第一级队列中;根据所述包序号,判断所述第一级队列中的所述普通数据包是否连续;如果所述普通数据包不连续,向所述发送端发送重传指令,并接收所述发送端发送的所述重传指令对应的重传数据包,将接收到的所述重传数据包插入至所述多级队列中缺失的包序号对应的位置;所述重传指令中携带有重传数据包的包序号;所述重传数据包的包序号包括所述多级队列中缺失的包序号;将所述重传数据包对应的位置之前的数据包,输出至所述多级队列中所述重传数据包对应的位置所在队列的下一级队列;在所述重传数据包对应的位置之前的数据包输出至所述下一级队列的过程中,如果输出的所述数据包不连续,再次向所述发送端发送重传指令,并继续将所述重传数据包对应的位置之前的数据包输出至所述下一级队列。

【技术特征摘要】
1.一种数据传输方法,其特征在于,所述方法应用于接收端,所述接收端设置有第一数据输入管道和多级队列;所述方法包括:接收发送端发送的数据包,将所述数据包放入所述第一数据输入管道;所述数据包包括普通数据包和重传数据包;所述数据包携带有包序号;将所述普通数据包从所述第一数据输入管道输入至所述多级队列的第一级队列中;根据所述包序号,判断所述第一级队列中的所述普通数据包是否连续;如果所述普通数据包不连续,向所述发送端发送重传指令,并接收所述发送端发送的所述重传指令对应的重传数据包,将接收到的所述重传数据包插入至所述多级队列中缺失的包序号对应的位置;所述重传指令中携带有重传数据包的包序号;所述重传数据包的包序号包括所述多级队列中缺失的包序号;将所述重传数据包对应的位置之前的数据包,输出至所述多级队列中所述重传数据包对应的位置所在队列的下一级队列;在所述重传数据包对应的位置之前的数据包输出至所述下一级队列的过程中,如果输出的所述数据包不连续,再次向所述发送端发送重传指令,并继续将所述重传数据包对应的位置之前的数据包输出至所述下一级队列。2.根据权利要求1所述的方法,其特征在于,所述接收发送端发送的数据包,将所述数据包放入所述第一数据输入管道的步骤之后,包括:根据所述包序号,判断所述第一数据输入管道中的数据包是否连续;如果不连续,向所述发送端发送重传指令,并记录发送所述重传指令的时刻。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:所述第一数据输入管道中的所有数据包输入至所述多级队列的第一级队列后,所述数据包依次从所述第一级队列输出至所述第一级队列的下一级队列;在所述数据包从所述第一级队列输出至所述第一级队列的下一级队列的过程中,判断所述数据包是否连续;如果不连续,将计算当前时刻与在所述第一数据输入管道中所述不连续的数据包发送重传指令的时刻的时间差,如果所述时间差超过预设的时间阈值,则再次发送重传指令,并继续依次将所述第一级队列的数据包输入至所述下一级队列;如果所述时间差没有超过预设的时间阈值,则所述第一级队列停止输出,所述第一级队列的下一级队列中的数据包依次从所述下一级队列依次输出至所述下一级队列的下一级队列;在从所述下一级队列依次输出至所述下一级队列的下一级队列的过程中,判断所述下一级队列中的数据包是否连续,如果不连续,将计算当前时刻与所述不连续的数据包上一次发送重传指令的时间差,如果所述时间差没有超过预设的时间阈值,则所述下一级队列停止输出;如果所述时间差超过预设的时间阈值,则再次发送重传指令,并继续依次将所述下一级队列的数据包输入至所述下一级队列的下一级队列,直到所述数据包输出至所述多级队列的最后一级队列中。4.根据权利要求1所述的方法,其特征在于,所述将接收到的所述重传数据包插入至所述多级队列中缺失的包序号对应的位置的步骤,包括:判断在所述多级队列的第一级队列中是否搜索到所述重传指令对应的重传数据包的包序号对应的位置;如果在所述第一级队列中搜索到对应的位置,将所述重传指令对应的重传数据包插入至所述第一级队列中搜索到的位置;如果在所述第一级队列中搜索不到对应的位置,判断在所述第一级队列的下一级队列是否搜索到所述重传指令对应的重传数据包的包序号对应的位置;如果在所述第一级队列的下一级队列搜索到对应的位置,将所述重传数据包插入至所述下一级队列中搜索到的位置;如果在所述第一级队列的下一级队列搜索不到,判断在所述下一级队列的下一级队列是否搜索到所述重传指令对应的重传数据包的包序号对应的位置,直到搜索到所述包序号对应的位置。5.根据权利要求1所述的方法,其特征在于,所述在所述重传数据包对应的位置之前的数据包输出至所述下一级队列的过程中,如果输出的所述数据包不连续,再次向所述发送...

【专利技术属性】
技术研发人员:马辉辉董家炜李树超
申请(专利权)人:北京数码视讯技术有限公司
类型:发明
国别省市:北京,11

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

1