4.流量控制与可靠传输机制 - wolai 笔记

1.可靠传输机制

可靠传输机制是为了使数据可以正确稳定的传输和接收而制定的规则。
数据链路层的可靠传输通常使用确认超时重传两种机制来完成。
确认是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接收。有些情况下为了提高传输效率,将确认捎带在一个回复帧中,称为捎带确认
超时重传是指发送方在发送某一个数据帧以后就开始一个计时器,在一定时间内如果没有得到发送的数据帧的确认帧,那么就重新发送该数据帧,直到发送成功为止。
自动重传请求(Auto Repeat reQuest,ARQ),通过接收方请求发送方重传出错的数据帧来恢复出错的帧,是通信中用于处理信道所带来差错的方法之一。
传统自动重传请求分为三种,即停等式(Stop-and-Wait)ARQ、后退N(Go-Back-N)ARQ以及选择性重传(Selective Repeat)ARQ。后两种协议是滑动窗口技术与请求重发技术的结合,由于窗口尺寸开到足够大,帧在线路上可以连续地流动,因此又称为连续ARQ协议。

2.链路层的流量控制

2.1 概述

较高的发送速度较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。
数据链路层流量控制是点对点的,而传输层的流量控制是端到端的
数据链路层流量控制手段:接收方收不下就不回复确认
传输层流量控制手段:接收端给发送端一个窗口公告。

2.2流量控制方法

(1) 停止-等待协议

发送窗口大小=1,接收窗口大小=1.
没发往一个帧就停止发送,等待对方的确认,在收到确认后再发送下一帧

(2) 滑动窗口协议

  • 后退N帧协议(GBN):发送窗口大小>1,接收窗口大小=1.
  • 选择重传协议(SR):发送窗口大小>1,接收窗口大小>1.

2.3 滑动窗口机制

滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口
发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。
不同的滑动窗口协议窗口大小一般不同。
发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。
发送端,每收到一个确认帧,发送窗口就向前滑动一个帧的位置,当发送窗口内没有可以发送的帧(即窗口内的帧全部是已发送但未收到确认的帧),发送方就会停止发送,直到收到接受方发送的确认帧使窗口移动,窗口内有可以发送的帧,之后才开始继续发送。
接受端,当收到数据帧后,将窗口向前移一个位置,并发回确认帧,若收到的数据帧落在接受窗口之外则一律丢弃。
滑动窗口有以下重要特性
  1. 只有接受窗口向前滑动时(同时接受方发送确认帧),发送窗口才有可能(只有发送方收到确认帧才是一定)向前滑动。
  2. 从滑动窗口的概念看,停止-等待协议、后退N帧协议和选择重传协议只有在发送窗口大小和接收窗口大小有所差别。
  3. 停止-等待协议发送窗口大小=1,接受窗口大小=1
  4. 后退N帧协议发送窗口大小>1,接受窗口大小=1
  5. 选择重传协议发送窗口大小>1,接受窗口大小>1
  6. 当接受窗口的大小为1时,可保证帧的有序接受。

2.4 可靠传输、流量控制、滑动窗口之间的关系

3.停止-等待协议

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

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

3.2 研究停等协议的前提

虽然现在常用全双工通信方式,但为了讨论问题方便,仅考虑一方发送数据(发送方),一方接收数据(接收方)。
因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一个层次上传送的。
“停止-等待”就是每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。

3.3 停等协议有几种应用情况

(1)无差错情况

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

(2)有差错情况

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

超时计时器:每次发送一个帧就启动一个计时器。
超时计时器设置的重传时间应当比帧传输的平均RTT更长一些。
注意
- 发完一个帧后,必须保留他的副本
- 数据帧和确认中必须编号

ACK丢失

ACK迟到

3.4 停等性能分析

