对于一个项目,我们要修改在网络堆栈中移动的所有数据。理想情况下,这应该独立于协议(protocol),并且应无缝融合到“常规”网络堆栈中。
基本上,每一位数据都必须先通过我们的设备进行路由,然后再传递到网络堆栈的其余部分。在this图片中,设备应位于第二层和第三层之间/之间。
我的第一个想法是修改socket.c(this image shows the usual kernel flow for network data)中的代码,以便在继续进行正常操作之前先将数据写入我们的设备,但是最好可以加载此功能(例如,使用内核模块),因此用户可以根据需要将其关闭。
所以我的问题是:有什么方法可以编写内核模块以插入到网络堆栈中,以获取和修改传入和传出的数据?
在此先多谢!
最佳答案