1 引言
WOL(Wake-On-LAN)是一种用于远程唤醒局域网内主机的一种解决方案。但对于跨网络的远程唤醒功能由于网络中路由器的限制,这种解决方案只能在主控机和被控机位于同一广播域的情况下使用。本文提出了一种廉价、低耗且实用的WOL-Proxy的设计方案,利用单片机技术,实现了基于WOL的跨网络远程唤醒主机的功能。
2 工作原理
可被远程唤醒的计算机必须有其电源、主板和网卡等硬件的支持。该计算机的电源是必需符合ATX 2.03标准的ATX电源,+5VStandby电流至少应在720mA以上,否则某些耗电较大的网卡可能无法启动;主板必须支持WOL,并在其BIOS中的电源管理菜单中启用这项功能;网卡也必须支持WOL,其与普通网卡的区别主要表现在:(1)早期支持WOL的网卡都有一个3针的WOL接口,并通过一根3芯电缆与主板相连,以获得供电;(2)支持网络启动功能的网卡都有一块支持WOL的芯片。
具备上述硬件要求的计算机便可被运行在局域网内另外一台计算机上的一些实用软件唤醒了。这种软件通常会在局域网内广播一个UDP数据包,端口不限,数据内容是一个有着特定格式的数据包:Magic Packet,其格式为:6个0xFF加16个目标网卡MAC地址,因此该Magic Packet总长度为。6+16*6=102个字节,如表1所示。只有指定的支持WOL的网卡才会处理这个数据包,并唤醒这台计算机。
表1:Magic Packet数据报格式
|
3 传统方式的局限性
由于WOL采用了广播的方式发送唤醒数据包,因而跨网络的远程唤醒必须得到路由器的IP directed broadcast 支持。但这种广播很少有实际的用途,却经常成为黑客进行 "smurf" 式“拒绝服务”攻击的工具,因此路由器一般都“禁用”这种广播。
4 解决方案
既然通常情况下路由器不支持跨网络广播,因此若想利用WOL技术实现跨网络的远程唤醒功能,就可以通过在局域网内配置一台“服务器”的方式来实现。比如利用局域网内的IIS服务器,安装一个Wake On Lan for ASP(Active Server Pages) 组件后,便可通过Web的方式发送远程唤醒请求,然后此Web服务器便将该请求在本地局域网广播,从而使得“好像”是从远程“直接”唤醒了目标计算机。但对于小型局域网,运行一台Web服务器似乎有点太浪费了。因此本文提出了一种在单片机上实现一个WOL-Proxy的解决方案, 这种方案廉价、低耗且实用。
设计一个WOL-Proxy,在芯片选择上,中央处理器可采用常用的MCS51系列的芯片,网络通讯模块采用RTL8019AS以太网控制器,这些芯片都具有性能优良,价格低廉的特点。单片机WOL-Proxy的硬件实现如图1所示。
图1: 单片机WOL-Proxy电路图
软件上,实现远程接收唤醒命令数据,将其重新组装成Magic Packet包,然后在本地LAN广播,需要实现一个TCP/IP协议子集,包括ARP、ICMP、IP、UDP等协议。在此,定义一个基于UDP的应用协议:网络唤醒代理转发请求协议(WOL-Proxy Protocol),如表2所示。整个UDP包的长度为2+2+2+2+6=14字节。于通过指定的目的端口(2345)和报文长度(14)便可处理知道请求的服务类型。假设需要唤醒的目标机器的MAC地址为:00-14-2A-C3-D4-BB,系统运行过程如图2所示。
表2:网络唤醒代理转发请求协议(WOL-Proxy Protocol)
UDP 报 文 |
源端口(2B) |
XX-XX |
目的端口(2B) |
09-29 |
长度(2B) |
00-0E |
校验和(2B) |
XX-XX |
|
目标机器MAC地址(6B) |
XX-XX-XX-XX-XX-XX |
图2:唤醒远程计算机流程图
表3:响应信号以太网帧:
目的MAC地址(6B) |
FF-FF-FF-FF-FF-FF |
源MAC地址(6B) |
01-0C-76-8A-93-3B |
|||
类型(2B) |
08-00(IP) |
|||||
IP 报文
|
版本、报头长度(1B) |
45 |
服务类型(1B) |
00 |
总长度(2B) |
00-82 |
标识符(2B) |
00-00 |
标记、偏移量(2B) |
00-00 |
生存期(1B) |
14 |
|
协议类型(1B) |
11(UDP) |
校验和(2B) |
3F-F5 |
|||
源IP(4B) |
08-06-00-01 |
目的IP(4B) |
CA-70-93-FF |
|||
UDP 报文
|
源端口(2B) |
00-00 |
目的端口(2B) |
00-00 |
||
长度(2B) |
00-6E |
校验和(2B) |
28-E4 |
|||
数据 (Magic Packet包) (102B) |
FF-FF-FF-FF-FF-FF 00-14-2A-C3-D4-BB - 00-14-2A-C3-D4-BB 00-14-2A-C3-D4-BB - 00-14-2A-C3-D4-BB 00-14-2A-C3-D4-BB - 00-14-2A-C3-D4-BB 00-14-2A-C3-D4-BB - 00-14-2A-C3-D4-BB 00-14-2A-C3-D4-BB - 00-14-2A-C3-D4-BB 00-14-2A-C3-D4-BB - 00-14-2A-C3-D4-BB 00-14-2A-C3-D4-BB - 00-14-2A-C3-D4-BB 00-14-2A-C3-D4-BB - 00-14-2A-C3-D4-BB |
5 结束语
本文实现的基于WOL的跨Internet远程唤醒技术,从理论上跨越了由于路由器禁止IP directed broadcast而造成WOL无法跨局域网应用的限制。而且造价低廉,耗电极少,非常适用于日益普及的中小型局域网络管理;在未来,如果空调等家用电器也被接入家庭局域网,只要它们的网卡支持WOL,便可使用本文提出的方案,轻松地进行远程管理。再者,如果在上述单片机系统内加入A/D、D/A等接口,实现了TCP/IP协议的单片机系统,必将在更加广阔的领域内发挥更大的作用。此外,从网络安全上考虑,由于单片机系统本身已具备一定的计算能力,因此将本系统实现为更加安全的网络应用也是可能的。
参考文献
[1] 李章林,张立民. TCP/IP在51单片机上的实现特点和方法[C]. “2003年全国单片机和嵌入式系统年会”论文集(出版地不详). 2003年.
[2] 刘波等.基于IP广播的计算机远程唤醒机制及其实现[J].计算机应用研究.2004年第7期.237-238,247
[3] 万光毅等. SoC单片机实验、实践与应用设计[M].北京:北京航空航天大学出版社.2006年.425-431
[4] 范建华等. TCP/IP详解,卷1:协议[M].北京:机械工业出版社.2000年.
来源:oschina
链接:https://my.oschina.net/u/571282/blog/80499