确保数据无差错、不丢失、不重复、按序到达接收方。
1. 确认(ACK):接收方通知发送方已正确收到数据
2. 超时重传(Timeout Retransmission):超时前未收到 ACK 则重传
3. 序号(Sequence Number):标识帧顺序,检测重复和乱序
| 类型 | 说明 | 优点 | 缺点 |
|---|---|---|---|
| 逐帧确认 | 每帧单独 ACK | 简单 | 开销大 |
| 累积确认 | ACKn 确认 n 及之前 | 减少 ACK 流量 | 出错时可能重传已确认帧 |
| 否定确认 NAK | 通知某帧出错 | 快速重传 | 增加复杂度 |
| 捎带确认 | ACK 搭载在数据帧中 | 减少帧数 | 需双向数据流 |
超时时间 > RTT(往返时延)+ 处理时间
太短:不必要的重传(网络延迟导致误判)
太长:出错时等待过长,降低效率
典型值:超时时间 ≈ 2 × RTT
发送帧 → 启动定时器
收到 ACK → 取消定时器,发送下一帧
定时器超时 → 重传该帧,重启定时器
n 位序号:序号范围 0 ~ 2ⁿ - 1
例:3 位序号 → 0~7,循环使用:0,1,2,...,7,0,1,2,...
发送窗口大小 Wt 与序号位数 n:
GBN: Wt ≤ 2ⁿ - 1
SR: Wt + Wr ≤ 2ⁿ
| 协议 | 确认方式 | 重传策略 | 序号范围 |
|---|---|---|---|
| 停止-等待 | 逐帧确认 | 超时重传一帧 | 0/1 交替 |
| GBN | 累积确认 | 超时重传后续所有帧 | 0~Wt-1 |
| SR | 逐帧确认 | 只重传出错帧 | 0~Wt+Wr-1 |
| 考点 | 说明 |
|---|---|
| 可靠传输三要素 | 确认、超时重传、序号 |
| 超时时间计算 | 基于 RTT 设定 |
| 序号空间大小 | 与窗口大小的关系 |
| 各协议实现差异 | 确认方式和重传策略 |
↑ 站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。