1. 程式人生 > >Wireshark抓包時顯示TCP校驗和錯誤(checksum incorrect)

Wireshark抓包時顯示TCP校驗和錯誤(checksum incorrect)

抓包的過程發現很多從本地主機(客戶機)發出的 TCP 包有很多都是報 IP checksum error ,但應用正常,從 server 返回的包也一切正常,很是奇怪。

如圖,很多黑色的條目,黑色一般就是有問題的包:

ip_checksum_error1

網上有一篇帖子,說明了這個情況產生的原因:

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 協議棧來計算):

ip_checksum_error2

禁用 Checksum Offload 後,抓的包顯示清爽多了:

ip_checksum_error3