当前位置:网站首页>【计网】第三章 数据链路层(2)流量控制与可靠传输、停止等待协议、后退N帧协议(GBN)、选择重传协议(SR)
【计网】第三章 数据链路层(2)流量控制与可靠传输、停止等待协议、后退N帧协议(GBN)、选择重传协议(SR)
2022-07-03 12:01:00 【小鹿Madoka】
目录
3.4-4 选择重传协议(Selective Repeat)
3.4-1 流量控制与可靠传输机制
一、数据链路层的流量控制
较高的发送速度和较低的接受能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。
数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。
数据链路层流量控制手段:接收方收不下就不回复确认。
传输层流量控制手段:接收端给发送端一个窗口公告。
二、流量控制的方法
1. 停止-等待协议
每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧。
2. 滑动窗口协议
(1)后退N帧协议(GBN);(2)选择重传协议(SR);
发送方收到确认帧后,滑动窗口再后移。窗口的大小在传输过程中是固定的。
三、可靠传输、滑动窗口、流量控制
可靠传输:发送端发啥,接收端收啥。
流量控制:控制发送速率,使接收方有足够缓冲空间来接收每一个帧。
滑动窗口解决:①流量控制(收不下就不给确认,想发也发不了);②可靠传输(发送方自动重传);
总结:
3.4-2 停止-等待协议
一、停止-等待协议究竟是哪一层的?
在计算机网络发展的前期通信链路质量不是很好,所以链路层就担负起可靠传输这个职责。因此,链路层就会使用停止-等待协议、后退N帧协议、选择重传协议等等。随着现在技术的发展,通信链路质量越来越好,出现差错的可能性就不像之前那么大,所以链路层就可以暂时抛弃可靠传输这样一个职责,把这个责任交给传输层来实现,链路层主要负责差错控制。这样就会使得数据在链路上进行传递的过程当中速度更快,所用时间更小,延迟也就更小。
停止-等待协议、后退N帧协议、选择重传协议这三个协议在哪一层次,最后影响的只是传输数据的一个对象,如果这三个协议是传输层的,发送的数据就叫“分组”;如果协议是链路层的,发送的数据就叫“数据帧”。这里只是对象上命名的不同,本质都是要传送的数据。
二、停止-等待协议的出现原因和前提
1. 为什么要有停止-等待协议?
除了比特出错,底层信道还会出现丢包问题。
* 丢包:物理线路故障、设备故障、病毒攻击、路由信息错误等原因,会导致数据包的丢失。(数据:在链路层叫做“帧”,在网络层叫做“IP数据报”,在传输层叫“报文段”,在不同层次会有不同名字)
2. 研究停止-等待协议的前提?
(1)虽然现在常用全双工通信方式,但为了讨论问题方便,仅考虑一方发送数据(发送方),一方接收数据(接收方);
(2)因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一个层次上发送的;
(3)“停止-等待”就是每发送完一个分组就停止发送,等待对方确认,在收到确认后在发送下一个分组。
3. 停等协议有几种应用情况?
无差错情况&有差错情况
三、停等协议——无差错情况
四、停等协议——有差错情况
1. 数据帧丢失或检测到帧出错
2. ACK丢失(确认帧丢失)
丢掉后面重传的1帧,保留第一个。
3. ACK迟到
五、停止等待协议性能分析
优点:简单;
缺点:信道利用率低;
:发送方的发送时延;
:接收方的发送时延;
六、信道利用率
发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比率。
Question:一个信道的数据传输率为4kb/s,单向传播时延为30ms,如果使停止-等待协议的信道最大利用率达到80%,要求的数据帧长度至少为()。
Answer:(单位上4kb/s=4b/ms)
如果发送方的发送速率很快,数据在传输的路上花掉的时间就会相对较长,发送方就空闲很长时间。为了使信道利用率提高,就使用接下来的后退N帧协议(GBN)、选择重传协议(SR)。
总结:

