「丟包」是網絡故障排查中最高頻詞彙。本文從 **數據包傳輸本質、丟包成因分層、TCP 補包機制、線路質量對丟包的非線性影響** 四個維度,還原丟包真相。
一、 數據包傳輸本質:非線性、離散、有損
- 互聯網採用 **分組交換**,數據切分為固定大小 **數據包 (Packet)** 獨立傳輸 (每包 ~1.5KB MTU)。
- **非線性傳輸**:包之間有間隙,路徑可能不同 (路由動態選路),到達順序可能亂序。
- **不可靠交付**:IP 協議**不保證送達、不保證順序、不保證不重複**。丟包是網絡**常態**,非異常。
二、 丟包成因四層模型
| 層級 | 典型成因 | 特徵 |
| 物理層 | 線纜損壞/接觸不良、光衰過大、無線干擾/信號弱、端口錯誤 (CRC/碰撞/巨幀/符號錯誤) | 持續、隨機、與負載相關 |
| 鏈路層 | 交換機/路由器緩衝區溢出 (拥塞丟包)、Duplex mismatch (雙工不匹配)、VLAN/STP 故障 | 突發、高併發時明顯 |
| 網絡層 | 路由震盪、TTL 耗盡、ACL/防火牆攔截、MTU 不匹配導致分片失敗 | 規律性、特定流向 |
| 傳輸/應用層 | 接收窗口滿/處理不過來、應用崩潰、主動關閉連接 | 端到端可見 |
三、 TCP 補包機制:讓不可靠變可靠
TCP (Transmission Control Protocol) 在不可靠 IP 之上構建可靠字節流:
- 序號確認 (SEQ/ACK): 每字節編號,接收方回 ACK 確認。
- 超時重傳 (RTO): 發送方啟動計時器,未收到 ACK 超時重發。RTO 動態計算 (SRTT + 4×RTTVAR)。
- 快速重傳: 收到 3 個重複 ACK → 判斷丟包 → 立即重傳,不等超時。
- SACK (選擇性確認): 告知發送方具體收到哪些塊,避免重傳已到達數據。
- 擁塞控制: 慢啟動、擁塞避免、快速恢復,**主動降低發送速率** 適應網絡承載能力。
四、 線路質量對補包效率的非線性影響
- 優質線路 (丟包率 < 0.1%): 丟包極少,補包近乎瞬間完成,**應用層感知為「無損傳輸」**。
- 劣質線路 (丟包率 > 1-5%,如舊電話線 Modem/弱無線): 大量丟包 → 大量重傳 → 擁塞窗口劇烈收縮 → 吞吐量崩塌 → **補包無法跟上生成速度** → 應用層出現卡頓、斷連、數據「空洞」。
- UDP 應用 (視頻會議/直播/遊戲) 無補包機制: 丟包直接導致花屏、卡頓、聲音機槍音,**需應用層 FEC/ARQ/隱藏技術對抗**。
排查工具鏈
ping -t -l 1472 (大包測試 MTU/碎片)
pathping / tracert 定位丟包跳點
netsh interface ipv4 show subinterfaces 看接口錯誤計數器
- Wireshark 抓包分析 TCP 重傳率、DUP ACK、SACK、窗口變化
- 交換機/路由器 `show interface counters errors` / `show logging`
丟包不可怕,**可怕的是不知丟在哪層、為何丟、如何量化**。建立分層排查思維,從物理層查起,數據說話,精準止血。