有没有办法在操作系统内核使用C++或任何语言接收到来自互联网的特定地址的数据之前,通过网卡对其进行控制?
换句话说,有没有一种方法可以访问OSI七层模型,使用C++来控制通过这七层中的任何一层的数据,或者它们只是在逻辑上实现。
如果它们没有在逻辑上实现,并且你可以访问,我想访问从特定地址接收到的通过物理层的包,并在它们移动到下一层之前做一些操作。
另外,是否有用于OSI的模拟软件?
发布于 2009-12-22 08:39:34
设备驱动程序位于硬件和内核之间,因此这是您唯一的选择。这取决于操作系统,但人们可以用C++为所有主要设备编写设备驱动程序。不过,要准备好遇到普通的C接口。
发布于 2009-12-22 08:38:17
您是否在问,不受信任的应用程序是否可以控制操作系统看到的来自网络的内容?
答案应该是显而易见的。
大多数操作系统都提供了访问来自网络的原始数据的接口,您应该使用这些接口,而不是试图将自己夹在网卡和操作系统之间。
另外,C++ != C#。一点也不接近。
发布于 2009-12-22 08:44:10
您可以创建一个分层的服务提供者,它可以通过将自身插入到winsock堆栈中来拦截数据,但这不会使数据在windows中通过内核和NDIS层时发生短路。这里唯一真正的解决方案是设备驱动程序。此外,还有一些网卡在硬件中实现了自己的TCP/IP堆栈,您可以直接与这些网卡通信,但这些不是很常见。这些方法中的任何一种都不是微不足道的,您正在考虑大量的内核模式C。如果您对此不满意,就不应该尝试这种方式。
您还可以考虑使用winpcap,因为这将为您提供所需的许多功能。http://www.winpcap.org/devel.htm
https://stackoverflow.com/questions/1943471
复制相似问题