主题
概念卡片:TCP 可靠传输与拥塞控制
一句话机制:TCP 的可靠传输靠 「序号 + 确认 + 超时重传 + 校验和 + 去重」 五件套保证;在此基础上,滑动窗口做流量控制(别把接收方撑爆),拥塞控制做全局调控(别把网络撑爆)。流量控制是端到端「点对点」,拥塞控制是「全局性」过程。
可靠传输的八大手段
- 应用数据被分割成 TCP 认为最适合发送的数据块。
- 每个包编号,接收方排序后交给应用层。
- 校验和:端到端校验,检测传输中的任何变化,有差错即丢弃。
- 接收端丢弃重复数据。
- 流量控制:接收端只允许发送端发它缓冲区能装下的数据,用可变大小滑动窗口实现。
- 拥塞控制:网络拥塞时减少发送。
- ARQ 协议:每发完一个分组就停、等确认,再发下一个。
- 超时重传:发段后启动定时器,未及时收到确认则重发。
ARQ(自动重传请求)
| 类型 | 机制 | 优点 | 缺点 |
|---|---|---|---|
| 停止等待 ARQ | 发一个停一个等 ACK | 简单 | 信道利用率低、等待长 |
| 连续 ARQ(Go-Back-N) | 发窗口内分组连续发,累积确认 | 信道利用率高 | 中间丢一个(如 3 号)→ 后面全部回退重传 |
确认丢失:A 重传,B 丢弃重复并再次确认;确认迟到:双方各自丢弃重复。
流量控制 vs 拥塞控制
| 流量控制 | 拥塞控制 | |
|---|---|---|
| 范围 | 点对点、端到端 | 全局(所有主机、路由器) |
| 目标 | 抑制发送端速率,让接收端来得及 | 防止过多数据注入网络,避免过载 |
| 手段 | 滑动窗口(接收窗口字段) | 拥塞窗口 cwnd(慢开始/拥塞避免/快重传/快恢复) |
发送窗口 = min(拥塞窗口 cwnd, 接收窗口)。
拥塞控制的四种算法
| 算法 | 思路 | 规则 |
|---|---|---|
| 慢开始 | 由小到大探测网络 | cwnd 初始 1,每经一个传播轮次加倍 |
| 拥塞避免 | 缓慢增大 | 每经一个 RTT 才 +1 |
| 快重传 | 快速恢复丢包 | 收到 3 个重复 ACK 立即重传(不等定时器) |
| 快恢复 | 配合快重传 | 不降到慢开始,直接拥塞避免阶段 |
不变量(必须成立的约束)
- 可靠性 = 序号 + 确认 + 重传 + 校验 + 去重,缺一不可。
- 拥塞窗口动态变化,发送窗口取 cwnd 与接收窗口较小者。
- 快重传的触发条件是三个重复确认(说明某个段丢了但后续段到了)。
常见误解
- 把「流量控制」和「拥塞控制」混为一谈 → 前者管接收方,后者管网。
- 以为「慢开始一直慢」→ 慢开始是指数增长探测,并不慢。
- 以为「ARQ 是 TCP 独有」→ ARQ 是数据链路层和传输层的错误纠正协议。
关联
- 握手挥手:概念卡片:TCP三次握手与四次挥手
- 总览:计算机网络技术栈总览