萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 網路安全 >  >> 網路基礎知識

TCP/IP 流量控制機制深度解析:視窗大小、擁塞窗口與 ACK 策略

TCP 流量控制核心在於接收端通告接收視窗 (rwnd) 與發送端擁塞視窗 (cwnd) 協同工作。本文技術深度解析三大控制維度。

1. 最大傳輸單元 (MSS) 協商

三次交握階段雙方交換 MSS 選項,決定單個 TCP 區段最大載荷 (通常 1460 Bytes 乙太網)。理論最大 65535 Bytes,實際受 MTU 限制。設定流量控制參考值建議為 MSS 的 1.5 倍,有利於精確控制。

2. 擁塞視窗 (cwnd) 動態調整

cwnd 表示發送端可連續發送的資料量 (單位通常為 MSS)。初始由慢啟動演算法決定 (通常 10 MSS)。動態調整觸發條件:

  • 收到重複 ACK (快速重傳/快速恢復) → cwnd 減半。
  • 重傳超時 (RTO) → cwnd 重置為 1 MSS,進入慢啟動。
  • 接收端通告視窗 (rwnd) 變化 → 發送窗口 = min(cwnd, rwnd)。

流量控制視角:若目標限速 5 KB/s,但 cwnd 允許發送 30 KB,網路中仍有大量封包在飛行,需配合接收端策略處理。

3. 接收端流量控制實作策略

方案 A:零視窗 + 丟包

發送 WIN=0 ACK,丟棄收到封包,後續每包皆丟棄並回 ACK。缺點:浪費頻寬,觸發發送端重傳,加劇擁塞。

方案 B:零視窗 + 接收並 ACK (推薦)

發送 WIN=0 ACK,接收最後正常封包,後續封包正常接收並回 WIN=0 ACK。避免重傳風暴,犧牲少量緩衝區空間換取頻寬效率。

4. ACK 發送機制與流量控制干預

  • 系統自動發送 ACK 兩種情況:接收緩衝區為 0 (通知發送端停止);延遲 ACK 定時器 (預設 200ms,每收 n 個封包發一個 ACK,TcpAckFrequency 可調)。
  • 進入流量控制模式時,必須攔截系統自動 ACK,改由應用層控制發送 WIN=0 ACK,確保視窗大小精確為 0。

註冊表調優參數 (Windows 2000 SP3+)

  • TcpDelAckTicks (舊版) / TcpAckFrequency (新版):調整延遲 ACK 間隔/計數,建議 ≤ 500ms。
  • 路徑:HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{Interface GUID}。

TCP 流量控制是協議棧、應用層、網路設備多層協同結果。應用層實現精確限速 (如 QoS、Token Bucket) 時,必須深入理解協議棧 ACK/視窗機制,避免產生副作用 (重傳風暴、緩衝區耗盡、公平性破壞)。

copyright © 萬盛學電腦網 all rights reserved