我正在编写一个内核模块,使用Netfilter钩子修改TCP头信息,并在发送之前重新计算校验和。
我还在接收端编辑头部,因此也需要在那里重新计算校验和。
在网上搜索时,我发现有些人说我可以简单地将其设置为0,它就会自动计算。但显然这种方法行不通。
我也找到了这个函数
tcp_v4_send_check(struct sock *sk, struct sk_buff *skb);
虽然没有人解释这个如何使用,以及我是否可以在接收/发送时实际使用它。
我的尝试是将校验和设置为0,然后调用此函数,传递我拥有的skb和skb->sk,但仍然没有效果。
因此,请问有什么直接的方法来计算TCP数据报的校验和?
C
标签。顺便看一下 http://www.winpcap.org/pipermail/winpcap-users/2007-July/001984.html。 - Jite