Wake-on-LAN(远端唤醒) 原理及实现

Wake-on-LAN简称WOL或WoL,我们一般将其称为“网络唤醒”、“远端唤醒”技术。WOL是一种技术,同时也是该技术的规范标准,它的功效在于让已经进入休眠状态或关机状态的电脑,透过局域网(多半为以太网)的另一端对其发令,使其从休眠状态唤醒、恢复成运作状态,或从关机状态转成开机状态。此外,与WOL相关的技术也包括远端下令关机、远端下令重新开机等相关的遥控机制。


Wake-on-LAN功能需要有主板和网卡的支持,在主板BIOS中的网卡设置中必须有“Wake On LAN”设置(开启:On),并且相应网卡也得支持该功能。因为,在关闭计算机以后,其实网卡仍然通电的(unless 你把插排电源也关了),这样你就可以通过发送一段Magic Packet给网卡,让网卡将计算机唤醒。

Magic Packet
Magic Packet是一个广播帧(frame),透过端口7或端口9进行发送,且可以用无连接(Connectionless protocol)的通讯协议(如UDP、IPX)来传递,不过一般而言多是用UDP,原因是Novell公司的Netware网络操作系统的IPX协定已经很少使用。
在Magic Packet内,每次都会先有连续6个"FF"(十六进制,换算成二进制即:11111111)的资料,即:FF FF FF FF FF FF,在连续6个"FF"后则开始带出MAC地址,有时还会带出4字节或6字节的密码,一旦经由网卡侦测、解读、研判(广播)Magic Packet的内容,内容中的MAC地址、密码若与电脑自身的地址、密码吻合,就会启动唤醒、开机的程序。

示例:
假设你的网卡物理地址为00:15:17:53:d4:f9, 这段Magic Packet内容如下:

FFFFFFFFFFFF00151753d4f900151753d4f900151753d4f900151753d4f9
00151753d4f900151753d4f900151753d4f900151753d4f900151753d4f9
00151753d4f900151753d4f900151753d4f900151753d4f900151753d4f9
00151753d4f900151753d4f9

以下是根据wakelan代码修改的工具,添加了绑定网卡的支持(参数 -i devname).


参考:

Wake on LAN mini HOWTO http://gsd.di.uminho.pt/jpo/software/wakeonlan/mini-howto/
Wake-on-LAN http://en.wikipedia.org/wiki/Wake-on-LAN
wakelan Author: Christopher Chan-Nui ftp://metalab.unc.edu/pub/Linux/system/network/misc/wakelan-1.1.tar.gz

你可能感兴趣的:(C++,c,linux,socket,C#)