【发布时间】:2013-12-14 07:43:25
【问题描述】:
是否可以将 NIC 收到的所有数据包推送到 TCP/IP 堆栈,即使它们的以太网地址与我的以太网地址不匹配?换句话说,我想在我的 NIC 上处理所有传入的数据包。 任何人都可以提及更改网络接口驱动程序代码的可能方案吗?如何检查驱动程序代码的操作?
【问题讨论】:
-
我确信这种混杂的监听是可能的,但您可能需要一个特殊的驱动程序和一个支持它的 NIC。这样的模式可能对一个进程/线程“独占使用”,也可能不允许传输。
-
我知道可以通过设置 IFF-PROMISCUOUS 标志来实现,但是在这种模式下,驱动程序不会将数据包发送到 TCP/IP 堆栈!是否可以更改驱动器代码?
-
它们可能不是 TCP/IP 段——网卡不知道,它只知道 MAC 地址。即使是这样,将数据缓冲区提供给未参与启动或管理连接的 TCP 堆栈也是不明智的。
-
我不确定到底该怎么做,但我的 .2:也许使用原始套接字会有所帮助?和/或检查 tcpdump 是否可以这样做?
-
@kaiwan。通过使用 tcpdump 或原始套接字,数据包直接发送到用户层,但我想将它们发送到 TCP/IP 堆栈。
标签: networking tcp linux-device-driver tcp-ip network-interface