计算机网络(十一)-数据链路层-流量控制
一.流量控制
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.2 数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的. 1.3 数据链路层流量 ...
- 【计算机网络】数据链路层 : 流量控制 ( “流量控制“ 机制 | 停止-等待协议 | 滑动窗口协议 | 后退 N 帧协议 GBN | 选择重传协议 SR | 滑动窗口 与 流量控制、可靠传输 )
文章目录 一. 数据链路层 流量控制 二. 数据链路层 与 传输层 流量控制 机制 三. 数据链路层 流量控制 四. 数据链路层 流量控制 方法分类 五.停止等待协议 六.滑动窗口协议 七.滑动窗口协 ...
- 3.1.1计算机网络(数据链路层 差错控制 循环冗余码 海明码 流量控制)
目录 数据链路层 数据链路层基本概念 数据链路层功能概述 封装成帧 透明传输 组帧的四种方法: 1.字符计数法 2.字符填充法 3.零比特填充法 4.违规编码法 差错控制 差错从何而来? 数据链路 ...
- 【计算机网络】数据链路层 : 总结 ( 封装成帧 | 流量控制与可靠传输 | 差错控制 | 介质访问控制 | 局域网 | 广域网 | 数据链路层设备 ) ★★★
文章目录 一.数据链路层 功能 二.封装成帧 ★ 三.流量控制 和 可靠传输 ★★ 1.停止等待协议 ★ 2.后退 N 帧 ( GBN ) 协议 ★ 3.选择重传 ( SR ) 协议 ★ 四.差错控制 ...
- 计算机网络:数据链路层
计算机网络:数据链路层 数据链路层是 OSI 分层模型的第二层.该层是最复杂的层之一,具有复杂的功能和责任.数据链路层隐藏底层硬件的详细信息,并将自身表示到上层作为通信介质. 数据链路层在某种意义上直 ...
- 【计算机网络】数据链路层(五)—— 广域网(PPP 协议与 HDLC 协议)
[计算机网络]数据链路层(五)-- 广域网(PPP 协议与 HDLC 协议) 一.广域网 二.PPP 协议 PPP协议应满足的要求 PPP协议的三个组成部分 PPP协议的帧格式 三.HDLC 协议 H ...
- 计算机网络笔记——数据链路层
计算机网络笔记--数据链路层 3. 数据链路层 3.1 数据链路层的功能 3.2 组帧 字符计数法 字符填充的首尾界符法 比特填充的首尾标志法(零比特填充法) 物理编码违例法 3.3 差错控制 3.3 ...
- 计算机网络之数据链路层基础概念详解
目录 数据链路层思想相关概念术语 数据链路层在网络中的地位 数据链路层提供的服务 成帧及透明传输 可靠交付(reliable delivery) 流量控制 差错检验 多路访问协议(介质访问控制) 传播 ...
- 计算机网络总结——数据链路层
本篇文章是对 湖科大计算机网络微课堂 中数据链路层的笔记总结,希望对大家有所帮助. 文章目录 3.1数据链路层概述 3.2封装成帧 (1)封装成帧 (2)透明传输: 3.3差错检测 (1)奇偶校验 ( ...
最新文章
- wordpress安装时网页无法打开-调试办法(还没整理完)
- netcore权限控制_netcore mvc快速开发系统(菜单,角色,权限[精确到按钮])开源...
- 在 react 里写 vue3 ? 还写了自定义 hooks和 Hoc 构建了响应式 !
- ab plc编程软件_AB编程软件及所有组态软件授权及安装教程包含FTViewV11
- python—tf.keras.backend.clear_session()
- 一封程序员的苦逼辞职信
- paip.yxshopV4.7.1的安装不能用的问题
- protel99SE - 多张原理图生成一张总网表的方法
- 用c语言解三角函数公式大全初中,初中三角函数公式大全
- 如何给程序添加管理员权限(以管理员权限运行功能)
- 机器学习在网络安全领域的应用(二)
- webpack 打包时排除某些依赖模块
- Codeup(云效)手把手教部署SpringCloud项目到私有主机
- Android入门,android开发需要什么基础
- go 语言zip压缩包 读取
- uniapp如何引入iconfont图标库
- Qgis 使用QuickOSM插件导入开源地图
- 时间序列:时间序列模型---随机游走过程(The Random Walk Process)
- Android 实现屏幕的亮屏与锁屏
- dropbear 安装配置
热门文章
- LeetCode 962. 最大宽度坡(单调栈)
- LeetCode 123. 买卖股票的最佳时机 III(动态规划)
- LintCode 207. 区间求和 II(线段树)
- LeetCode 1009. 十进制整数的反码(位运算)
- opengl计算帧率_或许是迄今为止第一篇讲解 fps 计算原理的文章吧
- SQL Server时间函数
- python现在时间 命令_Python3 - 时间处理与定时任务
- 90TB显存!英伟达发布新一代SuperPod超算,AI算力新巅峰!
- 负数的开方到底等于多少?
- Spring Boot中的事务管理