Wireshark抓包時顯示TCP校驗和錯誤(checksum incorrect)
阿新 • • 發佈:2019-02-05
在抓包的過程發現很多從本地主機(客戶機)發出的 TCP 包有很多都是報 IP checksum error ,但應用正常,從 server 返回的包也一切正常,很是奇怪。
如圖,很多黑色的條目,黑色一般就是有問題的包:
網上有一篇帖子,說明了這個情況產生的原因:
http://www.netexpert.cn/thread-4850-1-1.html 5.23 Ethereal抓包時發現TCP校驗和錯誤 Q: 在Windows平臺上用Ethereal抓包時發現TCP校驗和錯誤, 但應用層的反應告訴我,這個報文的TCP校驗和沒問題。 A: 2000-03 網絡卡配置->高階->Rx Checksum Offload/Tx Checksum Offload, 很可能你的這兩處設定是Enable,將之調整成Disable即可,代價是網路效能降低。 一般由作業系統的TCP/IP協議棧完成TCP/UDP/IP校驗和的計算工作, 這兩處設定成Enable之後,協議棧不再進行校驗和的計算,而是由網絡卡自己完成。 如果在前述位置沒有發現Rx Checksum Offload/Tx Checksum Offload項, 有兩種可能,一種是網絡卡本身不支援這種功能,另一種是網絡卡驅動未提供配置項,後一種情形居多。 事實上該問題與使用何種Sniffer軟體無關。
解決方法:
把網絡卡的屬性修改一下就可以,禁用 Checksum Offload(原理是讓網絡卡硬體自己計算校驗和,而不是交給作業系統的 tcp/ip 協議棧來計算):
禁用 Checksum Offload 後,抓的包顯示清爽多了: