gpt4 book ai didi

linux - 如何防止内核将数据包传递到网络层?

转载 作者:IT王子 更新时间:2023-10-29 00:58:07 25 4
gpt4 key购买 nike

网卡接收到的帧将由驱动程序处理,然后由Linux内核传递给协议(protocol)栈的上层。

有没有一种简单的方法可以防止内核将数据包传递到网络层?这样我就可以从数据链路层接收帧并自己处理所有数据包(也许应用层程序会被重写)?

我认为重新编译内核是必要的,这应该通过修改 softirq 中的代码或 netif_rx 或每个 cpu 的列表队列中的函数来完成吗?

其实我和一些同学正在尝试在用户空间实现一个简化版的TCP/IP协议(protocol)栈来做练习,我们才刚刚开始。我正在阅读一些书籍,如 UNP、APUE2、TCP/IP 说明 v1、v2、Linux 网络体系结构、linux 源代码等。我还有一些其他问题,我需要再发一个问题吗?

最佳答案

如果你只想自己处理数据包,你可以使用内核模块 netfilter 并实现一些钩子(Hook)。您可以轻松找到一些代码示例。

在你不同的钩子(Hook)中,你可以选择处理数据包并将它还给内核或者丢弃它。它只是一个返回码来改变。

提供一些代码和主题解释的文章:http://www.linuxjournal.com/article/7184

此解决方案可行,实现起来也不太困难,但不确定它是否是解决您问题的自然方法。

关于linux - 如何防止内核将数据包传递到网络层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14168032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com