数据链路层之流量控制和可靠传输机制(停止-等待协议、后退N帧协议(GBN)、选择重传协议(SR))

举报
哥的时代 发表于 2023/12/24 21:27:36 2023/12/24
【摘要】 以上就是数据链路层之流量控制和可靠传输机制(停止-等待协议、后退N帧协议(GBN)、选择重传协议(SR))的相关知识点,希望对你有所帮助。 积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…


前言:流量控制简介

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

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

数据链路层流量控制手段:接收方收不下就不回复确认。

数据链路层流量控制手段:接收方收不下就不回复确认。

可靠传输:发送端发啥,接收端收啥。
流量控制:控制发送速率,使接收方有足够的缓冲空间来接收每一个帧
滑动窗口解决:

  • 流量控制(收不下就不给确认,想发也发不了)
  • 可靠传输(发送方自动重传)

一、停止-等待协议

发送窗口大小=1,接收窗口大小=1;

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

除了比特出差错,底层信道还会出现丢包问题。(丢包:物理线路故障、设备故障、病毒攻击、路由信息错误等原因,会导致数据包的丢失。)

所以为了实现流量控制,而有停止-等待协议。

2.研究停等协议的前提?

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

因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一个层次上传送的。

“停止-等待”就是每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。

3.停等协议有几种应用情况?

两种:
无差错情况&有差错情况

4.停等协议――无差错情况

image.png

每发送1个数据帧就停止并等待,因此用1bit来编号就够。

5.停等协议――有差错情况

1、数据帧丢失或检测到帧出错

image.png

注意:

  • 1.发完一个帧后,必须保留它的副本。

  • ⒉数据帧和确认帧必须编号。

2.ACK丢失

image.png

3、ACK迟到

此时是第一次发送的ACK0在重传0帧接收到重传的ACK0之后

image.png

还有一种是第一次发送的ACK0在重传0帧接收到重传的ACK0之前
image.png

情况也是一样的,只不过此时是重传的0帧返回的ACK0收到被丢弃罢了。

6、停等协议性能分析

总结就是

  • 简单
  • 信道利用率太低
    image.png

image.png

信道利用率:发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比率。

信道利用率=(L/C)/T

L:T内发送L比特数据
C:发送方数据传输率
T:发送周期(从开始发送数据,到收到第一个确认帧为止)

信道吞吐率=信道利用率*发送方的发送速率

例题:
一个信道的数据传输率为4kb/s,单向传播时延为30ms,如果使停止-等待协议的信道最大利用率达到80%,要求的数据帧长度至少为()。

解答:
80%=L/4/(L/4+2×30ms)
即80%=L/(L+2×30ms×4kb/s)
所以L=960bit

image.png

二、后退N帧协议(GBN)

发送窗口大小>1,接收窗口大小=1;

前提:累计确认

当接收方按序收到的几个帧都是正确的接收,那么此时会返回一个ACKn,此时的ACKn对于发送方来讲就是:n帧以及n帧前面的所有帧都已经发送成功,这个就叫累计确认。

稍带确认:发送方和接收方都可进行通信,所以可以在发送数据时将确认帧给发送,进行通信。

1、后退N帧协议(GBN)流程

发送窗口:发送方维持一组连续的允许发送的帧的序号。
接收窗口:接收方维持一组连续的允许接收帧的序号。

此时是发送方发送的0帧到达后,返回ACK0给发送方,并且发送方并不是发送一帧数据,1帧也在路上
image.png

在发送方接收到ACK0后滑动窗口会向后移动,
image.png

发送方可以简单分为这四类
image.png

2、GBN发送方必须响应的三件事

1、上层调用

上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需将数据返回给上层,暗示上层窗口已满。上层等一会再发送。(实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧)。

2、收到了一个ACK

GBN协议中,对n号帧的确认采用累积确认的方式,标明接收方已经收到n号帧和它之前的全部帧。

3、超时事件

协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。就像在停等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有已发送但未被确认的帧。

3、GBN接收方要做的事

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

4、运行中的GBN

image.png

5、滑动窗口长度

窗口长度可以无限吗?
当时是不可以的。

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

6、GBN协议重点总结

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

例题1:
数据链路层采用了后退N帧(GBN )协议,发送方已经发送了编号为0~7的帧。当计时器超时时,若发送方只收到0、2、3号帧的确认,则发送方需要重发的帧数是()。

解答:
发送方收到0、2、3号帧,由于累计确认,我们可以认为3号帧以及3号帧之前的都已经接收到了,所以需要重新发的是4、5、6、7号帧。

7、GBN协议性能分析

  • 因连续发送数据帧而提高了信道利用率
  • 在重传时必须把原来已经正确传送的数据帧重传,是传送效率降低。

三、选择重传协议(SR)

发送窗口大小>1,接收窗口大小>1;

1、选择重传协议(SR)流程

image.png

发送方的数据分类:
image.png

接收方的数据分类:
image.png

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

1.上层的调用

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

2.收到了一个ACK

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

3.超时事件

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

2、SR接收方要做的事

来者不拒(窗口内的帧)

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

image.png

如果收到了窗口序号外(小于窗口下界)的帧,就返回一个ACK.
其他情况,就忽略该帧。

3、滑动窗口长度

发送窗口最好等于接收窗口。(大了会溢出,小了没意义)
W_Tmax=W_Rmax=2^(n-1)

4、SR协议重点总结

  • 1.对数据帧逐一确认。收一个确认一个
  • 2.只重传出错帧
  • 3.接收方有缓存
  • W_Tmax=W_Rmax=2^(n-1)

例题1:
数据链路层采用了选择重传(SR)协议,发送方已经发送了编号为O~3的帧。现已收到1号帧的确认,而0、2号帧依次超时,则发送方需要重传的帧数是()

解答:
在SR协议中,对数据帧逐一确认,收一个确认一个,所以1号帧肯定已经接收到了。
因为0、2号帧超时,所以0、2号帧需要重传。因3号帧有缓存,所以还不需要重传。


总结

以上就是数据链路层之流量控制和可靠传输机制(停止-等待协议、后退N帧协议(GBN)、选择重传协议(SR))的相关知识点,希望对你有所帮助。
积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。