現象
Wireshark 顯示 TCP 封包 IP Checksum Offload 錯誤,實際封包傳輸正常。
根本原因
現代千兆網卡支援 Checksum Offload,將校驗和計算卸載給網卡硬體。Wireshark 捕獲的是作業系統送往網卡驅動程式的封包,此時校驗和欄位尚未由硬體填入(通常為 0 或隨機值),導致 Wireshark 校驗失敗。實際上網卡發送前會正確計算並填入校驗和。
解決方案
Windows
- 開啟「裝置管理員」→ 網路介面卡 → 右鍵屬性 → 「進階」頁籤。
- 找到 IPv4 Checksum Offload、TCP Checksum Offload 等選項。
- 設為 Disabled 或 None。
Linux
# 關閉發送/接收校驗和卸載
ethtool -K eth0 tx off rx off
補充知識
- Offload 可降低 CPU 負載(微軟測試最高省 30% CPU)。
- PCI-X 介面千兆網卡開啟 Offload 可達線路速率;PCI 介面則不一定。
- 關閉 Offload 僅影響抓包分析,不影響實際網路傳輸正確性。