文章目录

  • 一. 流量控制
    • ① 必要性
    • ② 数据链路层 VS 传输层
    • ③ 定义
    • ④ 方法
      • 1)停止等待协议
      • 2)滑动窗口协议
        • 关系:
        • 包括:
      • 3)协议对比
  • 二. 停止-等待协议
    • 必要性
    • 应用情况
      • ① 无差错情况
      • ② 有差错情况
        • 1)数据帧丢失,或检测到帧出错。
        • 2)ACK丢失
        • 3)ACK迟到
      • ③ 性能分析
        • 结论
        • 解析图
        • 信道利用率 && 信道吞吐率
          • 1)定义
          • 2)例题
  • 三. 后退N帧协议(GBN)
    • ① GBN的滑动窗口
    • ② GBN发送方要做的三件事
    • ③ GBN接收方要做的事
    • ④ 运行图
    • ⑤ 滑动窗口长度
    • ⑥ GBN重点总结
    • ⑦ 例题
    • ⑧ 性能分析
  • 四. 选择重传协议(SR)
    • ① 滑动窗口
    • ② SR发送方必须响应的三件事
    • ③ SR接受方要做的事
    • ④ 运行图
    • ⑤ 滑动窗口长度
      • 公式:WtmaxWtmaxWtmax = WrmaxWrmaxWrmax = 2n-1
      • 限制原因:
    • ⑥ SR协议重点 && 例题
      • 重点
      • 例题
    • ⑦ 思维导图

ppt来源:王道考研B站教程

一. 流量控制

① 必要性

较高的发送速度和较低的接收能力不匹配的话,会造成传输出错

② 数据链路层 VS 传输层

模式 流量控制手段
数据链路层 点对点 收不下就不回复确认
传输层 端到端 给发送端一个窗口公告

③ 定义

控制发送速率,使接收方有足够的缓冲空间来接收每一个帧。

④ 方法

1)停止等待协议

2)滑动窗口协议

关系:

解决了流量控制,以及可靠传输(通过发送方自动重传)

包括:

  • 后退N帧协议(GBN)
  • 选择重传协议(SR)

3)协议对比

也就是说,其实停等协议也可以看成是一种滑动窗口协议。

二. 停止-等待协议

下简称”停等协议“

必要性

  • 底层信道会出现丢包问题。
  • 流量控制

应用情况

① 无差错情况

0帧、1帧为编号。ACK为确认帧。(acknowledgement frame)
注意:帧编号可以重复利用,比如此处0,1就是不断给新帧重复使用的。

② 有差错情况

停等协议的有差错情况,都是基于超时计时器来进行处理的。
让我们在第一种差错情况中对超时计时器进行更多的介绍。

1)数据帧丢失,或检测到帧出错。

  • 数据帧丢失:即接收端并没有接收到数据帧。
  • 检测到帧出错:接收端接收到了数据帧,但是检测到数据帧出错了。

这两种都产生一样的结果:接收端不返回ACK。

下图中,感叹号部分的原因为:

  • 保留副本:可能需要重新发送这个帧(由于之前丢失或出错)。
  • 必须编号:防止重复。

2)ACK丢失

描述:接收端接收到数据了,但是发送给发送端的ACK丢失了的情况。

解决流程:
i) 由于没有回收到ACK,触发了超时计时器,发送端重新发送当前数据帧。
ii) 接收端再次收到当前数据帧,由于我们有编号,于是判断这是重复帧,丢弃重复帧,并且再次传ACK。
iii) 发送端接收到ACK,错误解决。(当然,如果又丢失则继续这个流程)

3)ACK迟到

描述:接收端接收到数据了,但是ACK迟到了,触发了超时计时器的情况。

解决流程:
i) ACK迟到导致触发超时计时器,发送端重传数据帧
ii) 接收端收到重复数据帧,丢弃重复帧,并重传ACK
iii) 发送端在某刻终于收到迟到ACK,由于编号重复,丢弃迟到ACK

③ 性能分析

结论

简单,信道利用率太低。

解析图

可见一个周期中,RTT占了很大的比例。

信道利用率 && 信道吞吐率

1)定义

2)例题
  • RTT = 双向传播事延 = 2 * 30ms
  • 此处TD = L / 4kb/s,TA题干未给,不计。(见解析图中的公式变量。)

三. 后退N帧协议(GBN)

GBN:Go Back N

首先来一个GBN协议与前面的停等协议的对比图吧!

停等协议 GBN协议

由停等协议到GBN协议,有两个前提:

  • 必须增加序号范围
  • 发送方要缓存多个分组

① GBN的滑动窗口

传送帧分为三个部分:

  • 发完被确认的帧
  • 还能发送的帧(即正在发送窗口里的帧)
  • 还不能发的帧

② GBN发送方要做的三件事

简单来说,就是:

  • 与上层的交流:上层发送数据,发送方如果窗口满,则退还数据给上层。(实际可以缓存数据)
  • 对ACK采取累计确认方式。
    这里要举个例子:发送0、1、2,只返回ack1,则说明:0,1都收到,重传2。而非只收到1。
  • 超时事情处理:重传所有已发但未确认帧。
    举个例子:发送0、1、2、3,返回ack1,超时后重传2、3。
    (之后的SR协议就是对此处进行了优化。)

