最近在用tcpdump對tcp的相關參數進行學習和分析,linux下的抓包結果起初讓我感到奇怪,我手邊的ubuntu和debian都出現了相同的現象。
具體的就是抓到的發送方的tcp的數據段的長度經常性地發生變化,並且接收方回復的接收幀的序列號和發送方不同步,例如發送方發送了序列號為25:7265,接收方回復的ack裡卻有序列號是2921的。並且ack後確認的序列號是按照等差的規律遞增。
找了一段時候,還是在stackoverflowhttp://stackoverflow.com/a/2351026/1429809上找到了解答,是因為linux打開了gso(generic segmentation offload)選項,只要將這個選項關閉就可以讓tcpdump的輸出恢復正常了。具體步驟如下
查看系統相關選項
ethtool -k eth0
關閉gso
ethtool -K eth0 gso off
作者:cnblogs juejiang
更多精彩內容:http://www.bianceng.cn/OS/Linux/