# 3.4 流量控制与可靠传输机制 ## 一、流量控制 ### 1.1 什么是流量控制 **流量控制**:控制发送方的发送速率,使接收方来得及接收,防止数据丢失。 ### 1.2 为什么需要流量控制 **原因**: - 接收方处理速度有限 - 接收缓冲区容量有限 - 发送方发送速度可能超过接收方处理能力 **后果**: - 数据丢失 - 需要重传 - 降低效率 --- ## 二、可靠传输 ### 2.1 什么是可靠传输 **可靠传输**:保证数据无差错、无丢失、无重复、按序到达。 ### 2.2 可靠传输的机制 **确认机制**: - 接收方收到数据后发送确认(ACK) - 发送方收到确认后继续发送 **超时重传**: - 发送方启动定时器 - 超时未收到确认,重传数据 **序号机制**: - 给每个数据分组编号 - 检测重复和失序 --- ## 三、停止-等待协议 ### 3.1 基本原理 **思想**: - 发送方发送一个分组后,停止发送 - 等待接收方的确认 - 收到确认后再发送下一个分组 ### 3.2 工作流程 ``` 发送方 接收方 | | |-------- 分组0 --------->| | | |<------- ACK0 ----------| | | |-------- 分组1 --------->| | | |<------- ACK1 ----------| | | ``` ### 3.3 差错处理 **数据分组出错或丢失**: - 发送方超时未收到ACK - 重传该分组 **ACK丢失**: - 发送方超时未收到ACK - 重传该分组 - 接收方收到重复分组,丢弃,重发ACK **ACK迟到**: - 发送方超时重传 - 收到迟到的ACK,丢弃 ### 3.4 性能分析 **信道利用率**: $$U = \frac{T_d}{T_d + RTT + T_a}$$ 其中: - Td:发送数据的时间 - RTT:往返时间 - Ta:发送确认的时间 **特点**: - 简单 - 信道利用率低 - 适合短距离、低速率通信 --- ## 四、滑动窗口协议 ### 4.1 基本原理 **思想**: - 发送方可以连续发送多个分组 - 不需要等待每个分组的确认 - 使用窗口控制发送和接收 ### 4.2 发送窗口 **发送窗口**: - 允许发送方连续发送的分组序号范围 - 窗口大小:Wt **窗口状态**: - **已发送并确认**:窗口左侧 - **已发送未确认**:窗口内,等待确认 - **允许发送但未发送**:窗口内,可以发送 - **不允许发送**:窗口右侧 ### 4.3 接收窗口 **接收窗口**: - 允许接收方接收的分组序号范围 - 窗口大小:Wr **窗口状态**: - **已正确接收**:窗口左侧 - **期望接收**:窗口内 - **不允许接收**:窗口右侧 ### 4.4 工作流程 ``` 发送方: 1. 发送窗口内的分组 2. 收到确认,窗口滑动 3. 超时未收到确认,重传 接收方: 1. 接收窗口内的分组 2. 发送确认 3. 窗口滑动 ``` --- ## 五、后退N帧协议(GBN) ### 5.1 基本原理 **思想**: - 发送窗口 > 1,接收窗口 = 1 - 接收方只接收按序到达的分组 - 发送方超时,重传该分组及其之后的所有分组 ### 5.2 发送窗口 **大小**: - 1 ≤ Wt ≤ 2ⁿ - 1 - n为分组序号的位数 **特点**: - 可以连续发送多个分组 - 只需要一个定时器(最老的未确认分组) ### 5.3 接收窗口 **大小**:Wr = 1 **特点**: - 只接收期望序号的分组 - 失序分组丢弃 - 对按序到达的最后一个分组发送确认(累积确认) ### 5.4 工作流程 ``` 发送方发送:0, 1, 2, 3, 4, 5 情况1:分组2丢失 - 接收方收到0, 1,发送ACK1 - 分组2丢失 - 接收方收到3, 4, 5(失序),丢弃 - 发送方超时,重传2, 3, 4, 5 情况2:ACK2丢失 - 收到ACK1,未收到ACK2 - 超时后重传2, 3, 4, 5 ``` ### 5.5 特点 **优点**: - 简单 - 只需要一个定时器 - 累积确认效率高 **缺点**: - 一个分组出错,重传多个分组 - 信道质量差时效率低 --- ## 六、选择重传协议(SR) ### 6.1 基本原理 **思想**: - 发送窗口 > 1,接收窗口 > 1 - 接收方接收所有落在窗口内的分组 - 发送方只重传出错的分组 ### 6.2 发送窗口 **大小**: - 1 ≤ Wt ≤ 2ⁿ⁻¹ - n为分组序号的位数 **特点**: - 可以连续发送多个分组 - 每个分组一个定时器 - 只重传出错的分组 ### 6.3 接收窗口 **大小**: - Wr = Wt(通常) - Wr ≤ 2ⁿ⁻¹ **特点**: - 接收所有落在窗口内的分组 - 缓存失序分组 - 对每个正确接收的分组发送确认(非累积确认) ### 6.4 工作流程 ``` 发送方发送:0, 1, 2, 3, 4, 5 情况1:分组2丢失 - 接收方收到0, 1,发送ACK0, ACK1 - 分组2丢失 - 接收方收到3, 4, 5(在窗口内),缓存 - 发送ACK3, ACK4, ACK5 - 发送方收到ACK,窗口滑动 - 分组2超时,只重传2 - 接收方收到2,按序交付0-5 情况2:ACK2丢失 - 分组2的定时器超时,重传2 - 接收方收到重复2,丢弃,重发ACK2 ``` ### 6.5 窗口大小限制 **为什么Wt ≤ 2ⁿ⁻¹**: - 避免接收方无法区分新分组和重传分组 - 如果Wt = 2ⁿ,发送窗口和接收窗口可能完全重叠 - 重传的分组可能被误认为新分组 ### 6.6 特点 **优点**: - 只重传出错的分组 - 效率高 - 适合信道质量差的情况 **缺点**: - 复杂 - 需要多个定时器 - 需要缓存失序分组 --- ## 七、三种协议比较 | 特性 | 停止-等待 | GBN | SR | |-----|----------|-----|-----| | 发送窗口 | 1 | >1 | >1 | | 接收窗口 | 1 | 1 | >1 | | 缓存 | 不需要 | 不需要 | 需要 | | 定时器 | 1个 | 1个 | 多个 | | 确认方式 | 单个ACK | 累积ACK | 单个ACK | | 重传方式 | 重传1个 | 重传N个 | 重传1个 | | 效率 | 低 | 中 | 高 | | 复杂度 | 低 | 中 | 高 | --- ## 八、考研重点 1. **流量控制**:概念、目的 2. **可靠传输**:概念、机制(确认、超时重传、序号) 3. **停止-等待协议**: - 工作原理 - 差错处理 - 信道利用率计算 4. **滑动窗口协议**: - 发送窗口、接收窗口 - 窗口滑动机制 5. **后退N帧协议(GBN)**: - 工作原理 - 窗口大小 - 累积确认 - 重传机制 6. **选择重传协议(SR)**: - 工作原理 - 窗口大小限制(Wt ≤ 2ⁿ⁻¹) - 非累积确认 - 缓存机制 7. **三种协议比较** --- *下一节:3.5 介质访问控制*