我正在尝试编译一个在 OSX 上以统计模式使用 libpcap 的 C 程序。原始代码是使用 winpcap 库为 Windows 编写的。我 Mac 上的 libpcap 版本从未听说过它使用的pcap_setmode函数——我有一种讨厌的感觉,它可能是特定于 Windows 的。
有什么方法可以在 OSX 上以统计模式捕获?如果没有,操作系统的体系结构/功能是否会阻止这种情况,或者这是添加到 WinPcap 的额外功能,而这从来不是主库的功能?
我正在尝试编译一个在 OSX 上以统计模式使用 libpcap 的 C 程序。原始代码是使用 winpcap 库为 Windows 编写的。我 Mac 上的 libpcap 版本从未听说过它使用的pcap_setmode函数——我有一种讨厌的感觉,它可能是特定于 Windows 的。
有什么方法可以在 OSX 上以统计模式捕获?如果没有,操作系统的体系结构/功能是否会阻止这种情况,或者这是添加到 WinPcap 的额外功能,而这从来不是主库的功能?
pcap_setmode()
只在Win32端口有定义,因为Windows的WinPcap驱动是唯一支持统计模式的抓包机制;Mac OS X 和 *BSD 和 AIX 和 Solaris 11 中的 BPF 不支持,Linux 中的 PF_PACKET 套接字不支持,Solaris 和 HP-UX 中的 DLPI 不支持,等等。
UN*Xes 通常带有支持捕获数据包的机制,因此 libpcap 可以直接使用它,而无需添加自己的内核模式代码;这意味着它无法控制那些捕获机制拥有的设施——如果一个捕获机制没有它,libpcap 就无法添加它。Windows 没有这种机制。它确实带有 NDIS,它可以支持这种机制,因此 WinPcap 带有一个内核模式驱动程序,它使用 NDIS 来实现这种机制,因此可以更好地控制它提供的功能。
pcap_setmode()
仅在 Win32 端口中有一个定义(对我来说原因不明)。