为什么我在 wireshark 上看到其他计算机的流量?

为什么我在 wireshark 上看到其他计算机的流量?

我使用笔记本电脑上的 wifi 连接到家用路由器。我的 IP 是 192.168.0.107,但在 wireshark 上我看到来自 192.168.0.106 的流量,而这恰好是我的智能手机。我原本以为只会看到往返于我电脑的流量。我运行的是 Windows 8.1。我想知道为什么我会看到图片中显示的这些数据包这里

答案1

这些都是多播数据包, 尤其简单服务发现协议 (SSDP)多播域名服务 (MDNS)用于在单个 LAN 或 WLAN 段中无配置发现的数据包。

您的家庭路由器会将这些广播到所有设备,包括您的 PC。

所以你看到这些是非常正常的,这是理所当然的。

编辑

因此,问题的另一部分是“为什么我看不到来自其他设备的流量”。实际上,您也看不到来自智能手机的任何其他流量(多播除外)。这是因为单播数据包(目标地址为单个 IP 设备,例如 192.168.0.x,而不是多播地址,例如 224.0.0.x)是不是路由器会向所有其他 WLAN 设备广播该信息。这很有意义,因为由于发生故障,该信息必须单独重新发送到所有n其他设备,占用n+1空中时间。但由于目标地址表示“这些设备首先对数据包不感兴趣”,因此它不会。另一方面,多播数据包意味着发送到网络上的每个设备。

所以如果这是一个XY 问题而您真正的问题是“如何通过 WLAN 嗅探来自其他设备的数据包”,答案是:您必须成为该设备的接入点。

答案2

WireShark 会记录它看到的所有网络流量。特别是在 WiFi 网络上,WireShark 将看到全部同一 WiFi 网络上的其他流量。

要仅查看往返于您的笔记本电脑的流量,您需要使用与您定义的过滤器类似的过滤器,但使用您的笔记本电脑的 IP 地址:

ip.src == 192.168.0.107 || ip.dst == 192.168.0.107

这是 WireShark 的工作方式,以便您可以使用 PC 监控其他设备,例如网络摄像头、打印机、电视、音响系统等,这些设备本身不能用于运行 WireShark。

我已经在使用 Broadcom WiFi 芯片组的笔记本电脑上在 Ubuntu 上对此进行了测试,并完全确认 WireShark 的行为方式是这样的。这就是我添加答案的原因,因为我看到了 @dirkt 的答案没有解释的缓冲区(该答案完全回答了问题中记录的缓冲区),并且我假设提问者会在未来的日志中遇到这些缓冲区。

我对自己投反对票感到困惑,于是我请一位朋友做了类似的检查,结果他在使用 Intel 芯片组的 Windows 上得到了不同的结果。我很惊讶同一款软件在不同的操作系统上表现会有所不同,但他建议 Windows 可能停止了以混杂模式运行的接口。

如果我做错了,我不介意被投反对票,但我希望有人告诉我哪里错了,这样我就可以改正。我们不会接受“有问题 - 请帮忙”这样的问题,我不明白为什么要对反对票做出不同的对待。

相关内容