文章目录

  • 0.思维导图
  • 1.什么是流量控制?
  • 2.什么是可靠传输机制?
  • 3.什么是滑动窗口机制?
  • 4.可靠传输、流量控制、滑动窗口之间的关系
  • 5.停止-等待协议
    • (1)为什么要有停止-等待协议?
    • (2)研究停止等待协议的前提
    • (3)停止-等待协议有几种应用情况?
      • 1️⃣ 无差错情况
      • 2️⃣ 有差错情况
        • ① 数据帧丢失或检测到帧出错
        • ② ACK确认帧丢失
        • ② ACK确认帧迟到超时
    • (4)停止等待协议性能分析
  • 6.多帧滑动窗口与后退N帧协议(GBN)
    • (1)后退N帧协议(GBN)的滑动窗口
    • (2)GBN发送方响应的三件事
      • 1️⃣ 上层的调用
      • 2️⃣ 收到一个ACK
      • 3️⃣ 超时事件
    • (3)GBN接受方要做的事
    • (4)一张图了解GBN发送方和接受方之间的传输过程
    • (5)GBN滑动窗口的限制
    • (6)GBN重点知识
    • (7)GBN性能分析
  • 7.多帧滑动窗口与选择重传协议(SR)
    • (1)SR的滑动窗口图
    • (2)SR发送方必须响应的三件事
      • 1️⃣ 上层的调用
      • 2️⃣ 收到一个ACK确认帧
      • 3️⃣ 超时处理
    • (3)SR接受方要做的事
    • (4)一张图了解SR发送方和接受方之间的传输过程
    • (5)SR滑动窗口的大小限制
    • (6)SR重点知识

0.思维导图

1.什么是流量控制?

  • 流量控制是数据链路层的一种功能,流量控制对数据链路上的帧的发送速率进行控制,以使接收方有足够的缓冲空间来接受每个帧
  • 流量控制的基本方法是由接收方控制发送方发送数据的速率
  • 常见的流量控制方式有两种:停止-等待协议、滑动窗口协议

2.什么是可靠传输机制?

  • 可靠传输机制是为了使数据可以正确稳定的传输和接收而制定的规则。

  • 数据链路层的可靠传输通常使用确认超时重传两种机制来完成。

  • 确认是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接收。有些情况下为了提高传输效率,将确认捎带在一个回复帧中,称为捎带确认

  • 超时重传是指发送方在发送某一个数据帧以后就开始一个计时器,在一定时间内如果没有得到发送的数据帧的确认帧,那么就重新发送该数据帧,直到发送成功为止。

  • 自动重传请求(Auto Repeat reQuest,ARQ),通过接收方请求发送方重传出错的数据帧来恢复出错的帧,是通信中用于处理信道所带来差错的方法之一。

  • 传统自动重传请求分为三种,即停等式(Stop-and-Wait)ARQ、后退N帧(Go-Back-N)ARQ以及选择性重传(Selective Repeat)ARQ。后两种协议是滑动窗口技术与请求重发技术的结合,由于窗口尺寸开到足够大,帧在线路上可以连续地流动,因此又称为连续ARQ协议。

3.什么是滑动窗口机制?

  • 滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口
  • 发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。
  • 不同的滑动窗口协议窗口大小一般不同。
  • 发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。


  • 发送端,每收到一个确认帧,发送窗口就向前滑动一个帧的位置,当发送窗口内没有可以发送的帧(即窗口内的帧全部是已发送但未收到确认的帧),发送方就会停止发送,直到收到接受方发送的确认帧使窗口移动,窗口内有可以发送的帧,之后才开始继续发送。

  • 接受端,当收到数据帧后,将窗口向前移一个位置,并发回确认帧,若收到的数据帧落在接受窗口之外则一律丢弃。

  • 滑动窗口有以下重要特性

  1. 只有接受窗口向前滑动时(同时接受方发送确认帧),发送窗口才有可能(只有发送方收到确认帧才是一定)向前滑动。

  2. 从滑动窗口的概念看,停止-等待协议、后退N帧协议和选择重传协议只有在发送窗口大小和接收窗口大小有所差别。

  3. 停止-等待协议:发送窗口大小=1,接受窗口大小=1;

  4. 后退N帧协议:发送窗口大小>1,接受窗口大小=1;

  5. 选择重传协议:发送窗口大小>1,接受窗口大小>1;

  6. 当接受窗口的大小为1时,可保证帧的有序接受。

