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)为什么要有停止-等待协议?

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

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

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

  • 两种:无差错和有差错

1️⃣ 无差错情况

2️⃣ 有差错情况

① 数据帧丢失或检测到帧出错

② ACK确认帧丢失

② ACK确认帧迟到超时

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

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

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

(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)

(1)SR的滑动窗口图

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

1️⃣ 上层的调用

  • 从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。

2️⃣ 收到一个ACK确认帧

  • 如果收到ACK,加入该帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第-一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。

  • 图解此过程

3️⃣ 超时处理

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

(3)SR接受方要做的事

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

  • 图解此过程

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

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

(6)SR重点知识

  • 一道小例题加深理解

参考链接:https://blog.csdn.net/weixin_43914604/article/details/104722679

计算机网络(2)-数据链路层流量控制相关推荐

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

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

  2. 计算机网络(十一)-数据链路层-流量控制

    一.流量控制 1.1 较高的发送速度和较低的接收能力的不匹配,因此流量控制也是数据链路层的一项重要工作. 1.2 数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的. 1.3 数据链路层流量 ...

  3. 计算机网络什么叫流量控制,计算机网络(十一)-数据链路层-流量控制

    一.流量控制 1.1 较高的发送速度和较低的接收能力的不匹配,因此流量控制也是数据链路层的一项重要工作. 1.2 数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的. 1.3 数据链路层流量 ...

  4. 3.1.1计算机网络(数据链路层 差错控制 循环冗余码 海明码 流量控制)

    目录 数据链路层 数据链路层基本概念 数据链路层功能概述 封装成帧 透明传输 组帧的四种方法: 1.字符计数法 ​2.字符填充法 ​3.零比特填充法 4.违规编码法 差错控制 差错从何而来? 数据链路 ...

  5. 【计算机网络】数据链路层 : 总结 ( 封装成帧 | 流量控制与可靠传输 | 差错控制 | 介质访问控制 | 局域网 | 广域网 | 数据链路层设备 ) ★★★

    文章目录 一.数据链路层 功能 二.封装成帧 ★ 三.流量控制 和 可靠传输 ★★ 1.停止等待协议 ★ 2.后退 N 帧 ( GBN ) 协议 ★ 3.选择重传 ( SR ) 协议 ★ 四.差错控制 ...

  6. 计算机网络:数据链路层

    计算机网络:数据链路层 数据链路层是 OSI 分层模型的第二层.该层是最复杂的层之一,具有复杂的功能和责任.数据链路层隐藏底层硬件的详细信息,并将自身表示到上层作为通信介质. 数据链路层在某种意义上直 ...

  7. 【计算机网络】数据链路层(五)—— 广域网(PPP 协议与 HDLC 协议)

    [计算机网络]数据链路层(五)-- 广域网(PPP 协议与 HDLC 协议) 一.广域网 二.PPP 协议 PPP协议应满足的要求 PPP协议的三个组成部分 PPP协议的帧格式 三.HDLC 协议 H ...

  8. 计算机网络笔记——数据链路层

    计算机网络笔记--数据链路层 3. 数据链路层 3.1 数据链路层的功能 3.2 组帧 字符计数法 字符填充的首尾界符法 比特填充的首尾标志法(零比特填充法) 物理编码违例法 3.3 差错控制 3.3 ...

  9. 计算机网络之数据链路层基础概念详解

    目录 数据链路层思想相关概念术语 数据链路层在网络中的地位 数据链路层提供的服务 成帧及透明传输 可靠交付(reliable delivery) 流量控制 差错检验 多路访问协议(介质访问控制) 传播 ...

  10. 计算机网络总结——数据链路层

    本篇文章是对 湖科大计算机网络微课堂 中数据链路层的笔记总结,希望对大家有所帮助. 文章目录 3.1数据链路层概述 3.2封装成帧 (1)封装成帧 (2)透明传输: 3.3差错检测 (1)奇偶校验 ( ...

最新文章

  1. gcc c语言标准,GCC 7.1发布 支持当前所有的C ++ 17标准
  2. linux 网卡无效 设置_windows使用xftp连接本机上的linux虚拟机
  3. 让IIS建立的站点默认是.net 2.0的,而不是.net 1.1的代码
  4. cocos2d-x lua 学习笔记(1) -- 环境结构
  5. boost::bad_function_call用法的测试程序
  6. python uwsgi_Python Web 程序使用 uWSGI 部署
  7. EF Core中避免贫血模型的三种行之有效的方法(翻译)
  8. CanalSharp-mysql数据库binlog的增量订阅消费组件Canal的.NET客户端
  9. pl/postgresql_将PostgreSQL PL / Java安装为PostgreSQL扩展
  10. 大三、研二的秋招备战路线(Java、大数据)
  11. lua是编译成c语言再执行嘛,go_lua_c: 使用go编译lua脚本为字节码,通过网络传给c,通过c执行lua脚本。...
  12. 电脑上玩和平精英_和平精英奇幻之旅怎么玩-和平精英奇幻之旅玩法攻略
  13. 在二维码中间添加logo或者图片
  14. 高通平台添加自己的product后com.qualcomm.qti.tetherservice不停crash
  15. Redis(五)深入了解Redis核心设计原理 SDS类型(String)redis如何扩容 五种结构底层数据结构 结构变换条件 如何配置条件 GEO使用 ACL
  16. 无需Root权限新型Android木马SpyNote在多个论坛泄露
  17. 资本的游戏-笔记(一)
  18. UI自动化框架如何设计及搭建?
  19. 长篇分享腾讯工作的环境、待遇等
  20. python如何连接创建我的世界_我的Python世界 玩《Minecraft我的世界》学Python编程...

热门文章

  1. Ros学习——roslaunch
  2. Requests+正则爬取猫眼电影TOP100
  3. 并发数据结构- 1.1.1 性能
  4. 【7集iCore3基础视频】7-2 iCore3原理图介绍
  5. hibernate自带的注解和jpa注解的冠希
  6. New Currency Rate IOS APP 上线
  7. 项目管理--项目整合管理
  8. 如何理解lvs中DR模型的arp请求-arp_announce和arp_ignore
  9. SQL Server2005还原数据库攻略
  10. ZZULIOJ 1102: 火车票退票费计算(函数专题)