为什么我的应用程序无法捕获 CDP 数据包?

Why can't I capture CDP Packets with my app?

所以我在尝试捕获 CDP 数据包时遇到了一个奇怪的问题。我使用 wpcap.dll 编写了自己的轻量级应用程序,并构建了一个过滤器和一个解析器,在我开始使用其他计算机进行测试之前,一切都运行良好。那时我发现如果 wire shark 不是 运行,我的应用程序将不会捕获 CDP 数据包。

它正在捕获一个解析数据包,我可以看到它们在滚动,但我从未获得 CDP 命中。我的交换机设置为每 60 秒发布一次广告,但我可以让我的程序打开 10 分钟,然后打开 wireshark 并获取 CDP 数据包。如果我关闭 Wireshark,我将不再看到 CDP 数据包。

我正在使用过滤器 'ether[20:2] == 0x2000' 寻找类型“0x01E3”

对于发现此问题的任何其他人,我的问题是我没有在混杂模式下调用捕获。 CDP 数据包是多播的,不会定向到您的计算机 MAC。我知道这一点,但出于某种原因在我自己的程序中忽略了它...