可靠传输原理及协议

传输层:可靠传输原理及协议

RDT 可靠传输协议经历了rdt1.0,rdt2.0,rdt2.1,rdt2.2,rdt3.0.一步步完善,使得网络得到很好的安全性稳定性。
在RDT协议发展历程中, 利用状态机FSM图像刻画传输协议。会更加准确形象。

Rdt1.0:可靠信道上的可靠数据传输

假设

  • 只考虑单向数据传输
  • 但控制信息双向流动
  • 底层信道完全可靠
  • 不会发生错误,不会丢包
  • 但是现实传输过程会发生位错误和丢包问题。

Ret2.0:产生位错误的信道

假设

  • 位翻转时会发生错误、但不会丢包
  • 利用校验和检测位错误

如何从错误中恢复?

- 确认机制ACK:接收方显式地告知发送方分组已正确接收
- NAK:接收方显式地告知发送方分组有 错误·
- 发送方收到NAK后,重传分组

注:基于这种重传机制的rdt协议称为ARQ

  • rdt2.0中传入的新机制:差错检测、接收方反馈控制信息:ACK/NAK、重传

如何解决分重复分组问题?

序列号:发送方给每个·分组增加序列号
接收方丢弃重复分组

如果ACK/NAK消息发生错误/被破坏,会怎么样?

消息错误时,解决:为ACK ,NAK增加错误校验和,检错并纠错.
发送方收到被破坏的ACK,NAK时不知道接收方发生了什么。解决:添加额外的控制消息
如果ACK,NAK坏掉,解决:发送方重传

新增待解决问题:不能简单的重传,会产生重复分组
解决方法:RDT2.1,加入序列号,及重复判断。

Rdt2.1

  • 发送方:为每个分组增加序列号
  • 接收方需要判断分组是否重复。注意:接收方无法知道ACK/NAK是否被发送方正确收到

Rdt2.2

  • 与Rdt2.1功能相同,但是只使用ACK

  • 接收方通过ACK告知最后一个被正确接收的分组

    • 在ACK消息中显式地加入被确认分组的序列号
  • 发送方收到重复ACK后,采取与收到NAK消息相同的动作:重传当前分组

Rdt3.0

  • 如果信道既可能发生错误,也可能丢失分组,怎么办?

  • 校验和+序列号+ACK+重传 够用吗?

  • 方法:发送方等待合理的时间

    • 如果没收到ACK,重传

    • 如果分组或ACK知识延迟而不是丢了

      • 重传会产生重复,序列号机制能够处理
      • 接收方需在ACK中显式告知所确认的分组
  • 需要定时器

滑动窗口协议

  • 窗口定义:

    • 允许使用更大序列号范围
    • 窗口尺寸为N:最多N个等待确认的消息
  • 滑动窗口含义:

    • 随着协议的运行,窗口在序列号空间内向前滑动
    • 滑动窗口协议:GBN、SR

GBN

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

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

    • ACK机制:发送拥有最高序列号、已被正确接收的分组的ACK
    • 可能产生重复ACK
    • 只需要记住唯一的·expectedseqnum
  • 乱序到达的分组

    • 直接丢弃–>接收方没有缓存
    • 超时后,重新确认序列号最大的、按序到达的分组

GPN原理图

GPN原理

GBN的缺陷

  • 重传分组过多

  • 解决:

    • 接收方对每个分组单独确认

      • 设置缓存机制,缓存乱序到达的分组
    • 发送方值重传没收到ACK的分组

      • 为每个分组设置定时器,当这个分组没收到ACK,并超时后,重传
    • 发送方窗口

      • N个连续的序列号
      • 限制已发送且未确认的分组

SR:解决了GBN问题

  • 当发送方发送失败一个包时,接收方会继续接受发送方的分组,将它们放入缓存
  • 当发送方重传分组时,接收方将该分组及缓存的分组一起读入
  • 序列号空间大小与窗口尺寸关系:Ns + Nr <= 2的k次方。k为分组个数

SR原理图

 SR原理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值