Reliable Data Transfer (RDT) 可靠数据传输协议(2)

在Reliable Data Transfer (RDT) 可靠数据传输协议(1)(https://blog.csdn.net/woaidanyang/article/details/120699060)中我们提到了RDT 3.0协议,他是用来防止packet lost的。而之前提到的RDT 1.0-2.2是为了防止bit error。
本文讨论RDT 3.0 performance的情况。
由于RDT 3.0一次只能传输一个包,造成了物理资源的极大的浪费。如图所示其资源利用率很低。
在这里插入图片描述
因此,人们采用了Pipeline的方式,一次发送多个数据包。其中包含两种方法:
Go-back-N 以及 Selective Repeat

Go-back-N

sender:
在这里插入图片描述
N: pipeline 中最多的 unacknowledged packets 数量
base: sequence number of the oldest unacknowledged packet
nextseqnum:smallest unused sequence number

[0,base-1]: 已经发送和确认的数据包
[base,nextseqnum - 1]: 已经发送但尚未确认的报文
[nextseqnum,base + N - 1]: 用于可立即发送的报文
[≥≥base+N]: 在当前管道中未确认的包(即序列号为base的包)被确认之前,不能使用

就是说一次发送window size的N个数据包,其中黄色的部分是已经发送给出去,但是还没有接收到ACK回应的;蓝色部分是还没有发送出去的部分。绿色和白色分别对应着已经发送过的和还未在window中发送的数据。
在这里插入图片描述
在GBN当中,如果在window当中有一个packet丢失,sender就会重新从丢失的这个packet开始传输,比较影响效率,如图所示为N=4的情况pkt2丢失,然后在timeout之后重新从pkt2开始发送。
在这里插入图片描述

Selective Repeat

selective repeat这种方法:
1. 接收方单独确认所有正确收到的pkts
2. 发送方只重发pkts的ACK没有收到的
在这里插入图片描述

Reference:
[1]JamesF.Kurose, and KeithW.Ross. 计算机网络:自顶向下方法. 机械工业出版社, 2009.
[2]https://blog.csdn.net/xlinsist/article/details/75950327

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值