数据链路层 流量控制与可靠传输机制

基本概念

较高的发送速度较低的接收能力的不匹配,会造成传输出错,因此流量控制是数据链路层的一项重要工作。
数据链路层的流量控制是点对点(相邻节点之间的)的,传输层的流量控制是端到端的。
数据链路层流量控制手段:接收方 收不下 就 不回复确认。
传输层的流量控制手段:接收端给发送端一个窗口公告(告诉发送方我现在窗口有多少,缓冲区有多大)。
可靠传输:发送端发啥,接收端收啥
流量控制:控制发送速率,使接收方有足够的缓冲空间来接收每一个帧。

流量控制的方法

停止-等待协议(发送窗口大小=1,接收窗口大小=1)

为什么要有停止-等待协议?除了比特出差错,底层信道还会有丢包问题(物理线路故障、设备故障、病毒攻击、路由信息错误等造成的数据包的丢失)

每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧。

差错情况1:数据帧丢失或检测到数据帧出错

超时计时器:每次发送一个帧就启动一个计时器(超时计时器设置的重传时间应当比帧传输的平均RTT更长一些)
发送端的要求:

  1. 发完一个帧后,必须保留它的副本
  2. 数据帧和确认帧必须编号
    在这里插入图片描述

差错情况2:ACK丢失(确认帧丢失)

发送端:超时未收到确认帧会重传
接收端:丢弃重复的1帧,重传确认1帧
在这里插入图片描述

差错情况3:ACK迟到

发送端:收到重复的确认帧就丢弃
在这里插入图片描述

性能分析

简单!信道利用率低!
RTT:往返时延
在这里插入图片描述
信道利用率:发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比率。
发送方从一开始发送数据到收到第一个确认帧为止,称为一个发送周期T。发送方在这个周期内发送L比特的数据,发送方的传输速率为C,则发送方用于发送有效数据的时间为L/C
在这里插入图片描述
在这里插入图片描述
其中:L是未知的,发送方的传输速率C为4kb/s,周期为:发送端发送数据的时间L/C + 往返传输时延,就是L/4 + 2*30ms了,带入公式得出L=960bit

后退N帧协议(GBN)(发送窗口大小>1,接收窗口大小=1)

在这里插入图片描述

发送方必须响应的三件事

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

接收方必须要做的事

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

滑动窗口长度的长度🍕🍕🍕

在这里插入图片描述

选择重传协议(SR)(发送窗口大小>1,接收窗口大小>1)🍕🍕🍕

为了解决GBN需要批量重传的问题,可以只传送出错的帧。需要设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧。
在这里插入图片描述

发送方必须响应的三件事

  1. 上层的调用。从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧:否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。
  2. 收到了一个ACK。如果收到ACK,加入该序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。
  3. 超时事件。每个帧都有自己的定时器,一个超时事件发生后只重传一个帧。

接收方必须要做的事

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

运行中的SR

在这里插入图片描述

SR协议重点总结

  1. 对数据帧逐一确认,收到一个确认一个
  2. 只重传出错帧
  3. 接收方有缓存
  4. 滑动窗口长度:🍕🍕🍕
    T是发送方,R是接收方,n是用n个比特对帧编号,比如帧编号是0 1 2 3,需要2个比特,n=2。
    在这里插入图片描述
  • 17
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值