是否需要在特定端口上发送魔包才能使其工作?

是否需要在特定端口上发送魔包才能使其工作?

我读到过,需要在目标机器的端口 7 或 9 上发送 WOL(局域网唤醒)魔术包(在硬件中启用 WOL)才能使其工作。

这是正确的吗?如果不正确,那么 WOL 数据包是如何处理的?

答案1

魔术包不一定是一个包,它必须由一个帧组成,因此它只需要一个包含魔术字符串的有效负载。您可以在其中放置一个数据包和一个段,但它们实际上并不由 IP 和 TCP/UDP 层处理。

https://en.wikipedia.org/wiki/Wake-on-LAN#Magic_packet

魔术包是一个广播帧,其有效负载中包含全部 255 个字节中的 6 个字节(十六进制为 FF FF FF FF FF FF),后面跟着目标计算机的 48 位 MAC 地址的十六个重复,总共 102 个字节。

由于魔术包仅扫描上述字符串,而实际上并未由完整协议栈进行解析,因此它可以作为任何网络层和传输层协议发送,尽管它通常作为 UDP 数据报发送到端口 7 或 9,或直接通过以太网作为 EtherType 0x0842 发送。

因此,您的问题的答案分别是“否”和“是”。您根本不需要使用上层协议,IP 数据包不需要发送到目标计算机,并且端口实际上根本不会侦听或接收 WOL 数据报;数据链路层会扫描有效负载以查找魔术字符串,如果找到,则根本不会将有效负载传递到网络层进行处理。许多实现使用 UDP\7(回显)和 UDP\9(丢弃),可能是因为不支持 WOL 的系统不会以潜在的不安全方式处理数据包。在这些系统上,上层将接收该段。

但请注意,虽然 WOL 在硬件和驱动程序中 100% 实现,但其合规性因供应商和设备而异,因此它通常很挑剔。

相关内容