网卡接收的帧将由驱动程序处理,然后由Linux内核传递到协议栈的上层。如何防止内核传递数据包到网络层?
有没有一种简单的方法来防止内核传递数据包到网络层?这样我就可以从数据链路层接收帧并自行处理所有数据包(也许应用层程序将被重写)?
我认为重新编译内核是必要的,应该通过修改softirq中的代码还是像netif_rx或每个cpu的列表队列中的函数来完成代码?
事实上,一些同学和我正试图在用户空间中实现一个简化版的TCP/IP协议栈来进行练习,而我们刚刚开始。我正在阅读一些书籍,如UNP,APUE2,TCP/IP插图v1,v2,Linux网络架构,linux源代码等等。我还有其他一些问题,我是否需要发布另一个问题?
你想做什么?改变内核可能并不那么容易。 – prehistoricpenguin
你真的应该描述你试图解决的问题。下面的答案之一表明netfilter。另一种选择可能是使用pcap库直接获取原始数据包。直到我们知道你真正想要解决什么问题时,我们才会知道你的正确答案。 – chetan
我编辑了我的问题,真的期待一些进一步的建议。 –