有没有一种简单的方法可以防止内核将数据包传递到网络层?这样我就可以从数据链路层接收帧并自己处理所有数据包(也许应用程序层程序会被重写)?
我认为重新编译内核是必要的,如果这是通过修改softirq中的代码或netif_rx或每个cpu的列表队列中的函数来完成的?
事实上,有些同学和我正在尝试在用户空间中实现TCP / IP协议栈的简化版本以进行练习,我们刚刚开始.我正在阅读一些书籍,如UNP,APUE2,TCP / IP插图v1,v2,linux网络架构,linux源代码等.我还有其他一些问题,我是否需要发布另一个问题?
解决方法 如果你只想自己处理数据包,你可以使用内核模块netfilter并实现一些钩子.您可以轻松找到一些代码示例.在不同的钩子中,您可以选择处理数据包并将其返回给内核或丢弃它.这只是一个改变的返回代码.
给出一些代码和解释主题的文章:http://www.linuxjournal.com/article/7184
这个解决方案可行,并且不太难实现,但不确定这是解决问题的自然方法.
总结以上是内存溢出为你收集整理的linux – 如何防止内核将数据包传递到网络层?全部内容,希望文章能够帮你解决linux – 如何防止内核将数据包传递到网络层?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)