程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> WireShark抓包時TCP數據包出現may be caused by ip checksum offload

WireShark抓包時TCP數據包出現may be caused by ip checksum offload

編輯:關於C語言

最近用WireShark抓包時發現TCP數據包有報錯:IP Checksum Offload,經過查閱資料終於找到了原因

總結下來就是wireshark抓到的數據包提示Checksum錯誤,是因為它截獲到的是操作系統胡亂填充的checksum,而千兆網卡在開啟Checksum Offload之後,會把這些計算的工作交給網卡去做,網卡最後還是會計算出正確的checksum並且發出去的。

也就是以前校驗和是由系統協議棧來實現,現在交給網卡硬件去實現了,這樣可以節約不少CPU資源,微軟的測試表明它可以最多節約30%的CPU資源。IBM裡AIX的文檔則指出:對於PCI接口的千兆網卡來說還不如讓400Mhz以上的CPU來計算校驗和,而PCI-X的千兆網卡啟用此項後可以達到線路速度,從而節約CPU資源。

在windows系統下,我們可以打開設備管理器找到相應的網卡,在網卡的高級屬性裡將checksum offload屬性改為none。

linux下使用ethtool命令關閉checksum offload,具體命令如下:

#ethtool -K eth0 tx off rx off

這樣就修改為不由網卡硬件去完成檢驗和,而由系統來實現,也就不會報錯了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved