CN115883680B 一种基于arq的udp协议数据传输方法、系统及设备(天翼视联科技有限公司)_第1页
CN115883680B 一种基于arq的udp协议数据传输方法、系统及设备(天翼视联科技有限公司)_第2页
CN115883680B 一种基于arq的udp协议数据传输方法、系统及设备(天翼视联科技有限公司)_第3页
CN115883680B 一种基于arq的udp协议数据传输方法、系统及设备(天翼视联科技有限公司)_第4页
CN115883680B 一种基于arq的udp协议数据传输方法、系统及设备(天翼视联科技有限公司)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(19)国家知识产权局(12)发明专利道溪沁街8号中国电信浙江创新园一公司11227H04L69/22(2022.01)H04L1/18(2023.01)审查员杨浩磊本申请涉及一种基于ARQ的UDP协议数据传收端根据数据上传请求向发送端回传窗口信息获取发送端向接收端传输的应用数据和确认报文,将应用数据根据UDP协议生成m个分片报文,并将m个分片报文存储至发送队列发送鹉根据确认报文向接收端发送数据上传请求,接收端根据数据上传请求向发送端回传窗口信息报文发送端根据窗口信息报文从述发送队列中选取n个分片报文,并按照丢包重发策略将n个分片报文逐一传送至接收端接收端对接收的每个分片报文进行解析,得到分片报文和与该分片报文对应的报文序号,若报文序号为期望接收报文序号,则更新接收端的期望接收报文序号以及接收端向发送端回传应答指令2获取发送端向接收端传输的应用数据和确认报文,将所述应用数据根据UDP协议生成m个分片报文,并将m个所述分片报文存储至发送队列;所述发送端根据所述确认报文向所述接收端发送数据上传请求,所述接收端根据所述数据上传请求向所述发送端回传窗口信息报文;所述发送端根据所述窗口信息报文从所述发送队列中选取n个分片报文,并按照丢包重发策略将n个所述分片报文逐一传送至所述接收端;所述接收端对接收的每个所述分片报文进行解析,得到分片报文和与该分片报文对应的报文序号,若所述报文序号为期望接收报文序号,则更新所述接收端的期望接收报文序号以及所述接收端向所述发送端回传应答指令;其中,所述应答指令包括最大接收报文序号和丢包率,所述窗口信息报文包括窗口信所述接收端对接收所述发送端发送的数据进行解析,得到解析报文;若所述解析报文不为所述分片报文,则清除所述解析报文并更新期望接收报文序号;若所述解析报文的当前发送窗口比接收窗口小,则调整所述发送窗口的大小和所述发送窗口的最容纳字节数;调整所述发送窗口的大小和所述发送窗口的最容纳字节数包括:若sw<rmtv且sw<ssthresh,则sw+1,incr;=incr;-1+mss;若sw>rmtw,则sw=rmtw,incr;=rmtw*mss;式中,incr₀=sw*mss,incr:为第i次调整发送窗口的最容纳字节数,rw为门限增量倍数值,mss为发送端与接收端之间的最大传输单元,sw为发送窗口的大小,rmtw为接收窗口的计算所述接收端的丢包率的公式为:丢包率=(期望接收的分片报文数量一实际接收的分片报文数量)/期望接收的分片报文数量*100%,期望接收的分片报文数量=接收队列中分片报文的最大报文序号一接收队列中分片报文的最小报文序号+1;实际接收的分片报文数量=接收队列中分片报文的总数;判断所述解析报文的指令类型包括:若所述解析报文的指令类型为应答确认指令,更新所述分片报文的超时重传时间,从接收缓冲区移除已确认的所述分片报文,更新下一个期望接收到的报文序号;若所述解析报文的指令类型为发送报文指令,则将所述分片报文添加到接收缓冲区,再次判断该分片报文为期望接收报文,且接收窗口大于接收队列,则将该分片报文添加到接收队列,并从接收缓冲区移除该分片报文;若所述解析报文的指令类型为窗口探测报文指令,则记录探测报文处理任务,在下一次循环时执行该任务,给所述接收端返回窗口信息。2.根据权利要求1所述的基于ARQ的UDP协议数据传输方法,其特征在于,所述接收端根据所述数据上传请求向所述发送端回传窗口信息报文之前,该基于ARQ的UDP协议数据传输方法包括:根据所述数据上传请求,查询所述接收端的接收窗口是否接收数据的剩余空间;3若所述接收端的接收窗口没有接收数据的剩余空间,则所述发送端向所述接收端发送窗口探测报文;所述接收端根据所述窗口探测报文向所述发送端回传窗口信息报文;若所述接收端的接收窗口有接收数据的剩余空间,所述接收端根据所述剩余空间向所述发送端回传窗口信息报文;其中,所述窗口信息报文的窗口信息包括接收端接收报文数据的接收窗口大小。3.根据权利要求2所述的基于ARQ的UDP协议数据传输方法,其特征在于,所述发据所述窗口信息报文从所述发送队列中选取n个分片报文包括:根据所述接收窗口大小和分片报文的发送窗口大小,确定所述发送端向所述接收端传送分片报文的个数,并根据个数从所述发送队列中选取n个分片报文。4.根据权利要求1所述的基于ARQ的UDP协议数据传输方法,其特征在于,按照丢策略将每个所述分片报文传送至所述接收端过程中,包括:所述发送端每向所述接收端发送一次所述分片报文,则更新一次与该分片报文对应的重发送次数,若所述重发送次数大于第一预设值,则所述发送端重新将该分片报文传送至所述接收端;获取所述发送端与所述接收端之间传输分片报文的被跳过次数,若所述被跳过次数大于第二预设值,则所述发送端将被跳过的分片报文重新传送至所述接收端。策略将每个所述分片报文传送至所述接收端之后,包括:若在t时间后,所述发送端未接收到所述应答指令,则所述发送端重新将该分片报文传送至所述接收端。6.根据权利要求1所述的基于ARQ的UDP协议数据传输方法,其特征在于,包括:根据所述最大接收报文序号清除所述发送端中已被所述接收端接收的分片报文,以及根据所述丢包率调整所述发送端的拥塞控制窗口。7.根据权利要求6所述的基于ARQ的UDP协议数据传输方法,其特征在于,根据所指令调整所述发送端的拥塞控制窗口的步骤包括:若所述丢包率不大于第一阈值,增大所述拥塞控制窗口;若所述丢包率大于第一阈值且不大于第二阈值,所述拥塞控制窗口的大小不变;若所述丢包率大于第二阈值,按照调整规则调整所述拥塞控制窗口;调整后的拥塞控制窗口。和拥塞控制窗口,所述发送端和所述接收端按照权利要求1-7任意一项所述的基于ARQ的UDP协议数据传输方法进行数据传输;所述发送队列,用于存储应用数据生成的m个分片报文;所述发送线程,用于从所述发送队列选取待发送的分片报文传送至所述发送缓冲区;所述发送缓冲区,用于存放待发送的分片报文;所述接收队列,用于存储接收的分片报文;所述接收线程,用于将所述发送端发送的分片报文传送至所述接收缓冲区;所述接收缓冲区,用于存放接收的分片报文。4所述存储器,用于存储程序代码,并将所述程序代码传输给所述处理器;所述处理器,用于根据所述程序代码中的指令执行如权利要求1-7任意一项所述的基5一种基于ARQ的UDP协议数据传输方法、系统及设备技术领域背景技术[0002]随着监控视频的广泛应用,很多城乡都安装了大量摄像头,不同地区的网络环境[0003]现有视频数据的传输是采用tcp协议进行网络传输,在网络抖动严重的环境下,视协议对流媒体服务进行数据传输实现画面秒开、延迟时间大于1-3秒,造成延迟的主要原因是tcp协议在传输过程中的3次握手建立连接比较耗时、重传机制效率低造成的。发明内容[0004]本申请实施例提供了一种基于ARQ的UDP协议数据传输方法、系统及设备,用于解决现有采用tcp协议传输流媒体的视频数据,存在延迟时间长、画面不流畅、花屏等的技术[0005]为了实现上述目的,本申请实施例提供如下技术方案:[0007]获取发送端向接收端传输的应用数据和确认报文,将所述应用数据根据UDP协议[0008]所述发送端根据所述确认报文向所述接收端发送数据上传请求,所述接收端根据所述数据上传请求向所述发送端回传窗口信息报文;[0009]所述发送端根据所述窗口信息报文从所述发送队列中选取n个分片报文,并按照丢包重发策略将n个所述分片报文逐一传送至所述接收端;[0010]所述接收端对接收的每个所述分片报文进行解析,得到分片报文和与该分片报文对应的报文序号,若所述报文序号为期望接收报文序号,则更新所述接收端的期望接收报文序号以及所述接收端向所述发送端回传应答指令;[0011]其中,所述应答指令包括最大接收报文序号和丢包率,所述窗口信息报文包括窗[0012]优选地,所述接收端根据所述数据上传请求向所述发送端回传窗口信息报文之前,该基于ARQ的UDP协议数据传输方法包括:[0013]根据所述数据上传请求,查询所述接收端的接收窗口是否接收数据的剩余空间;[0014]若所述接收端的接收窗口没有接收数据的剩余空间,则所述发送端向所述接收端发送窗口探测报文;所述接收端根据所述窗口探测报文向所述发送端回传窗口信息报文;[0015]若所述接收端的接收窗口有接收数据的剩余空间,所述接收端根据所述剩余空间向所述发送端回传窗口信息报文;6[0016]其中,所述窗口信息报文的窗口信息包括接收端接收报文数据的接收窗口大小。[0017]优选地,所述发送端根据所述窗口信息报文从所述发送队列中选取n个分片报文包括:根据所述接收窗口大小和分片报文的发送窗口大小,确定所述发送端向所述接收端传送分片报文的个数,并根据个数从所述发送队列中选取n个分片报文。[0018]优选地,按照丢包重发策略将每个所述分片报文传送至所述接收端过程中,包括:所述发送端每向所述接收端发送一次所述分片报文,则更新一次与该分片报文对应的重发送次数,若所述重发送次数大于第一预设值,则所述发送端重新将该分片报文传送至所述接收端;[0019]获取所述发送端与所述接收端之间传输分片报文的被跳过次数,若所述被跳过次数大于第二预设值,则所述发送端将被跳过的分片报文重新传送至所述接收端。[0020]优选地,按照丢包重发策略将每个所述分片报文传送至所述接收端之后,包括:若在t时间后,所述发送端未接收到所述应答指令,则所述发送端重新将该分片报文传送至所述接收端。[0021]优选地,该基于ARQ的UDP协议数据传输方法包括:根据所述最大接收报文序号清除所述发送端中已被所述接收端接收的分片报文,以及根据所述丢包率调整所述发送端的拥塞控制窗口。[0022]优选地,根据所述应答指令调整所述发送端的拥塞控制窗口的步骤包括:[0023]若所述丢包率不大于第一阈值,增大所述拥塞控制窗口;[0024]若所述丢包率大于第一阈值且不大于第二阈值,所述拥塞控制窗口的大小不变;[0025]若所述丢包率大于第二阈值,按照调整规则调整所述拥塞控制窗口;[0026]其中,所述调整规则为:W=Wo*(1-D),W₀为发送端当前的拥塞控制窗口,D为丢包[0027]优选地,该基于ARQ的UDP协议数据传输方法包括:所述接收端对接收所述发送端发送的数据进行解析,得到解析报文;若所述解析报文不为所述分片报文,则清除所述解析报文并更新期望接收报文序号。[0028]本申请还提供一种基于ARQ的UDP协议数据传输系统,包括发送端和接收端,所述队列和拥塞控制窗口,所述发送端和所述接收端按照上述所述的基于ARQ的UDP协议数据传输方法进行数据传输;[0029]所述发送队列,用于存储应用数据生成的m个分片报文;[0030]所述发送线程,用于从所述发送队列选取待发送的分片报文传送至所述发送缓冲[0031]所述发送缓冲区,用于存放待发送的分片报文;[0032]所述接收队列,用于存储接收的分片报文;[0033]所述接收线程,用于将所述发送端发送的分片报文传送至所述接收缓冲区;[0034]所述接收缓冲区,用于存放接收的分片报文。[0035]本申请还提供一种终端设备,包括处理器和存储器;[0036]所述存储器,用于存储程序代码,并将所述程序代码传输给所述处理器;[0037]所述处理器,用于根据所述程序代码中的指令执行上述所述的基于ARQ的UDP协议7数据传输方法。[0038]从以上技术方案可以看出,本申请实施例具有以下优点:该基于ARQ的UDP协议数据传输方法、系统及设备,该方法包括获取发送端向接收端传输的应用数据和确认报文,将应用数据根据UDP协议生成m个分片报文,并认报文向接收端发送数据上传请求,接收端根据数据上传请求向发送端回传窗口信息报文;发送端根据窗口信息报文从发送队列中选取n个分片报文,并按照丢包重发策略将n个分片报文逐一传送至接收端;接收端对接收的每个分片报文进行解析,得到分片报文和与该分片报文对应的报文序号,若报文序号为期望接收报文序号,则更新接收端的期望接收报文序号以及接收端向发送端回传应答指令。通过该基于ARQ的UDP协议数据传输方法实现发送端与接收端之间视频数据的传输,该UDP协议数据传输方法能够可以降低直播视频传输的延迟,画面延迟可以缩短达到500毫秒,直播画面可以实现秒快,增强用户的服务体验,在网络环境频繁抖动下,可以解决画面卡顿,画面播放不畅度问题,解决了现有采用tcp协附图说明[0039]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。[0040]图1为本申请实施例所述的基于ARQ的UDP协议数据传输方法的步骤流程图;[0041]图2为本申请实施例所述的基于ARQ的UDP协议数据传输方法中分片报文的结构具体实施方式[0042]为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本申请一部分实施例,而非全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。[0044]自动重传请求(AutomaticRepeat-reQuest,ARQ)是OSI模型中数据链路层的错误面确认(PositiveAcknowledg确认即以重传(NegativeAcknowledgmentandRetransmission)等机制。[0045]Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,UserDatagramProtocol)。UDP为应用程序提供了一种无需建立连接就可以发送封装的IP数据包的方法。8[0047]实施例一:[0048]图1为本申请实施例所述的基于ARQ的UDP协议数据传输方法的步骤流程图,图2为本申请实施例所述的基于ARQ的UDP协议数据传输方法中分片报文的结构图。[0050]S10.获取发送端向接收端传输的应用数据和确认报文,将应用数据根据UDP协议[0051]需要说明的是,在步骤S10中一是获取发送端向接收端传输的应用数据和确认报文;二是将应用数据根据UDP协议生成m个分片报文,并将m个分片报文存储至发送队列。在本实施例中,通过UDP协议将应用数据分为m个分片报文是通信领域比较成熟的技术,此处不做详述。其中,网络数据指从网络中获取的数据,此数据通过报文协议封装得到应用数[0052]在本申请实施例中,发送端和接收端均包括发送线程、发送缓冲区、发送队列、接[0053]需要说明的是,在发送端和接收端中均创新udpsocket,创建的udpsocket包括实施例中,发送端和接收端的初始化期望接收报文序号均为0。发送端将应用数据依据UDP端均可以为客户端或服务端,若发送端为客户端,则接收端为服务端;若发送端为服务端,则接收端为客户端。长度、下次超时重传时间、分片超时重传时间、收到确认被跳过次数和分片报文重发送次[0055]需要说明的是,报文标识(flag):占用2字节、其报文以$#开头,用于判断报文协议。会话标识(session):占用30字节,此字段标识通信双方一次完整会话,很多时候,通信双方会出现多个业务场景,如视频传输、语音对讲、云台控制等;因此使用会话标识区分不口探测:标识该报文为探测报文,请求接收端返回接收窗口大小等信息;窗口信息:标识该报文为窗口信息报文,告知接收端当前接收端口大小等信息。丢包率lossrate:占用2字节,标识传输分片报文丢包率。分片idfrg:占用32字节,在不同的网络中都有最大的网络传输单元,需要传输的数据如果大于最大传输单元,网络路由会将其进行分片后再传输;为了减少网络路由分片,提高转发速率,因此在应用层协议将数据进行分片,然后进行网络发送;每一个分片都需要分片id,方便接收端收到分片数据后进行重组。剩余接收窗口大小cwnd:占用32字节,发送报文的时候附带发送端剩余接收窗口大小,接收端能及时获取发送端的窗口信息,方便快速调整窗口发送缓冲区。时间戳ts:占用32字节,标识每一个报文生成的时间。待接收报文序列号una:占用32字节,接收端期待下一个报文的序列号,通过此信息,发送端可以知道接收到已收到的报文序列号。数据长度datelen:占用32字节,分片载荷数9据的长度。下次超时重传时间resendts:占用32字节,用于报文重传,在下次超时重传的时间内还没收到应答指令,判断报文已丢失,需要重传此报文。分片超时重传时间rto:占用32字节,记录报文超时重传的时间间隔。收到确认被跳过的次数:占用32字节,用于判断当前3次,可以认为报文2已经丢失,不等待报文2的确认可以马上重传。分片报文重发送次数xmit:占用32字节,记录此分片报文重发送次数,如果重传次数超过预设值,可以认为网络[0056]在本申请实施例中,获取发送端向接收端传输的应用数据和确认报文之前,该基于ARQ的UDP协议数据传输方法还包括:发送端向接收端发送会话创建指令,接收端根据会话创建指令应答发送端,以使发送端与接收端之间建立连接。[0057]S20.发送端根据确认报文向接收端发送数据上传请求,接收端根据数据上传请求向发送端回传窗口信息报文。[0058]需要说明的是,在步骤S20中能够让发送端向接收端传输数据的数据上传请求,发送端向接收端发送确认报文这个数据上传请求,接收端根据数据上传请求以及结合自身情况向发送端回传窗口信息报文。在本实施例中,在步骤S20中,主要是发送端确认接收端能够接收分片报文的窗口信息。[0059]S30.发送端根据窗口信息报文从述发送队列中选取n个分片报文,并按照丢包重发策略将n个分片报文逐一传送至接收端。[0060]需要说明的是,在步骤S30中发送端根据接收端的窗口信息确定能够向接收端传输的n个分片报文。在本实施例中,发送端的发送线程从发送队列中取n个分片报文放到发送缓冲区中,在周期定时间隔中,通过丢包重发策略,从发送缓冲区取符合发送的条件的分片报文发送给接收端,同时,发送端通知上层当前发送缓冲区的空闲容量。[0061]S40.接收端对接收的每个分片报文进行解析,得到分片报文和与该分片报文对应的报文序号,若报文序号为期望接收报文序号,则更新接收端的期望接收报文序号以及接收端向发送端回传应答指令。其中,应答指令包括最大接收报文序号和丢包率,窗口信息报[0062]需要说明的是,接收端接收分片报文后,将接收的分片报文保存存进接收缓冲区,判断与该分片报文对应的报文序号是否为期望接收报文序号,若是,则将该分片报文添加到接收队列,期望接收报文号自动更新,即是期望接收报文号加1,且给发送端返回具有最大接收报文序号的应答指令。在本实施例中,发送端收到接收端已接收的最大接收报文序号,此时可以判断比此报文序号小的分片报文为接收端已收到的分片报文,将这些分片报文从发送端的发送缓冲区移除、删除或清除。[0063]在本申请实施例中,该基于ARQ的UDP协议数据传输方法包括:在接收端接收的分片报文的报文序号为期望接收报文序号,计算接收端的丢包率,并将丢包率通过应答指令传回给发送端。[0064]需要说明的是,计算接收端的丢包率的公式为:丢包率=(期望接收的分片报文数量—实际接收的分片报文数量)/期望接收的分片报文数量*100%。期望接收的分片报文数量=接收队列中分片报文的最大报文序号—接收队列中分片报文的最小报文序号+1;实际接收的分片报文数量=接收队列中分片报文的总数。[0065]本申请提供的基于ARQ的UDP协议数据传输方法,包括获取发送端向接收端传输的发送队列;发送端根据确认报文向接收端发送数据上传请求,接收端根据数据上传请求向发送端回传窗口信息报文;发送端根据窗口信息报文从发送队列中选取n个分片报文,并按照丢包重发策略将n个分片报文逐一传送至接收端;接收端对接收的每个分片报文进行解析,得到分片报文和与该分片报文对应的报文序号,若报文序号为期望接收报文序号,则更新接收端的期望接收报文序号以及接收端向发送端回传应答指令。通过该基于ARQ的UDP协议数据传输方法实现发送端与接收端之间视频数据的传输,该UDP协议数据传输方法能够可以降低直播视频传输的延迟,画面延迟可以缩短达到500毫秒,直播画面可以实现秒快,增强用户的服务体验,在网络环境频繁抖动下,可以解决画面卡顿,画面播放不畅度问题,解决了现有采用tcp协议传输流媒体的视频数据,存在延迟时间长、画面不流畅、花屏等的技术问题。[0066]在本申请的一个实施例中,接收端根据数据上传请求向发送端回传窗口信息报文[0067]根据数据上传请求,查询接收端的接收窗口是否接收数据的剩余空间;[0068]若接收端的接收窗口没有接收数据的剩余空间,则发送端向接收端发送窗口探测报文;接收端根据窗口探测报文向发送端回传窗口信息报文;[0069]若接收端的接收窗口有接收数据的剩余空间,接收端根据剩余空间向发送端回传窗口信息报文;[0070]其中,窗口信息报文的窗口信息包括接收端接收报文数据的接收窗口大小;[0071]发送端根据窗口信息报文从发送队列中选取n个分片报文包括:根据接收窗口大小和分片报文的发送窗口大小,确定发送端向所述接收端传送分片报文的个数,并根据个数从发送队列中选取n个分片报文。[0072]需要说明的是,该基于ARQ的UDP协议数据传输方法需要根据接收端接收窗口的大小确定发送端发送分片报文的个数。在本实施例中,发送端向接收端发送分片报文之前,先确定接收端是否存在接收分片报文的窗口(窗口指的是接收数据的剩余空间)。在接收端没有接收分片报文的窗口时,则发送端需要增加窗口探测任务或根据已有的窗口探测任务向接收端发送窗口探测报文,之后接收端根据接收窗口探测报文的窗口信息任务向发送端回传窗口信息报文,而发送端根据窗口信息报文的接收窗口大小以及每个分片报文的窗口大小计算得到发送端能够向接收端传输分片报文的个数。[0073]在本申请实施例中,若当前发送窗口的容量大小为a,接收端的接收窗口的容量大[0074]在本申请的一个实施例中,按照丢包重发策略将每个分片报文传送至接收端过程一次与该分片报文对应的重发送次数,若重发送次数大于第一预设值,则发送端重新将该分片报文传送至接收端;[0075]获取发送端与接收端之间传输分片报文的被跳过次数,若被跳过次数大于第二预设值,则发送端将被跳过的分片报文重新传送至接收端。[0076]需要说明的是,在发送端将n个分片报文增加至发送缓冲区中,发送端每将一个分11片报文传送至接收端后,扫描一次发送缓冲区,更新一次与每个分片报文对应的重发送次数和被跳过次数。在本实施例中,第一预设值和第二预设值能够根据需求设置,此处不作详细限定。[0077]在本申请的一个实施例中,按照丢包重发策略将每个分片报文传送至接收端之送端重新将该分片报文传送至接收端。[0078]需要说明的是,发送端向接收端发送分片报文,发送端需要等待接收端回复收到该分片报文的应答直流,如果等待了时间t都没有收到接收端回传的应答指令,则认为分片超时,则需要发送端重新将该分片报文传送至接收端。在本实施例中,时间t的数值可以根[0079]在本申请实施例中,该基于ARQ的UDP协议数据传输方法通过分片超时、重发送次数和被跳过次数超过阈值均需要发送端向接收端重新发送与之对应的分片报文,确保数据传输的完整性。[0080]在本申请的一个实施例中,该基于ARQ的UDP协议数据传输方法包括:根据最大接收报文序号清除发送端中已被接收端接收的分片报文,以及根据丢包率调整发送端的拥塞控制窗口;根据应答指令调整发送端的拥塞控制窗口的步骤包括:[0082]若丢包率大于第一阈值且不大于第二阈值,拥塞控制窗口的大小不变;[0083]若丢包率大于第二阈值,按照调整规则调整拥塞控制窗口;调整后的拥塞控制窗口。[0085]需要说明的是,发送端收到接收端返回的丢包率,依据丢包率数值不同分别处理。若丢包率小于等于第一阈值,第一阈值可以优选为2%,增大拥塞控制窗口,便于发送端发送更多的数据。若丢包率大于第一阈值2%且小于等于第二阈值,第二阈值可以优选为10%,发送端的拥塞控制窗口不变,即发送端的发送缓冲区大小不变。若丢包率大于第二阈值,发送端按照调整规则调整拥塞控制窗口的大小。[0086]在本申请的一个实施例中,该基于ARQ的UDP协议数据传输方法包括:接收端对接收发送端发送的数据进行解析,得到解析报文;若解析报文不为分片报文,则清除解析报文并更新期望接收报文序号。[0087]需要说明的是,该基于ARQ的UDP协议数据传输方法的接收端通过UDP协议接收发送端发送的数据,首先将接收的数据放置至接收缓冲区中,之后对接收缓冲区的数据依据UDP协议进行解析,得到解析报文;若解析报文不为分片报文,则清除解析报文并更新期望接收报文序号。若解析报文为分片报文,通过解析报文的信息,得到接收端接收窗口大小,并记录下来,通过解析报文的信息得到接收端期望收到的下一个报文序号,此时从发送缓冲区移除比下一个报文序号小的分片报文,更新下一个期望接收到的报文序号。[0088]在本申请实施例中,该基于ARQ的UDP协议数据传输方法还包括:判断解析报文的指令类型,[0089]若解析报文的指令类型为应答确认指令,更新分片报文的超时重传时间,从接收缓冲区移除已确认的分片报文,更新下一个期望接收到的报文序号;[0090]若解析报文的指令类型为发送报文指令,则将分片报文添加到接收缓冲区,再次判断该分片报文为期望接收报文,且接收窗口大于接收队列,则将该分片报文添加到接收队列,并从接收缓冲区移除该分片报文;[0091]若解析报文的指令类型为窗口探测报文指令,则记录探测报文处理任务,在下一次循环时执行该任务,给接收端返回窗口信息。[0092]在本申请的实施例中,若解析报文的当前发送窗口比接收窗口小,则调整发送窗口的大小和发送窗口的最容纳字节数。[0093]需要说明的是,发送端与接收端之间的最大传输单元记为mss,发送窗口记为sw,发送窗口的最容纳字节数记为incr,接收窗口记为rmtw,接收端的门限记为ssthresh。发送窗口的最容纳字节数incr=Sw*mss。调整发送窗口的大小和发送窗口的最容纳字节数的步骤包括:[0097]若sw>rmtw,则sw=rmtw,incr;=rmtw*mss。[0098]式中,incr;为第i次调整发送窗口的最容纳字节数,rw为门限增量倍数值。[0099]实施例二:[0100]本申请还提供一种基于ARQ的UDP协议数据传输系统,包括发送端和接收端,发送端和接收端均包括发送线程、发送缓冲区、发送队列、接收线程、接收缓冲区、接收队列和拥塞控制窗口,发送端和接收端按照上述的基于ARQ的UDP协议数据传输方法进行数据传输;[0101]发送队列,用于存储应用数据生成的m个分片报文;[0102]发送线程,用于从发送队列选取待发送的分片报文传送至发送缓冲区;[0103]发送缓冲区,用于存放待发送的分片报文;[0104]接收队列,用于存储接收的分片报文;[0105]接收线程,用于将发送端发送的分片报文传送至接收缓冲区;[0106]接收缓冲区,用于存放接收的分片报文。[0107]需要说明的是,实施例二中ARQ的UDP协议数据传输方法的内容已经在实施例一中详细阐述了,在实施例二不再对ARQ的UDP协议数据传输方法的内容重复阐述。[0108]在本申请实施例中,若发送端为客户端,接收端为流媒体服务端,应用数据通过设备端端提供,客户端负责播放音视频流,流媒体服务负责转发设备推流的音视频流,设备端负责给流媒体推送音视频流,则基于ARQ的UDP协议数据传输系统的工作流程是:[0109]客户端向流媒体服务端发起connect连接,报文指令为会话创建指令,流媒体服务端收到会话创建指令后,给客户端应答,进入会话创建完成状态;[0110]设备端端创建udpsocket,开启一个网络数据发送线程,开启一个网络接收数据线程,创建发送缓冲区csbuf,发送队列csqueue,接收缓冲区crbuf,接收队列crqueue,拥塞控制窗口ccwnd,初始化期望接收报文序号为0;设备端向流媒体服务端发起connect连接,报文指令为会话创建指令,流媒体服务端收到会话创建指令后,给设备端应答,进入会话创建完成状态;[0111]客户端通过报文协议向流媒体服务端发送设备直播请求,流媒体服务将直播请求下发到设备端,设备端收到直播请求后开始向流媒体推送音视频流;[0112]设备端将音视频数据封装成私有协议包依据UDP协议组成分片报文,并加入发送队列csqueue,发送线程从csqueue中取分片报文放到发送缓冲区,在周期定时间隔中,通过丢包重发策略,从发送缓冲区取符合发送的条件的分片数据发送给服务端,并通知上层当前发送缓冲区的空闲容量;[0113]流媒体服务端收到分片报文后,将保存存进接收缓冲区srbuf,判断该分片报文序号是否为期望接收报文序号;如果是,则将该报文添加到接收队列srqueue,期望接收报文号自增1;给设备端返回已收到的报文最大序号;定时计算丢包率,并返回给设备端;[0114]设备端收到流媒体服务端已接收的最大接收报文序号,此时可以判断比此报文序号小的分片报文为流媒体服务端已收到的分片报文,将这些分片报文从客户端发送缓冲区移除;设备端收到流媒体服务返回的丢包率,依据丢包率数值不同分别处理,若丢包率小于等于2%,增大设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论