![Netfilter 何时在 TCP/IP 内核网络栈中执行过滤?](https://linux22.com/image/767808/Netfilter%20%E4%BD%95%E6%97%B6%E5%9C%A8%20TCP%2FIP%20%E5%86%85%E6%A0%B8%E7%BD%91%E7%BB%9C%E6%A0%88%E4%B8%AD%E6%89%A7%E8%A1%8C%E8%BF%87%E6%BB%A4%EF%BC%9F.png)
我有一个问题,关于 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 数据包和相关元数据。