传输层:可靠数据传输

2019-06-16  本文已影响0人  Shaodw
可靠:不错,不丢,不乱
##### 只考虑单向数据传输,但控制信息双向流动

利用有限状态机(finite state machine)刻画传输协议

  1. rdt1.0

    ​ 可靠信道,可靠数据传输:

    ​ 底层信道完全可靠

    ​ 发送方和接收方的FSM独立

  2. rdt2.0

    产生位错误的信道(假定分组不丢失,不乱序)

    ​ 底层信道可能翻转分组中的位

    ​ 利用和UDP一样的检验和机制检测位错误

    ​ 如何从错误中恢复?

    • 确认机制:(Acknowledgements )ACK。 接收方显示地告知发送方分组已正确接受。

    • NAK:接收方显示地告诉发送方分组有错误。

    • 发送方收到NAK后,重传分组。

      ​ —>基于这种重传机制的rdt协议称为ARQ(Automatic Repeat reQuest

      )协议

      • 停等协议

      Rdt2.0引入的新机制:差错检测,接收方反馈控制信息:Ack/Nak,重传

  3. rdt2.1

    rdt2.0的缺陷:ack/nak发生错误或被破坏

    如果ack/nak坏掉,发送方重传

    重传又会导致产生重复分组

    如何解决重复分组?--->序列号机制:发送方给每个分组增加序列号,接收方丢弃掉重复分组

  4. rdt2.2

    ​ 无nak消息协议,不需要两种确认信息(ACK+NAK)

    ​ 实现:接受方通过ack告知最后一个被正确接收的分组,在ack消息中显式的加入被确认分组的序列号 发送方在收到重复ack之后,采取与收到nak消息相同的动作,重传当前分组

  5. rdt3.0

    ​ 信道既可能发生错误,也可能丢失分组

    ​ 检验和+序列号+ack+重传 已经不够用--->发送方等待合理的时间:如果没有收到ack,重传,如果分组或者ack只是延迟了而不是丢了,重传因为序列号机制会处理。所以加上定时器功能即可。

  6. 流水线

    ​ rdt3.0可以正确工作,但性能很差---> 原因:停等操作

    网络协议限制了物理资源的使用

    采用流水线机制:允许发送方在收到ack之前连续的发送多个分组

    更大的序列号范围,发生方和接收方需要更大的存储空间以缓存分组

    ​ -->实现:滑动窗口协议

  7. 滑动窗口协议

    ​ 窗口:允许使用的序列号范围

    ​ 窗口尺寸N:最多有N个等待确认的信息

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

    GBN和SR

  8. GBN(回退N步)协议

    ​ 采用累计确认机制

    ​ ACK(N):确认到序列号N(包括N)的分组均已被正确接收

    ​ 可能收到重复ACK

    ​ 为分组设置计时器

    ​ 超时事件:重传序列大于等于N,还未收到ACK的所有分组

    ​ 会有乱序到达的分组:

    ​ 直接丢失--接收方没有缓存

    ​ 重新确认序列号最大的,按序到达的分组

  9. SR(选择重传协议)

    GBN缺陷:重传N及N以后未确认的分组

    接收方对每个分组单独进行确认,设置缓存,缓存乱序到达的分组

    发送方只重传那些没收到ack的分组,对每个分组都设置定时器

上一篇下一篇

猜你喜欢

热点阅读