③ GBN接收方要做的事

下图简而言之就是:

  • 正确按序收到n号帧后,发送ack N(累计确认),上传数据给上层。
  • 维护Expected_Seq_Num。
    举个例子:发0、1、2、3,接收到0、2、3,则发ack0,expectedseqnum=1(期待接收帧是1)
    这里提了一下缓存失序帧,其实就是为SR协议引一下,因为SR协议会缓存失序帧。

④ 运行图

图中需要注意:

  • 接收3、4、5后,都丢弃,并且发送的都是ACK 1。
  • 超时计时器:超时后,重传所有已发未确认帧,结合expectedseqnum=2来维护运行。

⑤ 滑动窗口长度

  • 采取n比特对帧编号的情况:发送窗口尺寸W满足:1 ≤ W ≤ 2n2 ^ n2n-1
  • 原因:尺寸过大会导致接收方无法区分新帧与旧帧
    如果不太了解为啥无法区分,可以到SR协议部分再看看解析。

⑥ GBN重点总结

这里直接看图就好

⑦ 例题


做这道题需要的知识点:

  • 累计确认
  • GBN的重发机制

解析:由于收到了3号帧的确认,也就是ACK 3,那么由累计确认机制可知:0、1、2、3号帧都成功传送。因此,只有4、5、6、7号帧需要重发。所以选C.4。

⑧ 性能分析

i) 优点:连续发送数据帧 => 提高信道利用率
ii) 缺点:重传时要把已经正确传输的数据帧重传 => 传送效率降低

最后来一个GBN的思维导图

四. 选择重传协议(SR)

SR:Selective Repeat

对于之前的GBN协议,我们了解其弊端:批量重传。
而为了解决这一弊端,我们有一个解决方法:

单个确认,加大接收窗口,设置接收缓存,支持乱序(缓存乱序到达帧)

由此引出SR协议

① 滑动窗口

与GBN协议不同在于:

  • 见接收方窗口的紫色部分6,新增缓存功能。
  • 见发送方窗口的绿色部分3,支持乱序确认,也就是重传时可以传2,4而省略3。
  • 下界:位于发送方窗口的最小序号位,下图中为2号帧。

② SR发送方必须响应的三件事

  • 上层调用同GBN,不赘述。
  • ACK:与GBN不同,并非累计确认。具体可见图中解释。
    举个例子:
    发0、1、2、3、4,收到ACK1 、2、3,那么说明0、4并没有被正确接收。并且由于0是下界,因此不能移动窗口。于是重传0、4,如果只返回ACK0,那么窗口移动,下界变成4
  • 超时事件:一个超时事件对应一个帧的重传

③ SR接受方要做的事

分成三类。

  • 接受乱序,缓存失序帧。如下图的6号帧
  • 比下界序号还小的帧,返ACK。(下图5号帧前的01234,只是重新确认已发)
  • 其他情况:忽略。

移动滑动窗口的情况:下界帧成功返回ACK。

④ 运行图

  • 2帧丢失后,3帧缓存,发送ACK3 (GBN则返ACK2)
  • 2帧超时后,重传2帧。(GBN则返2345)
  • 移动窗口:重传2帧后,2-5都成功了,移动下界到6。

⑤ 滑动窗口长度

公式:WtmaxWtmaxWtmax = WrmaxWrmaxWrmax = 2n-1

限制原因:

同GBN,会导致接收方无法区分新帧与旧帧。
见图左,与图右流程:

  • 共同点:最后都是接受0号帧
  • 不同点:左边是重传(旧帧),右边不是重传(新帧)

解决方法:按公式给窗口长度,就不会出现这种二义性错误。

⑥ SR协议重点 && 例题

重点

直接见下图

例题


考察知识:

  • SR协议的重传机制

解析:

  • 1号帧已经确认,不需要重传
  • 0、2号帧超时,需要重传
  • 3号帧,没超时,先不处理。

因此,最终只需要重传0、2号帧,答案选A.2。

⑦ 思维导图

终于补完这一小节的内容了= =,一篇博客拖了好久。
要抓紧写完三四章的内容了!

