计算机网络——数据链路层之流量控制和可靠传输

参考链接

  1. CSKAOYAN.COM

流量控制和可靠传输

概念

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

可靠传输、滑动窗口、流量控制
  1. 可靠传输:发送端发啥,接收端收啥

  2. 流量控制:控制发送速率,使接收方有足够的缓冲空间来接收每一个帧

  3. 滑动窗口解决:i) 流量控制(收不下就不给确认,想发送也发不了);ii) 可靠传输(发送方自动重传)

丢包

丢包:物理线路故障、设备故障、病毒攻击、路由信息错误等原因,会导致数据包的丢失

数据链路层和传输层的流量控制

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

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

传输层流量控制手段:接收端给发送端一个窗口公告

流量控制方法

停止-等待协议

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

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

无差错情况

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

有差错情况
  1. 数据帧丢失或检测到帧出错
    i) 发完一个帧后,必须保留它的副本
    ii) 数据帧和确认帧必须编号
    iii) 超时计算器:每次发送一个帧就启动一个计时器
    iv) 超时计算器设置的重传时间应当比帧传输的平均RTT更长一些

  2. ACK丢失
    与1类似,超时重传

  3. ACK迟到
    i) 发送端会超时重传,接收端会丢弃重复的帧,然后重传确认帧
    ii) 发送端收到迟到的ACK,直接丢弃

性能分析

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

信 道 利 用 率 = ( L / C ) T 信道利用率=\frac{\left ( L/C\right )}{T} =T(L/C)

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

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

停等协议信道利用率 U = T D T D + R T T + T A U=\frac{T_{D}}{T_{D}+RTT+T_{A}} U=TD+RTT+TATD

所以其信道利用率太低。如果要提高信道利用率,可以使用流水线技术:

  1. 必须增加序号范围
  2. 发送方需要缓存多个分组
滑动窗口协议
后退N帧协议(GBN)

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

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

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

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

  2. 收到了一个ACK
    GBN协议中,对n号帧的确认采用累积确认的方式,表明接收方已经收到n号帧和它之前的全部帧

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

GBN接收方要做的事
  1. 如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK,并将该帧中的数据部分交付给上层

  2. 其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何时序帧,只需要维护一个信息:expectedseqnum(下一个按序接收的帧序号)

滑动窗口长度

若采用n个比特对帧编号,那么发送窗口的尺寸 W T W_T WT应满足: 1 ⩽ W T ⩽ 2 n − 1 1\leqslant W_{T}\leqslant 2^{n}-1 1WT2n1。因为发送窗口尺寸过大,就会使得接收方无法区别新帧和旧帧

GBN协议性能分析
  1. 因连续发送数据帧而提高了信道利用率
  2. 在重传时必须把原来已经正确传送的数据帧重传,使传送效率降低
选择重传协议(SR)

GBN的弊端:累积确认导致批量重传

解决方法:设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧

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

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

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

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

SR接收方要做的事

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

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

滑动窗口长度

发送窗口最好等于接收窗口。(大了会溢出,小了没意义)
W T m a x = W R m a x = 2 n − 1 W_{Tmax}=W_{Rmax}=2^{n-1} WTmax=WRmax=2n1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值