netfilter内核编程,显示tcphdr的seq怎么总是不对?
代码大致如下:
iph=sk->nh.iph; //网络层指针
if (iph->protocol==0x06) //如果这是TCP协议
{
th=(struct tcphdr*)(sk->data +20) //找到TCP头的指针th
printk("Seq=%u, s_port=%u, d_port=%u\n",
ntohl(th->seq),
ntohs(th->source),
ntohs(th->dest));
}
在var/log/message中看到端口号都打印正确了,但是Seq却总是不对,往往是很大,有9,10位那样子,而且连续的数据包seq都一样。
ethereal抓包看到TCP包的seq都很正常,不到5位那样子。
请问这是怎么回事?
回答上的人100分全给你了。