c - 如何在不使用套接字的情况下将数据包发送到网络中?

标签 c linux-kernel linux-device-driver interrupt

我想绕过 Linux 网络堆栈将数据包发送到网络中。我的意思是有什么方法可以中断网卡驱动程序并直接在网卡缓冲区中放置一个帧以在网络中发送它?我是 Linux 内核黑客的新手,所以任何关于如何入门的指南都将非常有帮助。

最佳答案

如果你使用一些虚拟设备,比如TAP,你会过得更好.您可以轻松地将一个控制接口(interface)破解到 TAP 内核模块中,然后您可以通过它传递准备好发送给驱动程序的帧。该方法可以与作为基准的常规套接字应用程序的性能进行比较。由于最终 TAP 设备将通过字符设备“发送”出导出帧,因此您可以轻松编写测试应用程序来测量性能和延迟。

关于c - 如何在不使用套接字的情况下将数据包发送到网络中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16376842/

相关文章:

c - 链表 C - 添加节点后仅打印最后一个值

linux-kernel - 如何从用户空间接收struct rq(运行队列)的 'nr_running'成员的值

linux "make oldconfig"丢弃条目 CONFIG_K8_NB

c - 如何替换最近取消的宏 "access_ok"的第一个参数?

linux - 如何在其他Linux内核版本上编译ixgbe网络驱动程序

Linux 内核 3.13 : How to list gendisk's?

c - 下面的预递增表达式真的会导致无序修改吗?

c - 如果没有 ICD 加载程序扩展,OpenCL 如何工作?

c++ - const 变量的引用运算符 "&"的结果是什么?

C Linux 内核页面干扰先前的变量