软件的实现方面,其实就是通过socket向目标的机器发送MagicPacket(魔术包),魔术包的格式,包含有连续6个字节的“FF”和连续重复16次的MAC地址。你可以在任何协议的数据包(如在TCP/IP、IPX包)中填上 "FFFFFFFFFFFF"+连续重复16次的MAC地址,就可利用该协议作出一个使用该协议的MagicPacket。只要NIC检测到数据包中任何地方有这样的片段,便会将计算机唤醒。
假设被控计算机的Mac地址为01:02:03:04:05:06 (6 bytes),那么那台机器的网卡在数据帧内发现以下的片断便会将计算机唤醒。
FFFFFFFFFFFF010203040506010203040506010203040506010203040506
010203040506010203040506010203040506010203040506010203040506
010203040506010203040506010203040506010203040506010203040506
010203040506010203040506
正是因为这个Magic Packet可以封装在任何协议的数据包中,可以在各种Router和switch之间传送,而不会影响MagicPacket唤醒的功能。也就是说,不管Magic Packet是来自于LAN还是WAN,只要网卡检测到MagicPacket就能唤醒。最常被使用的是UDP广播包,不需要端口号,只要知道被控计算机的MAC地址即可。
注:UDP广播分两种,一种是directed broadcast,比如你的网段是192.168.0.X,你就往192.168.0.255发就可以了。另一种是limited broadcast,广播地址是255.255.255.255
要了解更多请参见“Magic Packet? Technical Documentation”
http://www.amd.com.cn/chcn/Conne ... echnicalResources/0,,50_2334_2481_2494,00.html
三:局域网远程唤醒
请你务必弄懂远程唤醒的基本条件中所讲解的东西再开始看本节。
首先声明一点,在你机上安装任何远程控制软件的客户端都不可以实现远程唤醒,PCAnywhere、RemoteAdministrator之类的远程控制软件在关机的情况下根本不可能工作,手机短信实现远程唤醒也是天方夜谭。远程唤醒只能基于你的计算机的硬件去实现。
现在假设A、B两机位于同一个局域网中, 要用主控计算机A机远程唤醒被控计算机B。
那你只要在B机的CMOS设置(有人喜欢叫BIOS设置)中设置好两个地方:
1.开启“Wake on PCI Card”功能,没有这项的设置的话,那可能就要插远程唤醒电缆了;
这步的目的是“在关机时为网卡供电”
2.开启“Wake Up On LAN”或“Resume by LAN”功能;
这步的目的是“让主板接受网卡发送的唤醒信号”
设置好之后,就保存退出。
在A机你要下载局域网唤醒的小软件,这里向大家推荐 PCnet Magic Packet Utility——AMD的产品,英文介面,需要安装才可以使用。
PCnet Magic Packet Utility界面
http://dl.pconline.com.cn/html_2/1/59/id=1885&pn=0.html
下面以AMD的MagicPacket为例,在A机下载安装好。该软件默认安装在C:\pcnet\magic_pkt目录下,由于不会在程序项中或桌面上增加任何快捷方式,因此,要想运行该软件,用户必须自己到所安装的目录下执行magpac.exe,自己动手将该程序在桌面上建立一个快捷方式当然更方便了。
运行magpac.exe,在“Magic Packets”菜单中单击“Power On OneHost”(启动某一主机)命令,显示“Send a Magic Packet to OneHost”(向主机发送唤醒数据包)对话框(如图所示)。在“Destination EthernetAddress”(目标以太网地址)中输入B机的网卡MAC地址,单击“Send”(发送)按钮。B机将自动启动。
Magic Packet还可