当前位置: 技术问答>linux和unix
关于linux套接字缓冲区sk_buff的问题
来源: 互联网 发布时间:2016-05-18
本文导语: 有一些sk_buff skb是在netfilter的NF_IP_PRE_ROUTING这个钩子处传进来的,为什么这时候的nh.iph和h.th指向的是同一个地址(架设这个包是TCP的),是因为数据还在网络层没进入传输层,所以h.th暂时无效?如果我在这里想要获...
有一些sk_buff skb是在netfilter的NF_IP_PRE_ROUTING这个钩子处传进来的,为什么这时候的nh.iph和h.th指向的是同一个地址(架设这个包是TCP的),是因为数据还在网络层没进入传输层,所以h.th暂时无效?如果我在这里想要获取TCP报头和数据应当怎么做?试着输出一些sk_buff成员指针所指的地址:skb->data和skb->nh.iph指向的是同个地址,skb->tail的地址减去skb->data的地址总是等于skb->len的数值,而skb->nh.iph->daddr刚好在skb->data+16这个地址,这么说来IP报头就是skb->data的前20字节?那TCP报头不应该在skb->data+20这个地址开始么?怎么我打印出来skb->data+20开始的前4个字节都不是源端口和目的端口?
|
哎,不知道你这个结构是什么包。一定是TCP包?如果是ICMP什么的呢?那skb->data+20开始的前4个字节就不是源端口和目的端口了。