4.可靠传输、流量控制、滑动窗口之间的关系

5.停止-等待协议

  • 停止-等待协议也称为单帧滑动窗口与停止-等待协议
  • 当发送窗口和接收窗口的大小固定为1时,滑动窗口协议退化为停等协议(stop-and-wait)。
  • 该协议规定发送方每发送一帧后就要停下来,等待接收方已正确接收的确认(acknowledgement)返回后才能继续发送下一帧。
  • 由于接收方需要判断接收到的帧是新发的帧还是重新发送的帧,因此发送方要为每一个帧加一个序号。
  • 由于停等协议规定只有一帧完全发送成功后才能发送新的帧,因而只用一比特来编号就够了。

(1)为什么要有停止-等待协议?

(2)研究停止等待协议的前提

  • 虽然现在常用全双工通信方式,但是为了讨论方便,我们仅考虑一方发送数据(发送方),一方接收数据。

(3)停止-等待协议有几种应用情况?

  • 两种:无差错和有差错
1️⃣ 无差错情况

2️⃣ 有差错情况
① 数据帧丢失或检测到帧出错

② ACK确认帧丢失

② ACK确认帧迟到超时

(4)停止等待协议性能分析

  • 关于信道利用率可参考我之前的:https://blog.csdn.net/weixin_43914604/article/details/104541219
  • 发送方从开始发送数据到收到第一个确认帧ACK为止,这段时间称为一个发送周期
  • 信道利用率=发送时间/发送周期
  • 由于停等协议要为每一个帧进行确认后才继续发送下一帧,大大降低了信道利用率,因此又提出了后退n帧协议(GBN)和选择重传协议(SR)

6.多帧滑动窗口与后退N帧协议(GBN)

  • 后退n协议中,发送方在发完一个数据帧后,不停下来等待应答帧,而是连续发送若干个数据帧,即使在连续发送过程中收到了接收方发来的应答帧,也可以继续发送。且发送方在每发送完一个数据帧时都要设置超时定时器。只要在所设置的超时时间内仍未收到确认帧,就要重发相应的数据帧。
  • 如:当发送方发送了N个帧后,若发现该N帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重新发送出错帧及其后的N帧。
  • 从这里不难看出,后退n协议一方面因连续发送数据帧而提高了效率,但另一方面,在重传时又必须把原来已正确传送过的数据帧进行重传(仅因这些数据帧之前有一个数据帧出了错),这种做法又使传送效率降低。
  • 由此可见,若传输信道的传输质量很差因而误码率较大时,连续测协议不一定优于停止等待协议。此协议中的发送窗口的大小为k,接收窗口仍是1。

(1)后退N帧协议(GBN)的滑动窗口

(2)GBN发送方响应的三件事

1️⃣ 上层的调用
  • 上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口己满,发送方只需将数据返回给上层,暗示上层窗口已满。上层等一 会再发送。 ( 实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧)。
  • 配合下图加深理解
2️⃣ 收到一个ACK
  • GBN协议中,对n号帧的确认采用·累积确认·的方式,标明接收方已经收到n号帧和它之前的全部帧。
3️⃣ 超时事件
  • 协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。
  • 就像在停等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。
  • 如果出现超时,发送方重传所有已发送但未被确认的帧。

(3)GBN接受方要做的事

(4)一张图了解GBN发送方和接受方之间的传输过程

(5)GBN滑动窗口的限制

(6)GBN重点知识

  • 来道题目熟悉一下知识

  • 因为接收端可以累积确认,所以只要看最大的确认帧就行,所以接下来发送方要重发的帧数为4

(7)GBN性能分析

7.多帧滑动窗口与选择重传协议(SR)

  • 在后退n协议中,接收方若发现错误帧就不再接收后续的帧,即使是正确到达的帧,这显然是一种浪费。由此诞生了SR(SELECTICE REPEAT)。
  • SR工作原理:当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给接收方的高层,但接收方仍可收下来,存放在一个缓冲区中,同时要求发送方重新传送出错的那一帧。一旦收到重新传来的帧后,就可以将已存于缓冲区中的其余帧一并按正确的顺序递交上一层。
  • 显然,选择重发减少了浪费,但要求接收方有足够大的缓冲区空间。

