基于UDP协议的可靠数据传输

UDP消息格式

UDP校验和(checksum)

目的:检测UDP段在传输中是否发生错误(如位翻转)

发送方

  • 将段的内容视为16-bit整数
  • 校验和计算:计算所有整数的和,进位加在和的后面,将得到的值按位求反,得到校验和
  • 发送方将校验和放入校验和字段

接收方

  • 计算所收到段的校验和
  • 将其与校验和字段进行对比
    不相等:检测出错误
    相等:没有检测出错误(但可能有错误)
    在这里插入图片描述
    注意: 最高位进位必须被加进去

可靠数据传输协议基本结构

在这里插入图片描述

rdt 可靠数据传输协议

rdt1.0

rdt1.0是基于理想情况下的协议,假设所有信道都是可靠的,没有比特位的翻转,没有数据包的丢失与超时,所以rdt1.0的传输功能就是发送方发送数据,接收方接受数据。

在这里插入图片描述

rdt2.0

rdt2.0在rdt1.0的基础上解决了比特位翻转的问题,这里的比特位防撞发生在运输层下面的不可信信道中数据包中的1可能会变0,0可能会变成1。rdt2.0增加了3种新机制:1.错误检验 2.接收者反馈接受信息(ACK,NAK)3.重传机制。在运输层对应用层的数据进行打包处理时,新checksum(校验和),从而接收端可以对其数据包进行检验,如果正确,返回ACK,发送者继续发送下一个数据包;如果不正确,返回NAK,发送者重传数据。

在这里插入图片描述

rdt2.0只考虑了发送方到接收方的数据传输,如果反馈信息ACK,NAK传输时发生比特位翻则会出错。如果ACK发生翻转,那么发送方会再次重复的发送相同的数据包;如果NAK发生翻转,那么发送方会认为数据传输情况很好,但是接收方却已经收到了一个错误的数据包。

rdt 2.1

在rdt2.0的基础之上,发送方在打包数据包时添加了0或者1编号,同样ACK,NAK字段上也添加了0,1字段,表示0,1号字段的确认或者否定。发送方就有了2种状态发送0号数据包1号数据包,接收方也有了2种状态等待0号数据包和等待1号数据包。现在假设情景发送方向接收方发送0号数据包,如果接收方接收到0号数据包,返回ACK,但是ACK出现翻转,发送方重复发送0号数据,接收方处于等待1号数据状态,接收方会拒绝0号数据,避免重复。如果接收方接收到0号数据包出现错误,返回NAK,但是NAK出现翻转,接收方处于等待0号数据状态,发送方继续发送1号数据,接收方会拒绝1号数据,避免错序。
在这里插入图片描述

rdt2.2

dt2.2是在rdt2.1上的基础之上做了小小的改善,摒弃了NAK,只需采用ACK。我们在ACK的信息上加上了期望的顺序号,现在假设情景发送方向接收方发送0号数据包,如果接收方接收到0号数据包,返回(ACK,1),发送方接着发送1号数据包。如果接收方接收到0号数据包出现错误,返回(ACK,0),发送方重传0号数据包。

在这里插入图片描述
rdt2.2之前的版本都重在处理数据包的比特位翻转情况,却没有考虑到数据包在传输过程中出现的数据包丢失问题,这样数据包丢失会使得网络处于拥塞状态。

rdt 3.0

rdt3.0在rdt2.2的基础之上处理了数据包丢失的情况,增加了计时器的机制,如果在RTT时间段内,发送方没有接收到反馈信息,那么发送方默认数据包已经丢失了,会自动重传。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Rdt 3.0性能分析
在这里插入图片描述
主要原因是在RTT时间段内,网络处于空闲状态,而RTT时间段比较长,使得利用率十分的低
在这里插入图片描述

在此基础上采用流水线协议来改进rdt3.0

流水线协议

允许发送方在收到ACK之前连续发送多个分组

  • 更大的序列号范围
  • 发送方和/或接收方需要更大的存储空间以缓存分组

在这里插入图片描述
在这里插入图片描述

滑动窗口协议

Go-Back-N(GBN)协议

1.发送者在流水线中最多有 N 个未确认的数据报。

2.接收者仅发送累计的确认 ,如果中间有数据报缺失,就不予以确认。

3.发送者对最久未确认的数据报进行计时,如果计时器到点, 重传所有未确认的数据报

4.发送窗口大于1,接受窗口等于1(也就意味着如果某一个报文段出现错误,那么接受窗口会停留再次,之后收到的数据将会被丢弃)
在这里插入图片描述

Selective Repeat协议

1.发送者在流水线中最多有 N 个未确认的数据报。

2.接收者对单个数据报进行确认。

3.发送者对每一个未确认的数据报进行计时,如果计时器到点, 仅重传该个未确认的数据报

4.发送窗口大于1,接受窗口大于1(意味着可以缓存出错位置之后的报文段),最好是两者相同,
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值