> 當網絡變成"堵城",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);
<