UDP怎么实现可靠传输

打印 上一主题 下一主题

主题 560|帖子 560|积分 1680

UDP它不属于毗连型协议,因而具有资源斲丧小,处理速率快的长处,以是通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。传输层无法保证数据的可靠传输,只能通过应用层来实现了。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。关键在于两点,从应用层角度思量:
(1)提供超时重传,能制止数据报丢失。
(2)提供确认序列号,可以对数据报举行确认和排序。
本端:首先在UDP数据报定义一个首部,首部包罗确认序列号和时间戳,时间戳是用来盘算RTT(数据报传输的来回时间),盘算出合适的RTO(重传的超时时间)。然后以等-停的方式发送数据报,即收到对端简直认之后才发送下一个的数据报。当时间超时,本端重传数据报,同时RTO扩大为原来的两倍,重新开始计时。
对端:接受到一个数据报之后取下该数据报首部的时间戳和确认序列号,并添加本端简直认数据报和取下的时间戳首部之后发送给对端。根据此序列号对已收到的数据报举行排序并抛弃重复的数据报。

怎样根据时间戳盘算RTO


  • 在UDP数据报的首部中参加时间戳字段。当发送数据报时,将当前的时间记录在时间戳字段中。
  • 接收方收到数据报后,在发送确认(ACK)时,除了包罗必要简直认序列号外,也将接收到的数据报的时间戳值回送给发送方。
  • 发送方收到ACK后,使用当前时间减去ACK中回送的时间戳值,得到从发送数据报到收到确认的RTT。
  • 可以使用多种算法来根据RTT动态调整RTO。一种常见的方法是设置RTO为最近反复RTT丈量的均匀值的加权均匀或倍数。例如,可以取最近反复RTT的平滑移动均匀值,然后乘以一个因子(如1.5或2)来得到RTO。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

圆咕噜咕噜

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表