一.流量控制

1.1 较高的发送速度较低的接收能力的不匹配,因此流量控制也是数据链路层的一项重要工作。

1.2 数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。

1.3 数据链路层流量控制手段:接收方收不下就不回复确认。
传输层流量控制手段:接收端给发送端一个窗口公告。

1.4 流量控制的方法

  • 停止-等待协议:每发完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一帧。发送窗口大小为1,接收窗口大小为1(滑动窗口的特例)。
  • 滑动窗口协议(窗口大小固定)
    -后退N帧协议(GBN):发送窗口大小大于1,接收窗口大小为1;
    -选择重传协议(SR):发送窗口大小大于1,接收窗口大小大于1;

1.5.可靠传输、滑动窗口、流量控制区别

  • 可靠传输:发送端发送,接收端就接收。
  • 流量控制:控制发送速率,使接收方有足够的缓冲空间来接收每一帧。
  • 滑动窗口解决:
    -流量控制:收不下数据,就不发送确认帧。
    -可靠传输:发送方自动重传。

二.停止-等待协议

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

  • 超时计时器:每次发送一个帧就启动一个计时器。
  • 超时计时器设置的重传时间应当比帧传输的平均RTT更长。
  • 超时重传:发送完一个帧后,还需要保存该帧的一个副本,以备超时重传。
  • 数据帧和确认帧必须编号。根据编号可以判断是否重复。

    2.2 确认帧丢失

    2.3 确认帧迟到(ACK迟到)

    2.4 该协议信道利用率较低
  • 发送方在一个发送周期内,有效的发送数据所需的时间占整个发送周期的比率。

2.5 停等协议的弊端
信道利用率低,可以采用流水线技术,提高利用率。

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

三. 后退N帧协议

3.1 GBN发送方需要响应的三件事

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

3.2 GBN 接收方要做的事

  • 如果正确收到n号帧,并且按序,那么接收方为n帧发送一个确认ACK,并将该帧中的数据部分交付给上层。
  • 其余情况都丢掉,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只要维护一个信息exepectedseqnum(下一个按序接收的帧序号)。

    3.3 滑动窗口长度
    若采用n个比特对帧编号,那么发送窗口的尺寸W1应满足:1<=W1<=2n-1。因为发送窗口尺寸过大,就会使得接收方无法区分新帧和旧帧。

3.4 GBN协议重点

  • 累积确认(也称捎带确认)。
  • 接收方只按序接受帧,不按序无情丢弃
  • 确认序列号最大的、按序到达的帧
  • 发送窗口最大为2n-1,接收窗口大小为1。

3.5 GBN 协议性能分析

  • 提高了信道利用率;
  • 在重传时必须把原来已经正确传送的数据帧重传,使传递效率降低。

四.选择重传协议SR

4.1 只重传出错帧:设置单个确认(逐一确认帧),同时加大接收窗口,设置接收缓存,缓存乱序到达的帧。

4.2 选择重传协议中的滑动窗口

4.3 SR必须响应的三件事

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

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

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

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

4.5 运行中的SR
假设接收窗口和发送窗口大小为4.

4.6 滑动窗口长度

  • 如何区分新旧帧:
  • 发送窗口等于接收窗口
  • W发送窗口max=W接收窗口max=2n-1 n为窗口长度可以用几位二进制编码的二进制位数。

4.7 SR协议重点

  • 对数据帧逐一确认,收到一个确认一个;
  • 只重传出错帧
  • 接收方有缓存
  • W发送窗口max=W接收窗口max=2n-1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. wordpress安装时网页无法打开-调试办法(还没整理完)
  2. netcore权限控制_netcore mvc快速开发系统(菜单,角色,权限[精确到按钮])开源...
  3. 在 react 里写 vue3 ? 还写了自定义 hooks和 Hoc 构建了响应式 !
  4. ab plc编程软件_AB编程软件及所有组态软件授权及安装教程包含FTViewV11
  5. python—tf.keras.backend.clear_session()
  6. 一封程序员的苦逼辞职信
  7. paip.yxshopV4.7.1的安装不能用的问题
  8. protel99SE - 多张原理图生成一张总网表的方法
  9. 用c语言解三角函数公式大全初中,初中三角函数公式大全
  10. 如何给程序添加管理员权限(以管理员权限运行功能)
  11. 机器学习在网络安全领域的应用(二)
  12. webpack 打包时排除某些依赖模块
  13. Codeup(云效)手把手教部署SpringCloud项目到私有主机
  14. Android入门,android开发需要什么基础
  15. go 语言zip压缩包 读取
  16. uniapp如何引入iconfont图标库
  17. Qgis 使用QuickOSM插件导入开源地图
  18. 时间序列:时间序列模型---随机游走过程(The Random Walk Process)
  19. Android 实现屏幕的亮屏与锁屏
  20. dropbear 安装配置

热门文章

  1. LeetCode 962. 最大宽度坡(单调栈)
  2. LeetCode 123. 买卖股票的最佳时机 III(动态规划)
  3. LintCode 207. 区间求和 II(线段树)
  4. LeetCode 1009. 十进制整数的反码(位运算)
  5. opengl计算帧率_或许是迄今为止第一篇讲解 fps 计算原理的文章吧
  6. SQL Server时间函数
  7. python现在时间 命令_Python3 - 时间处理与定时任务
  8. 90TB显存!英伟达发布新一代SuperPod超算,AI算力新巅峰!
  9. 负数的开方到底等于多少?
  10. Spring Boot中的事务管理