计算机网络:(十五)TCP拥塞控制与拥塞控制算法深度剖析
> 当网络变成"堵城",TCP如何化身智能交通指挥家?揭秘百万级并发背后的流量控制艺术!
### 一、生死攸关:为什么需要拥塞控制?
**真实灾难案例**:1986年劳伦斯伯克利实验室网络大崩溃,因缺乏拥塞控制导致全网瘫痪36小时。TCP拥塞控制由此诞生,核心解决**资源竞争**问题:
1. **带宽争抢**:多主机共享链路带宽
2. **缓冲区溢出**:路由器队列溢出导致丢包
3. **高延迟**:排队延迟激增(如:100ms → 2000ms)
```mermaid
graph LR
A[发送方] -->|高速发送| B(路由器队列)
B -->|溢出| C[丢包风暴]
C --> D[超时重传]
D -->|雪崩效应| E[网络瘫痪]
```
### 二、核心武器:拥塞窗口(cwnd)
与接收窗口(rwnd)不同,拥塞窗口是**发送方自约束**机制:
```c
// TCP发送引擎伪代码
void send_data() {
// 实际发送窗口 = min(拥塞窗口, 接收窗口)
int actual_win = min(cwnd, rwnd);
<