我寫一個使用Netfilter的鉤子來修改某些TCP報頭信息,並且顯然是一個內核模塊,發送前,我要重新計算校驗和。
我也在接收端編輯標題,所以我需要在那裏重新計算它。如何計算TCP校驗
網上搜索,我發現有些人說我可以簡單地將其設置爲0,它會計算對我來說,顯然沒有奏效。
我還發現這個功能
tcp_v4_send_check(struct sock *sk, struct sk_buff *skb);
雖然沒有人解釋這是怎麼使用的,以及是否我可以在接收/實際使用它發送相同的方式。
我自己嘗試是校驗設置爲0,則調用該函數傳遞SKB我已經和是skb-> SK我有,仍然一無所獲。
那麼請問,什麼是直接計算TCP數據報校驗和的方法?
你究竟什麼設置爲0,你在哪裏期望找到校驗?查看代碼,你應該設置tcp_hdr(skb) - > check爲0,然後調用該函數,之後新的校驗和應該在那裏。 – BjoernD 2012-07-10 09:16:59
,這正是我所做的,但是當我加載模塊時,所有的TCP連接都不起作用。 – Fingolfin 2012-07-10 10:25:04
您應該在問題中添加「C」標籤。順便說一句,看看http://www.winpcap.org/pipermail/winpcap-users/2007-July/001984.html – Jite 2012-07-10 10:27:47