一种基于UDP的可靠传输方法技术

技术编号:14030104 阅读:64 留言:0更新日期:2016-11-19 18:28
一种基于UDP的可靠传输方法,是一种UDP层上的可靠传输协议,可靠传输协议包括可靠传输、不可靠传输和乱序传输;可靠传输,用于在两个上层应用之间提供可靠的数据传输,接收的数据报需要进行确认,丢失的数据报需要进行重传,接收到的数据报按报文可靠序列号的顺序提交给上层应用;不可靠传输,用于在两个上层应用之间提供不可靠的数据传输,接收的数据报不需要进行确认,丢失的数据报不需要进行重传,接收到的数据报按报文不可靠序列号的顺序提交给上层应用;乱序传输,用于在两个上层应用之间提供乱序的数据传输,接收的数据报不需要进行确认,丢失的数据不需要进行重传,接收到的数据报直接按接收顺序提交给上层应用。本发明专利技术可靠性良好。

【技术实现步骤摘要】

本专利技术涉及在UDP层之上建立一种可靠传输的方法,是一种基于UDP的可靠传输方法
技术介绍
随着互联网技术的快速发展,网络应用增长速度飞快。应用对网络的要求也越来越高。通常游戏应用要求网络具有较低的延时且能够频繁地收发数据。TCP由IETF制定的一个传输层的控制协议,它是面向连接的、基于字节流的、可靠的传输控制协议。TCP层是位于IP层之上,应用层之下的中间层。它为应用层提供可靠的数据传输、拥塞控制等功能。TCP并不适用于这种情形,因为它具有较高的延时和流方向。UDP是由IETF制定的一个面向无连接的、基于数据报的、不可靠的传输层协议。然而UDP不具有可靠的数据传输、流量控制和拥塞控制,所以UDP本身也不适合这种情况。应用可以同时使用UDP和TCP以便获取两者的功能。但是,由此产生的协议组合仍然有很多不足之处。例如TCP缺乏通过建立多路套接字来完成多路通信,由于其缓冲机制使得TCP的包划分十分复杂。UDP缺乏序列号、连接管理和带宽资源管理等机制,并且限制了数据包的大小。因此,采用UDP协议进行可靠数据传输的方法近年来获得了迅速的发展。
技术实现思路
为了克服已有UDP协议数据传输方式的可靠性较低的不足,本专利技术提供一种可靠性良好的基于UDP的可靠传输方法本专利技术解决其技术问题所采用的技术方案是:一种基于UDP的可靠传输方法,所述可靠传输方法是一种UDP层上的可靠传输协议,所述可靠传输协议包括可靠传输、不可靠传输和乱序传输;所述可靠传输,用于在两个上层应用之间提供可靠的数据传输,接收的数据报需要进行确认,丢失的数据报需要进行重传,接收到的数据报按报文可靠序列号的顺序提交给上层应用;所述不可靠传输,用于在两个上层应用之间提供不可靠的数据传输,接收的数据报不需要进行确认,丢失的数据报不需要进行重传,接收到的数据报按报文不可靠序列号的顺序提交给上层应用;所述乱序传输,用于在两个上层应用之间提供乱序的数据传输,接收的数据报不需要进行确认,丢失的数据不需要进行重传,接收到的数据报直接按接收顺序提交给上层应用。进一步,所述可靠传输中,通过提供确认机制和超时重传机制来实现基于UDP的可靠传输:当本地主机需要发送可靠数据报时,首先将待发送数据报的相应标志位设置为可靠数据报;然后将该可靠数据报插入到待发送可靠消息列队中等待发送;发送函数周期性遍历各个待发送消息列队,将列队中的消息进行封装加上一个协议头并调用UDP层的套接字sendmsg()函数发送;设定3个待发送消息列队:待发送确认消息列队、待发送可靠消息列队和待发送不可靠消息列队,这三个消息列队用于存放待发送的确认消息、可靠消息和不可靠消息,消息封装的规则如下:1)、协议优先查询待发送确认消息列队,如果待发送确认消息列队不为空,则将列队中的若干确认消息取出准备封装;2)、如果待发送确认消息列队为空或者待发送确认消息列队中的确认消息已取出准备封装,则查询待发送可靠消息列队,并将该列队中满足发送条件的可靠消息取出准备封装;3)、最后查询待发送不可靠消息列队,将该列队中满足发送条件的不可靠消息取出封装发送;4)、如果封装数据报中包含可靠消息,则在该协议头添加一个时间戳选项,如果该封装数据报中不含有可靠消息,则不需要添加时间戳选项,只需包含对等主机号即可。再进一步,接收端周期性调用接收函数接收来自各个远程主机的可靠数据报;然后根据数据报报头中的对等主机号选择相应的对等主机进行处理;处理函数将已接收的可靠数据报根据可靠序列号按从小到大的顺序进行排序并将排好序的数据报提交给上层应用;然后根据接收数据报的可靠序列号创建一个确认消息,然后将该确认消息插入到待发送确认消息列队中等待发送;发送端每次接收到远程主机发回的确认消息时,都根据确认消息中的已接收时间戳字段计算本次传输的实时RTT(Round Trip Time)值,并更新RTT平滑估计器的估计值R和RTT平滑估计器均值标准差D,然后将该确认消息中已接收可靠序列号指向的消息从已发送可靠消息列队中移除,并释放相应的内存资源;协议周期性调用检查超时函数,当已发送可靠消息列队中的消息经过往返超时值还没收到该消息的确认消息时,将该消息从已发送可靠消息列队移至待发送可靠消息列队的队首进行重传。超时重传的策略为:首次超时的时间为:RTO=R+4D其中,R为RTT平滑估计器,D为RTT平滑估计器的均值标准差,平滑估计器R的计算式如下: R = R 2 R + β * D + β * D R + β * D * M ]]>其中,加权因子β=5,M为实际测量的RTT值,平滑估计器R的均值标准差D的计算式如下:D=D+h(|M-R|-D)其中,增益因子h=0.25,M为实际测量的RTT值;协议每次接收到来自远程主机的ACK时,都计算本次传输的RTT值M,然后用该实际测量的RTT值M更新RTT平滑估计器及其均值标准差D;首次重传超时后,往返超时值RTO按照指数退避的方式递增:RTO=2*RTO当往返超时值大于等于往返超时值的最大值时,往返超时值不再递增,并按照该最大值重传丢失的数据报;当经过最大超时值还未收到该消息的确认消息时,则认为网络断开,执行相应的断开连接操作。更进一步,所述可靠传输包括基于带宽估计的拥塞控制机制,估计当前网络实际可用带宽,并根据该估计值调整当前发送速率,该带宽估计方法是一种基于RUDP吞吐量的估计方法,当网络工作在饱和状态下时,根据接收端的接收速率来估计链路的实际可用带宽;接收端中保存有一个Data_Received的变量用于统计带宽估计期间接收到的数据量,接收端每接收到一条可靠数据消息,都将Data_Received变量值和该消息长度相加并重新赋值,在带宽估计期间,假设接收到第一条数据消息的时间为tk,接收到最后一条数据消息的时间为tk+1,则带宽估计B为: B = D a t a _ Re c e i v e d t k + 1 - t k ]]>接收端周期性进行带宽估计,并将带宽估计值封装在带宽通知消息中发送给发送端;发送端在接收到带宽通知消息后,对带宽通知消息中的带宽估计值进行平滑估计,以减小链路抖动等因数对实际采样带宽值造成的影响:Bavail本文档来自技高网...
一种基于UDP的可靠传输方法