(1)SR的滑动窗口图

(2)SR发送方必须响应的三件事

1️⃣ 上层的调用
  • 从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。
2️⃣ 收到一个ACK确认帧
  • 如果收到ACK,加入该帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第-一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。

  • 图解此过程

3️⃣ 超时处理
  • 每个帧都有自己的定时器,一个超时事件发生后只重传一个帧。

(3)SR接受方要做的事

  • SR接收方将确认-一个正确接收的帧而不管其是否按序。失序的帧将被缓存,并返回给发送方一个该帧的确认帧[收谁确认谁],直到所有帧(即序号更小的帧)皆被收到为止,这时才可以将一-批帧按序交付给 上层,然后向前移动滑动窗口。

  • 图解此过程

(4)一张图了解SR发送方和接受方之间的传输过程

(5)SR滑动窗口的大小限制

(6)SR重点知识

  • 一道小例题加深理解

参考:https://www.bilibili.com/video/av70228743?p=25

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

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

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

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

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

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

    文章目录 一. 流量控制 ① 必要性 ② 数据链路层 VS 传输层 ③ 定义 ④ 方法 1)停止等待协议 2)滑动窗口协议 关系: 包括: 3)协议对比 二. 停止-等待协议 必要性 应用情况 ① 无 ...

  4. 三、数据链路层(四)流量控制和可靠传输机制

    目录 4.1流量控制和可靠传输机制 4.2三种传统ARQ方式 4.2.1单帧滑动窗口与停止-等待协议 4.2.2多帧滑动窗口与后退N帧协议(GBN) 4.2.3多帧滑动窗口与选择重传协议(SR) 4. ...

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

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

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

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

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

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

  8. 计算机网络之流量控制与可靠传输机制

    计算机网络之流量控制与可靠传输机制 数据链路层的流量控制 较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作. 数据链路层的流量控制是点对点的,而传输层的 ...

  9. 【计算机网络复习 数据链路层】3.4.1 流量控制与可靠传输机制

    流量控制与可靠传输机制 一.数据链路层的流量控制 二.流量控制的方法 三.可靠传输.滑动窗口.流量控制 一.数据链路层的流量控制 较高的发送速度和较低的接收能力不匹配,会造成传输出错,因此流量控制也是 ...

最新文章

  1. 342.基于高通量技术的微生物组研究实验设计
  2. AI 医学影像辅助诊断的商业模式分析
  3. 读《Linux内核设计与实现》我想到了这些书
  4. Fatal error:SQL Server 不存在或拒绝访问。
  5. C++中对Mysql的操作函数可以参考以下blog中的内容
  6. linux--几种常见的进程调度算法
  7. linux跨ip拷贝,Linux的虚拟机拷贝到另外的操作系统时,NAT方式的静态IP无效,一直是获取的DHCP动态地址...
  8. ansys怎么使用anand模型_当SpaceClaim 遇上ANSYS
  9. java 控制台输出到gui_java – 如何将类似窗口的“控制台”添加到GUI?
  10. Kettle处理300万条数据-问题整理
  11. EXCEL取消科学计数法
  12. 禅道linux客户端服务端,禅道11.0版本发布,主要集成禅道客户端
  13. 浏览器首页被360恶意篡改,解决方法
  14. Zabbix 5.0.13 与阿里云企业邮箱告警
  15. 常见十大算法 冒泡算法
  16. oracle数据布尔,Oracle中的布尔字段
  17. 中国移动短信中心服务中心号码一览表
  18. 2022高教社杯 国赛数学建模 B题思路
  19. python 补获按键_qpython可以捕获耳机按键吗?
  20. 中国工程师如何获 Google 的工作机会?

热门文章

  1. 学习 PixiJS — 交互工具
  2. Electron学习-创建一个程序
  3. HtmlAgilityPack中SelectSingleNode的XPath和CSS选择器
  4. XenDesktop7.12配置StoreFront使用HTTPS
  5. 记我的一次电话面试 (转)
  6. mysql 联合索引详解
  7. iOS培训章节——C++函数的重载
  8. CA自签证书的颁发及应用
  9. MySQL 的备份和恢复机制 MyISAM 和 Innodb
  10. 妙用 background 实现花式文字效果