简单,信道利用率太低
信道利用率=TDTD+RTT+TA信道利用率 = \frac {T_D}{T_D + RTT + T_A}
由于停等协议要为每一个帧进行确认后才继续发送下一帧,大大降低了信道利用率,因此又提出了后退n帧协议(GBN)和选择重传协议(SR)

3.5 信道利用率

发送方从开始发送数据到收到第一个确认帧ACK为止,这段时间称为一个发送周期
发送方在一个发送周期内,有效的发送数据所需要的时间占整个发送周期的比例。
信道利用率=L/CT信道利用率 = \frac {L/C}{T}
其中:
  • L:T内发送L比特数据
  • C:发送方数据传输率
  • T:发送周期,从开始发送数据,到接收到第一个确认帧为止
示例:一个信道的数据传输率为4kb/s,单向传播时延为30ms,如果使停止-等待协议的信道最大利用率达到80%,要求的数据帧长度至少为多少?
  • 80% = (L/4) / (L/4 + 2 * 30ms)
  • L = 960bit

4.后退N帧协议(GBN)

4.1 滑动窗口

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

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

(1)上层的调用

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

(2)收到了一个ACK

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

(3)超时事件

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

4.3 GBN接收方要做的事

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

4.4 运行中的GBN

出现超市:发送方重传所有已发送但未被确认的帧

4.5 滑动窗口的长度

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

4.6 GBN协议重点总结

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

4.7 GBN协议性能

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

4.8 Sample

主机甲与主机乙之间使用后退N帧协议(GBN)传输数据,甲的发送窗囗尺寸为1000,数据帧长为1000字节,信道带宽为100Mb/s,乙每收到一个数据帧立即利用一个短帧(忽略其传输延迟)进行确认,若甲、乙之间的单向传播时延是50ms,则甲可以达到最大平均数据传输率约为多少?
  • 甲发送完所有数据需要的时间:100010008b/100Mb/s=80ms1000 * 1000 * 8b / 100Mb/s = 80ms
  • 甲发送一帧收到确认的时间:250ms+10008b/100Mb/s=100.08ms2 * 50ms + 1000 * 8b/ 100Mb/s = 100.08ms
  • 甲平均传输速率:100010008b/100.08ms=80Mb/s1000 * 1000 * 8b / 100.08ms = 80Mb/s
  • 因为接收端可以累积确认,所以只要看最大的确认帧就行,所以接下来发送方要重发的帧数为4

5.选择重传协议(SR)

在后退n协议中,接收方若发现错误帧就不再接收后续的帧,即使是正确到达的帧,这显然是一种浪费。由此诞生了SR(SELECTICE REPEAT)。
SR工作原理当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给接收方的高层,但接收方仍可收下来,存放在一个缓冲区中,同时要求发送方重新传送出错的那一帧。一旦收到重新传来的帧后,就可以将已存于缓冲区中的其余帧一并按正确的顺序递交上一层。
显然,选择重发减少了浪费,但要求接收方有足够大的缓冲区空间。

5.1 GBN协议弊端

累计确认 ---> 批量重传
解决办法:设置单个确认,同时加大接受窗口,设置接受缓存,存储乱序到达的帧。

5.2 滑动窗口

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

(1)上层的调用

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

(2)收到了一个ACK

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

(3)超时时间

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

5.4 SR接收方要做的事

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

5.5 运行中的SR

5.6 滑动窗口的长度

发送窗口最好等于接受窗口(大了会移除,小了没意义)
WTmax=WRmax=2n1W_{Tmax} = W_{Rmax} = 2^{n-1}

5.7 SR协议重点总结

  1. 对数据逐一确认,收一个确认一个
  2. 只重传出错帧
  3. 接收方有缓存
  4. 最大发送和接受
WTmax=WRmax=2n1W_{Tmax} = W_{Rmax} = 2^{n-1}

Comment
avatar
Dongnian
A salty fish swimming in the sea of deep learning!
Follow Me
Announcement
Welcome to My Personal Blog!
If Not, Please Visit Gitee Mirror.