【发布时间】:2021-05-21 04:46:04
【问题描述】:
我想问:像 Linux 上的 Apache Webserver、Wireshark 这样的应用程序,以及像网络工具和其他必须与网络连接相关的现实世界应用程序这样的软件,它们是否需要内核模块,如果没有,那是什么?应用程序确实具有内核模块的正常做法。就像我安装一些应用程序一样,内核模块也会随之安装。我知道当我从 Windows 启用 IIS 服务器时,会启用特定的内核模块来使 IIS 正常工作。 (不知道为什么那个操作系统没有实现原始套接字 api 以便开发人员可以使用)
我的问题:前段时间我试图使用原始套接字制作 tcp 服务器,发现这并不容易,因为内核做了各种各样的事情,比如(如果我错了,请纠正我)
检查欺骗数据包
在数据包中添加自己的标头信息
所以我要制作一个在内核中执行以下操作的应用程序
- 配置 NIC 卡,例如读取卡寄存器并返回报告
- 关闭网络接口
- 启动网络接口
- 从 DMA RX 读取数据包并报告接收到的数据包的平均数量以检测 DOS 攻击,如果检测到 DOS,则关闭特定接口/例如数据包报告计数器
应用程序将仅充当命令控制器。就像用户可以使用应用程序进行上述 4 点指定的更改。
所以我想问你,应用程序有一个内核模块是常见的做法吗?如果有人喜欢在应用程序中选择嵌入式内核模块,为什么这是一个不二之选,
以上内容仅供学习使用。
【问题讨论】:
-
@Hasturkun
HW是什么意思是硬件 -
@Hasturkun Npcap 不也安装驱动程序(它是否要求用户安装驱动程序——如果不是那么为什么)。它如何处理原始套接字或数据包读取。 windows就像一个黑匣子,你看不到里面的任何东西
标签: c linux kernel-module