(二)流量控制和可靠传输
1. 概念和方法
1.1. 流量控制
控制发送方的发送速度,以和接收方的速度匹配;
方法:滑动窗口机制,限制发送方一次性发送的数据帧数量;
1.2. 可靠传输
确保接收方按正确的顺序收到正确的数据帧;
方法:确认和重传机制;
2. 停止 - 等待协议
自动重传请求(ARQ)机制:指发送端自动请求重传的一种机制;
该协议可视为一个窗口大小为 1 的滑动窗口协议;
2.1. 无差错

2.2. 有差错:超时重传

B 未收到或受到错误帧时,不会发送确认信号,A 超时未收到回应,进行重传;
为实现超时重传,A 需要暂存当前要发送的帧,且分组要进行编号;
超时时间应略大于数据帧的平均往返时间;
2.3. 确认帧丢失

B 丢弃重复的
,并再次发送确认帧; 为了分辨重复的数据帧,分组需要编号;
2.4. 确认迟到

2.5. 信道利用率

停止等待协议的信道利用率:
(无差错情况下); ,为数据帧平均往返时间,其中 为端到端的传播时延; :发送端发送分组所需时间; :接收端进行确认所需时间;
2.6. 流水线传输

发送端可以连续发送最多
个分组,而不必每发送一个分组就需要等待确认; 此时:
; 信道利用率达到最大时,最小的
,满足:
3. 连续 ARQ 协议
- 即发送窗口
的 ARQ 协议;
3.1. 滑动窗口机制

- 发送窗口:实现流量控制,其大小和接收端接受能力有关;
3.2. 帧的分类
不允许发送:不在滑动窗口里的帧,上图 (b) 的 1 和 7~12 号;
已发送且已确认:1 号;
未发送但不允许发送:7~12 号;
已发送但未确认:滑动窗口里除最前一个以外的,上图 2~5 号;
可以发送但未发送:滑动窗口里的最前一个,上图 6 号;
3.3. 错误帧处理
后退 N 帧协议(GBN,Go-back N,常考)
发送多个帧时,若中间某帧丢失(但其之前的帧均完好),则接收端只对丢失帧以前的帧进行确认;
发送端需要将此丢失帧及其之后的帧全部重发;
累积确认
发送端不必对收到的每一帧都发送确认帧;
发送端对按序到达的最后一帧发送确认,表示此帧及其之前的都已正确接收;
优点:容易实现,节约带宽;
缺点:中间帧丢失时,只能确认到此帧之前,对于此帧之后的帧,不能反应正确接收的情况;
选择重传协议(SR)
接收端用一个缓冲区暂存收到的帧;
接收端可要求发送端重传出错的帧,并在收到正确的帧后,和缓冲区中其余帧组合为正确的数据发往上层;
此协议不能用累计确认;
3.4. 滑动窗口实现
数据结构
发送端:设置变量 SWS(Send Window Size),称为发送窗口;
接收端:设置变量 RWS(Receive Window Size),称为接收窗口;
SWS:表示在发送端没有收到确认的情况下,最多可以发送的帧个数;
- 停止等待协议可视为 SWS=1 的一种;
发送端规则
窗口内的帧:允许发送,不考虑是否收到确认;
窗口右侧的帧:不允许发送;
每发送完一帧,SWS - 1,但发送窗口的位置不变,SWS 为 0 时不得继续发送;
收到一个帧的确认时,窗口向右移动一位,SWS + 1;
- 累计确认时,一次可以移动多位,对应 SWS + n;
捎带确认
接收端不会立即回发确认帧,而是等待一小段时间;
若接收端同时还有发送到发送端的数据帧,则将确认帧附加在数据帧上一并发送;
与单独发送确认帧区分:捎带确认的回复时间较长;
接收端规则
收到的帧序号和接收窗口的序号一致时才接收,否则丢弃;
每正确接收一帧,接收窗口向右滑动一位,并发送该帧确认信号;
- 累计确认时,可以滑动多位;
SWS 和 RWS 的设置:
RWS = 1:一次只接受一个帧;
RWS = SWS:一次性可以接受发送的全部帧;
RWS > SWS:无意义;
SWS 最大值:
, 是发送的不同帧序号的个数; 例:帧序号用 3 个 bit 编码,则可表示的序号为 0~7,共 8 个不同序号值;
原:SWS = 8,RWS = 1,发送端发送帧 0~7,接收方正确接收,但回发的确认帧丢失,则此时:
发送端重传帧 0~7;
接收端应将新收到的帧 0 丢弃,但接收端无法区分收到的帧 0 是属于上一批重复的还是新的一批帧;
改:SWS = 7,RWS = 1,发送端发送帧 0~6,确认信号丢失,此时:
发送端重传帧 0~6;
接收端已收到帧 0~6,等待帧 7,则收到重发的帧时会出现序号不匹配,能正确地丢弃重复帧;
GBN 协议下,
, 为编码帧序号的 bit 个数; 选择重传协议下,
;
ACK 确认帧含义
1)确认收到 k 号帧;
2)k -1 号帧及其之前的全部接收,准备接收 k 号帧(常考)