网卡接收到的帧会经过驱动处理,然后由Linux内核传递到协议栈的上层。
有没有一种简单的方法可以防止内核将数据包传递到网络层?这样我就可以从数据链路层接收帧并自己处理所有数据包(也许应用层程序会被重写)?
我认为重新编译内核是必要的,这应该通过修改softirq中的代码或netif_rx等函数或每个cpu的列表队列来完成吗?
事实上,我和一些同学正在尝试在用户空间实现一个简化版的 TCP/IP 协议栈进行练习,而我们才刚刚开始。我正在阅读一些书籍,如 UNP、APUE2、TCP/IP 插图 v1、v2、Linux 网络架构、linux 源代码等。我确实有一些其他问题,我需要发布另一个问题吗?