我用netfilter hooks编写应用程序。

似乎skb_transport_header函数无法正确计算(有时但并非总是如此):

struct tcphdr* tcp_header = NULL;
tcp_header = (struct tcphdr*)skb_transport_header(skb); // somtimes incorrect address.
tcp_header = (struct tcphdr*)((char*)ip_header + (ip_header->ihl * 4));// always correct address.

我哪里错了?

最佳答案

您可以在这里检查它:
http://www.roman10.net/how-to-filter-network-packets-using-netfilterpart-2-implement-the-hook-function/
问题是网络层中的netfilter工具,当数据包从物理层上升时,您在数据包到达tcp层之前捕获了该数据包,某些功能未处理。

关于c++ - 为什么skb_transport_header计算不正确?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10162556/

10-13 07:05