作为机房管理员,要管理的计算机较多,经常面临大量计算机要开启或关闭,如果每次逐一去开启或关闭,也是一项艰巨的任务,如果能从一台计算机上远程开启或关闭本局域网内的一台或多台计算机,将是一件轻松快乐的事。
一、远程开机
1.对被开启计算机的硬件要求
要实现网络远程开机,对被开启的计算机而言需要电源、主板、网卡3件设备的支持。首先电源必须是符合ATX 2.03标准的ATX电源,而且其+5V的备用电流必须在600mA以上,以便能唤醒网卡。其次是主板和网卡都必须支持Wake-up On LAN(WOL)技术(即远程唤醒)。可通过查看主板网卡使用说明书确认,对主板而言可直接查看BIOS设置中的“Power Management Setup”菜单中是否有“Wake on Lan”一项来确认,有则将“Wake on Lan”设置为“Enable”, 开启远程唤醒功能。另外查看BIOS设置中是否有“Wake on PCI Card”,有则说明主板可通过PCI插槽直接向网卡供电,将其设置为“Enable”;没有则需要在主板的WOL接口(3针)和网卡的WOL接口之间连一根三芯远程唤醒电缆,以便主板给网卡供电。
2.远程开机原理
远程开机的实现,主要是向目标计算机发送特殊格式的数据包(包含有6个字节的“FF”和重复16遍的目标计算机的MAC地址,共102个字节的数据),目标计算机的网卡只要检测到数据包中某个片段含有这102个字节的数据,便会将该计算机唤醒,它是AMD公司开发推广的技术。所以远程开机需要知道目标计算机的MAC地址,如果要开启的计算机只有一台,可直接在该计算机上查看MAC地址并记录下来,但是如果有多台计算机需要开启,用这种方式麻烦且容易出错,所以应考虑编程解决这个问题。
3.编程获取局域网内各计算机的MAC地址
怎么获取局域网内各计算机的MAC地址呢?了解网络通信原理的人都知道,网络中两台计算机要相互通信,看似只要相互知道IP地址即可,但那只是在网络层上,在数据链路层上最终必须知道对方计算机网卡的物理地址,即MAC地址。那么网络通信时如何知道其它计算机的MAC地址呢?靠ARP(Address Resolution Protocol)即地址解析协议,通过在局域网内广播ARP请求包,对方即会响应,告知其MAC地址,双方计算机都会将对方的MAC地址及IP地址对应保存在一张地址映射表中,以备通信使用。所以编程时要发送一个ARP请求包来获取指定计算机的MAC地址,Windows API中已提供现成的函数SendARP,其声明如下:
DWORD SendARP(IPAddr DestIP, IPAddr SrcIP,PULONG pMacAddr, PULONG PhyAddrLen );
|