【3-3】流量控制与差错控制
前言
前面提到了广域网的链路层协议——HDLC协议,它里面提到了四类监控帧,分别是:RR(Receive Ready)、RNR(Receive Not Ready)、REJ(Reject)、SREJ(Selective Reject)。可是它们大体上是如何工作的呢?本文就来简要介绍一下。
文章目录
- 前言
- 1. 流量控制
- 1.1. 停等协议
- 2. 差错控制
- 2.1. 后退N帧ARQ协议
- 2.2. 选择重发ARQ协议
- 后记
- 修改记录
1. 流量控制
我们知道,串口通讯时,双方可以商定好波特率,使用一样的波特率来发送和接收比特流。可是这是对于简单的发送和接收,如果双方的处理能力不一致呢?就比如发送方是超算实验室而接收方是家用机顶盒。这就需要协调发送和接收的速度了。
在数据传输中,数据流量控制是一个能管理两个节点之间数据传输速度的机制,由于数据发送方的发送速度和数据接收方的处理速度并不一致,数据流量控制为数据接收方提供了一种控制发送方传输速度的机制,使数据接收方节点不会被数据发送方节点发来的数据所淹没。
1.1. 停等协议
所谓停等协议(Stop-and-Wait Protocol
),顾名思义,就是接收方每收到一帧就回送一个确认信号,表示愿意接收下一帧,如果接收方不应答,发送方必须停下来等待。
其流程大致如下图所示:
此协议的诞生是有一定的原因的,因为设备间通讯最早很多依赖于总线型协议,也就是同一时刻只有一个设备(一般称之为主机、主站)在广播发送请求,然后等待被动的设备(一般称之为从机、从站)响应回传应答。
正常情况下,一个主机会对应很多从机。停等协议不外乎一种“总线型思维”,一收一发,发了就等,收到应答了就继续发送后续的帧。
这种思想,对应 HDLC 中的 S帧 的 RR、RNR
2. 差错控制
当接收方出现处理错误后,可以要求发送方重传。
2.1. 后退N帧ARQ协议
于是,我们有了 后退N帧ARQ协议 Go-Back-N Automatic Repeat reQuest
,它的核心思路为:接收方接收到正确无误的数据包后,会发送一个确认(ACK),确认所有已正确接收该数据包。如果需要发送方重传,接收方就返回否认(NACK),发送方就要返回出错的帧的位置来重新传输,如下图所示:
这部分思想,对应 HDLC S帧的 REJ
2.2. 选择重发ARQ协议
随着设备存储、计算能力的发展,人们逐渐有了“缓冲区”的概念。人们发现设备接收到数据后,不应该急着处理,而是放到 “缓冲区” 中,逐步去处理。这就启发了人类去创造 《选择重发ARQ协议》,也就是 Selective Repeat ARQ
。
它的核心思想是:接收方可以接收并缓冲窗口内的任何帧,即使它们不是按顺序到达的。如果某个帧丢失或损坏,接收方可以告诉发送方重传单个帧。
其过程大致如下图所示:
这部分思想,对应 HDLC S帧的 SREJ
后记
文中有任何错误、遗漏,烦请各位老铁在评论区指出,共同学习进步。
修改记录
更新日期 | 修改内容 |
---|---|
2025年8月19日 | 完成初稿 |
2025年8月20日 | 去除滑动窗口的部分,此处引入该概念并不合适,应从TCP处开始讲解 |