有没有办法在操作系统内核使用C ++或任何语言接收之前,通过网卡控制来自特定地址的互联网数据?
换句话说, 有没有办法使用C ++访问OSI七层模型来控制通过七层任意层的数据,或者它们只是逻辑上实现。
如果它们没有在逻辑上实现,您可以访问 我想访问通过从特定地址接收的物理层的包,并在它们移动到下一层之前进行一些操作。
还有OSI的模拟软件吗?
答案 0 :(得分:4)
设备驱动程序位于硬件和内核之间,因此这是您唯一的选择。这取决于操作系统,但可以用C ++为所有主要的驱动程序编写设备驱动程序。准备好遇到普通的C接口了。
答案 1 :(得分:2)
您是否在询问不受信任的应用程序是否可以控制操作系统从网络中看到的内容?
答案应该是显而易见的。
大多数操作系统提供接口来访问网络上的原始数据,您应该使用这些接口,而不是试图在网卡和操作系统之间楔入。
另外,C ++!= C#。甚至没有关闭。
答案 2 :(得分:2)
您可以想象创建一个分层服务提供程序,它可以通过将自身插入winsock堆栈来拦截数据,但这不会使通过内核和Windows中的NDIS层的数据短路。这里唯一真正的解决方案是设备驱动程序。此外,有些网卡在硬件中实现自己的TCP / IP堆栈,您可以直接与它们通信,但这些并不常见。任何这些方法都是微不足道的,你正在看很多内核模式C.如果你对此不满意,你不应该尝试这个。
您还可以考虑使用winpcap,因为这会为您提供所需的许多功能。 http://www.winpcap.org/devel.htm