【学习笔记】数据链路层——流量控制:停止等待协议、后退N帧协议(GBN)、选择重传协议(SR)相关推荐

  1. 【计算机网络】数据链路层 : 流量控制 ( “流量控制“ 机制 | 停止-等待协议 | 滑动窗口协议 | 后退 N 帧协议 GBN | 选择重传协议 SR | 滑动窗口 与 流量控制、可靠传输 )

    文章目录 一. 数据链路层 流量控制 二. 数据链路层 与 传输层 流量控制 机制 三. 数据链路层 流量控制 四. 数据链路层 流量控制 方法分类 五.停止等待协议 六.滑动窗口协议 七.滑动窗口协 ...

  2. 王道考研 计算机网络11 数据链路层 封装成帧 透明传输 流量控制 停止-等待协议 后退N帧协议GBN 选择重传协议SR

    第三章知识 数据链路层的基本概念 数据链路层功能概述 封装成帧 透明传输 什么数据都能传输 数据链路层的流量控制 流量控制方法 滑动窗口协议: 每一个小格标识一个帧 发送窗口:发送端正在处理的发送的数 ...

  3. 3.2计算机网络(停止-等待协议 后退N帧协议 选择重传协议)

    目录 1.停止-等待协议 1.概念 2.停等协议--无差错情况 3.停等协议--有差错情况 1.数据帧丢失或检测到帧出错 2.ACK(确认帧)丢失 3.ACK(确认帧)迟到 4.停等协议性能分析 5. ...

  4. 【计算机网络】湖科大学习笔记---数据链路层

    本文已收录于专栏 ⭐️ <计算机网络>⭐️ 学习指南: 数据链路层概述 概述 三个重要问题 封装成帧 介绍 透明传输 总结 差错检测 介绍 奇偶校验 循环冗余校验CRC(Cyclic Re ...

  5. 【计算机网络】数据链路层 : 选择重传协议 SR ( 帧分类 | “发送方“ 确认帧、超时事件 | “接受方“ 接收帧机制 | 滑动窗口长度 | 计算示例 )★

    文章目录 一. 选择重传协议 ( SR ) 引入 二. 选择重传协议 ( SR ) 帧分类 三. 发送方 事件 ( 确认帧.超时事件 ) 四. 接收方 事件 ( 接收帧 ) 五. 滑动窗口长度 五. ...

  6. 计算机网络选择重传,计算机网络选择重传协议实验报告..docx

    计算机网络选择重传协议实验报告. <计算机网络>选择重传协议实验报告1.实验内容和实验环境描述实验内容:利用所学数据链路层原理,设计一个滑动窗口协议,在仿真环境下编程实现有噪音信道环境下两 ...

  7. 计算机网络之数据链路层:4、流量控制和可靠传输机制(停止等待协议、后退N帧协议、选择重传协议)

    数据链路层:4.流量控制和可靠传输机制 思维导图: 流量控制: 实现流量控制的方法: 停止等待协议:(发送和接收窗口为1的滑动窗口协议) 滑动窗口协议: 实现可靠传输的方法: 总结: 思维导图: 流量 ...

  8. 3.4.1 计算机网络之流量控制(停止-等待协议、滑动窗口、后退N帧协议GBN、选择重传协议SR)、滑动窗口、可靠传输机制

    文章目录 0.思维导图 1.什么是流量控制? 2.什么是可靠传输机制? 3.什么是滑动窗口机制? 4.可靠传输.流量控制.滑动窗口之间的关系 5.停止-等待协议 (1)为什么要有停止-等待协议? (2 ...

  9. 408计算机网络学习笔记——数据链路层

    目录 1.数据链路层基本概念 2.组帧 2.1.字符计数法 2.2.字符填充法 2.3.零比特填充法 2.4.违规编码法 3.差错控制 3.1.检错编码 3.1.1.奇偶检验码 3.1.2.CRC循环 ...

最新文章

  1. 微服务并不能解决你的烂代码问题
  2. xmind修改默认配置
  3. python ConfigParser 小试
  4. 小说中人称转换作用_长篇儿童小说《合欢》:一树红绒落马缨
  5. Flask学习记录之Flask-SQLAlchemy
  6. 简单高效地控制高亮度LED
  7. (软件工程复习核心重点)第七章软件维护-第一节:软件维护的概念和特点
  8. 安利几款语音识别软件
  9. 计算机网络实验:VLAN Practice Lab Setup in Packet Tracer and Configure DHCP Server for multiple VLAN
  10. [JavaScript]如何安全地嵌入第三方js – FBML/caja/sandbox/ADsafe简介
  11. beeline hiveserver2 start
  12. ZYNQ 系统的IEEE1588 实现方法
  13. 初次面试初生牛犊不怕虎,居然觉得面试就是聊天?
  14. 在html中下面那是段落标签,【单选题】在 HTML 中,下面是段落标签的是 A. 与 B. 与 C. 与 D. 与...
  15. 登陆远程kvm_KVM远程VMM管理
  16. 阿里P7架构师到底有多难?
  17. 浅谈PHP与Java之Web开发整合技术
  18. 前端词汇(后续整理)
  19. php谷歌地图,php – 使用谷歌地图提交位置
  20. PCB抄板原理图常见错误

热门文章

  1. python调用大漠找图_[教程贴]按键精灵调用大漠插件后台找图示例
  2. yii3正式版什么时候发布_事业单位联考结束,成绩什么时候发布?合格分数线怎么算?...
  3. 重装谷歌浏览器chrome:未知错误导致安装失败
  4. github单独下载某个文件或文件夹
  5. knn用于水果数据集分类
  6. KNN实现CIFAR-10数据集识别
  7. Java并发编程实战~Lock
  8. html5 input select,【Web前端问题】select如何实现既可以像input那样支持输入,又可以从下拉中选择? antd...
  9. mysql 查新格式化_mysql 日期格式化查询
  10. mysql的程序怎么升级成mysqli_如何将mysql更改为mysqli?-问答-阿里云开发者社区-阿里云...