我正在使用 Wireshark 跟踪从我的手机发送到 LAN 中的两台计算机的 WoL 数据包。
我的电脑上打开了 Wireshark,并且我在 Teamviewer 上观察另一台电脑,其中打开了 Wireshark,两个窗口并排显示,实时进行测试。
我发现了模棱两可的区别。
当魔包被发送到 WAN 地址时 - Wireshark 仅显示与其所针对的计算机匹配的 WoL 数据包。
当发送到计算机的内部 IP 地址时:
PC 1 - PC 2 跟踪较少的数据包,并且所有数据包都以广播地址作为目的地。
对于 PC 2 - 每个设备中的数据包数量相同,但在 PC 1 中显示所有数据包都以广播地址作为目的地。
为什么会有这些差异和差异?Wireshark 不应该客观地显示互联网流量吗?
我尝试实时测试局域网中的计算机上的 Wireshark,并希望它们显示完全相同的数据包。
交换机的用途之一是减少网络上发往特定端口的数据包。如果交换机知道端口上的计算机是什么,它只会将广播数据包和发往该计算机的以太网数据包发送到该端口。交换机知道端口上的计算机是什么的方式因交换机而异,可能涉及基于过去活动的缓存。
此外,如果您将 TCP 数据包而不是以太网数据包发送到机器,则发送数据包的机器必须先发送 ARP 数据包以获取要填写的以太网地址。(除非您在源机器上硬编码了 arp 表)。这通常意味着 WoL 数据包无法通过 IP 寻址,因为机器将关闭或睡眠状态太深而无法响应 ARP 请求。(但是,有些卡支持在没有操作系统的情况下响应 ARP,而有些操作系统支持唤醒以响应 arp 和 ping,因此这两种情况都可能发生。)
这些原因就是为什么有些 WoL 数据包方法仅支持以太网地址唤醒,或者需要以太网地址来填充数据包。但这些东西并没有深度标准化,而且存在差异。