3.4-3 后退N帧协议(GBN)
一、停等协议的弊端
流水线技术下的停止-等待协议可以解决信道利用率低的问题,但是同样会出现之前的差错情况,为了解决这些差错,就有了后退N帧协议(GBN)与选择重传协议(SR)。
二、后退N帧协议中的滑动窗口
三、GBN发送方必须响应的三件事
1. 上层的调用
上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需要将数据返回给上层,暗示上层窗口已满。上层等一会儿再发送。(实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧)。
2. 收到了一个ACK
GBN协议中,对n号帧的确认采用累计确认的方式,标明接收方已经收到n号帧和它之前的全部帧。
3. 超时事件
协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。就像在停止等待协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有已发送但未被确认的帧。
四、GBN接收方要做的事
(1)如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK,并将该帧中的数据部分交付给上层;
(2)其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息:expectedseqnum(下一个按序接收的帧序号)。
五、运行中的GBN
六、滑动窗口长度
Q:滑动窗口可以无限吗?
A:对滑动窗口的要求:若采用n个比特对帧编号,那么发送窗口的尺寸应满足:
。因为发送窗口尺寸过大,就会使得接收方无法区别新帧和旧帧(新帧旧帧数据重复的情况下发生这样的情况)。
七、GBN协议重点总结
1. 累积确认(偶尔稍带确认);
2. 接收方只按顺序接收帧,不按序无情丢弃;
3. 确认序列号最大的、按序到达的帧;
4. 发送窗口最大为,接收窗口大小为1;
习题一:
数据链路层采用了后退N帧(GBN)协议,发送方已经发送了编号为0~7的帧。当计时器超时时,若发送方只收到0、2、3号帧的确认,则发送方需要重发的帧数是( )。
A.2 B.3 C.4 D.5
看最大帧数3,可知已经收到了3及3之前的确认,应该重发4、5、6、7,共4帧。
习题二:
主机甲与主机乙之间使用后退N帧协议(GBN)传输数据,甲的发送窗口尺寸为1000,数据帧长为1000字节,信道带宽为100Mb/s,乙每收到一个数据帧立即利用一个短帧(忽略其传输延迟)进行确认,若甲、乙之间的单向传播时延是50ms,则甲可以达到的最大平均数据传输率约为( )。
A.10Mb/s B.20Mb/s C.80Mb/s D.100Mb/s
甲把发送窗口里面的数据全部发送所需的时间(甲传输延迟):
甲一个窗口可以装1000帧,一帧有1000字节(1000*8bit),100Mb/s 需换算成 bit/s
(单位:秒s) ,即80ms
甲收到确认帧的时间(第一个窗口的第一个帧):
(单位:毫秒ms)
甲从开始到结束发送完一个窗口的数据需要80ms,再等待20.08ms收到确认帧,窗口再向前移动。在100.08ms内完成一个窗口数据的传输。
(单位:Mb/s)
八、GBN协议性能分析
优点:因连续发送数据帧而提高了信道利用率;
缺点:在重传时必须把原来已经正确传送的数据帧重传,使传送效率降低;
为了解决效率低的问题,产生了一个新的协议“选择重传协议”。
总结:
3.4-4 选择重传协议(Selective Repeat)
一、GBN协议的弊端
GBN中的累计重传机制会导致批量重传,一个帧传错了,它后面所有的帧都要重传一次。
优化思路是:那么可不可以只重传出错的帧?
——可以,设置单个帧的确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧。
二、选择重传协议中的滑动窗口
三、SR发送方必须相应的三件事
1. 上层的调用
从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。
2. 收到了一个ACK
如果收到ACK,加入该帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前(右)移动到具有最小序号(窗口内)的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送者些帧。
3. 超时事件
每个帧都有自己的计时器,一个超时事件发生后只重传一个帧。
四、SR接收方要做的事
对接收窗口内应收到的帧来者不拒。SR接收方将确认一个正确接收的帧而不管其是否按序。失序的帧将被缓存,并返回给发送方一个帧的确认帧(收谁确认谁),直到所有帧(即序号更小的帧)皆被收到为止,这时才可以将一批帧按序交付给上层,然后向前移动滑动窗口。
运行中的SR(假设发送窗口和接收窗口尺寸都为4)
五、滑动窗口长度
Q:窗口长度可以无限吗?
第一种情况:ack0、ack1、ack2全部丢失,接收端收到的是第一个0号帧;
第二种情况:ack2丢失,接收端将会收到第二个0号帧;
问题在于 发送窗口 相对于 帧的编号 比过大。
发送窗口最好等于接收窗口(大了会溢出,小了没意义)
T为Send Window发送窗口,R为Receive Window接收窗口,n为用多少比特来编帧的序号。
本题中0、1、2、3共4位可以用2bit来编,所以本题中的n为2,窗口小于等于2时就不会出现问题。
六、SR协议重点总结
1. 对数据帧逐一确认,收一个确认一个;
2. 只重传出错帧
3. 接收方有缓存
4. 滑动窗口大小应小于等于
习题:
数据链路层采用了选择重传(SR)协议,发送方已经发送了编号为0~3的帧。现已收到1号帧的确认,而0、2号帧依次超时,则发送方需要重传的帧数为()。
2个帧,分别为0、2号帧。
总结:
边栏推荐
- Swift return type is a function of function
- 网上炒股开户安不安全?谁给回答一下
- 阿里 & 蚂蚁自研 IDE
- Summary of error prone knowledge points: Calculation of define s (x) 3*x*x+1.
- 2.8 overview of ViewModel knowledge
- temp
- 01_ Using the concurrent tool class library, is thread safety safe
- Wechat applet - basic content
- Oh my Zsh + TMUX installation
- 雲計算未來 — 雲原生
猜你喜欢
The future of cloud computing cloud native
If you can't learn, you have to learn. Jetpack compose writes an im app (II)
Integer string int mutual conversion
剑指Offer09. 用两个栈实现队列
TOGAF认证自学宝典V2.0
Use Tencent cloud IOT platform to connect custom esp8266 IOT devices (realized by Tencent continuous control switch)
If you can't learn, you have to learn. Jetpack compose writes an im app (I)
Public and private account sending prompt information (user microservice -- message microservice)
ES6 standard
(最新版) Wifi分销多开版+安装框架
随机推荐
Alibaba is bigger than sending SMS (user microservice - message microservice)
[combinatorics] permutation and combination (summary of permutation and combination content | selection problem | set permutation | set combination)
Use of atomicinteger
node的ORM使用-Sequelize
The best shortcut is no shortcut
Sqoop1.4.4原生增量导入特性探秘
ES6 standard
Sword finger offer06 Print linked list from end to end
Day 1 of kotlin learning: simple built-in types of kotlin
剑指Offer07. 重建二叉树
idea将web项目打包成war包并部署到服务器上运行
Jsup crawls Baidu Encyclopedia
145. Post order traversal of binary tree
Flutter 退出登录二次确认怎么做才更优雅?
手机号码变成空号导致亚马逊账号登陆两步验证失败的恢复网址及方法
If you can't learn, you have to learn. Jetpack compose writes an im app (II)
[ArcGIS user defined script tool] vector file generates expanded rectangular face elements
启用MemCached的SASL认证
Use bloc to build a page instance of shutter
Cloud Computing future - native Cloud