我有一个问题,关于 Netfilter 在 Linux 内核的网络堆栈中的位置。
我知道是网络层、netfilter,然后是 TCP 层。实际上,在内核中对 IP 层中的数据包进行解封装后,它将由 Netfilter 进行解析,然后在 TCP 中进行解封装。所以我想知道它如何根据 TCP 标头中的端口号过滤数据包。
答案1
Netfilter 不路由数据包,路由发生在网络堆栈的独立部分。
https://en.wikipedia.org/wiki/Netfilter#/media/File:Netfilter-packet-flow.svg显示 Netfilter 子系统中的数据包流。
在内部,Netfilter 对 skb 结构进行操作,其中包含 L2 帧或 L3 数据包和相关元数据。