0%

WoL (Wake on LAN) Magic Packet详解

img

因为最近一段时间远程电脑的需求越来越多,就研究了一下WoL的原理,没想到如此简单。于是便用WinUI写了个小软件:WinWoL

Wake on LAN 概述

即“LAN口唤醒”,或者说“局域网唤醒”。这种技术有多种别名,在此不多赘述 (可以参考:Wake on LAN)。

WoL是由硬件设备提供的一项管理功能,可以通过网卡向主板发送指令来切换电脑的电源状态。甚至可以直接将电脑从S5关机状态唤醒到S0开机。

WoL有多种标准,目前家用PC的事实通用标准是AMD提出的Magic Packet。

Magic Packet 概述

关于Magic Packet的详细介绍,可以直接参考:Magic Packet Technical White Paper

这是由AMD公司提出的网络唤醒协议,即发送远程唤醒数据包 (Magic Packet) 。

虽然Magic Packet只是AMD公司所开发的一项技术,但是受到了几乎所有网卡制造商的支持,因此,大多数流行网卡都能与之很好地兼容(包括2010年后生产的主板)。

Magic Packet 解析

根据Magic Packet Technical White Paper中所言,用于WoL的Magic Packet实际上很简单,它的结构是:

1
FF FF FF FF FF FF 11 22 33 44 55 66 11 22 33 44 55 66 ....... 

开头是6个十六进制数0xFF,然后重复16次待唤醒电脑的Mac地址 (此处假设待唤醒电脑Mac地址为:11:22:33:44:55:66)。

代码实现

我简单的写了一个小项目,WinWoL。使用WinUI开发,可供参考。

除此之外还有一个更单纯的,使用C++开发的命令行程序:SimpleWoL