【技术保护点】
一种基于UDP的可靠传输方法,其特征在于:所述可靠传输方法是一种UDP层上的可靠传输协议,所述可靠传输协议包括可靠传输、不可靠传输和乱序传输;所述可靠传输,用于在两个上层应用之间提供可靠的数据传输,接收的数据报需要进行确认,丢失的数据报需要进行重传,接收到的数据报按报文可靠序列号的顺序提交给上层应用;所述不可靠传输,用于在两个上层应用之间提供不可靠的数据传输,接收的数据报不需要进行确认,丢失的数据报不需要进行重传,接收到的数据报按报文不可靠序列号的顺序提交给上层应用;所述乱序传输,用于在两个上层应用之间提供乱序的数据传输,接收的数据报不需要进行确认,丢失的数据不需要进行重传,接收到的数据报直接按接收顺序提交给上层应用。

【技术特征摘要】
1.一种基于UDP的可靠传输方法,其特征在于:所述可靠传输方法是一种UDP层上的可靠传输协议,所述可靠传输协议包括可靠传输、不可靠传输和乱序传输;所述可靠传输,用于在两个上层应用之间提供可靠的数据传输,接收的数据报需要进行确认,丢失的数据报需要进行重传,接收到的数据报按报文可靠序列号的顺序提交给上层应用;所述不可靠传输,用于在两个上层应用之间提供不可靠的数据传输,接收的数据报不需要进行确认,丢失的数据报不需要进行重传,接收到的数据报按报文不可靠序列号的顺序提交给上层应用;所述乱序传输,用于在两个上层应用之间提供乱序的数据传输,接收的数据报不需要进行确认,丢失的数据不需要进行重传,接收到的数据报直接按接收顺序提交给上层应用。2.如权利要求1所述的基于UDP的可靠传输方法,其特征在于:所述可靠传输中,通过提供确认机制和超时重传机制来实现基于UDP的可靠传输:当本地主机需要发送可靠数据报时,首先将待发送数据报的相应标志位设置为可靠数据报;然后将该可靠数据报插入到待发送可靠消息列队中等待发送;发送函数周期性遍历各个待发送消息列队,将列队中的消息进行封装加上一个协议头并调用UDP层的套接字sendmsg()函数发送;设定3个待发送消息列队:待发送确认消息列队、待发送可靠消息列队和待发送不可靠消息列队,这三个消息列队用于存放待发送的确认消息、可靠消息和不可靠消息,消息封装的规则如下:1)、协议优先查询待发送确认消息列队,如果待发送确认消息列队不为空,则将列队中的若干确认消息取出准备封装;2)、如果待发送确认消息列队为空或者待发送确认消息列队中的确认消息已取出准备封装,则查询待发送可靠消息列队,并将该列队中满足发送条件的可靠消息取出准备封装;3)、最后查询待发送不可靠消息列队,将该列队中满足发送条件的不可靠消息取出封装发送;4)、如果封装数据报中包含可靠消息,则在该协议头添加一个时间戳选项,如果该封装数据报中不含有可靠消息,则不需要添加时间戳选项,只需包含对等主机号即可。3.如权利要求2所述的基于UDP的可靠传输方法,其特征在于:接收端周期性调用接收函数接收来自各个远程主机的可靠数据报;然后根据数据报报头中的对等主机号选择相应的对等主机进行处理;处理函数将已接收的可靠数据报根据可靠序列号按从小到大的顺序进行排序并将排好序的数据报提交给上层应用;然后根据接收数据报的可靠序列号创建一个确认消息,然后将该确认消息插入到待发送确认消息列队中等待发送;发送端每次接收到远程主机发回的确认消息时,都根据确认消息中的已接收时间戳字段计算本次传输的实时RTT值,并更新RTT平滑估计器的估计值R和RTT平滑估计器均值标准差D,然后将该确认消息中已接收可靠序列号指向的消息从已发送可靠消息列队中移除,并释放相应的内存资源;协议周期性调用检查超时函数,当已发送可靠消息列队中的消息经过往返超时值还没收到该消息的确认消息时,将该消息从已发送可靠消息列队移至待发送可靠消息列队的队首进行重传。超时重传的策略为:首次超时的时间为:RTO=R+4D其中,R为RTT平滑估计器,D为RTT平滑估计器的均值标准差,平滑估计器R的计算式如下: R = R 2 R + β * D + ...

【专利技术属性】
技术研发人员:徐志江万玉铸华惊宇彭宏张江鑫
申请(专利权)人:浙江工业大学
类型:发明
国别省市:浙江;33

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

1