Wake on LAN
2.1 What is it?
The ability to switch on remote computers through special network packets. This only works with network cards and motherboards that are Wake on LAN compliant.
2.2 How does it work?
WOL is based on the following principle:
When the PC shuts down, the NIC still gets power, and keeps listening on the network for a 'magic' packet to arrive. This packet must contain a certain byte-sequence, but can be encapsulated in any kind of packet (IPX, IP, anything). Take a look at the code for the magic sequence.
This program uses UDP for sending the packet. The complete UDP packet, sent over an ethernet interface, looks something like this:
[ethernet header][IP header][UDP header][Magic sequence][CRCS]
The only goal of the script is to send this packet over the network. It expects no returning data, since the NIC only listens, and does not reply anything.
For a more detailed description of the protocol, see the AMD white paper.
2.3 Hardware requirements
Green PC, motherboard BIOS support, network cards, PCI 2.2, Operating system support (Windows 95 - DELL's document -, Windows 98, Windows 2000)
Motherboards
Most modern ATX motherboards should have a 3-pin Wake-on-LAN connector near the PCI slots and should included BIOS support for Wake-on-LAN power up. If you have an Award BIOS check the Power Management Setup for this option.
Network cards
The network card should also include a 3-pin Wake-on-LAN connector. One of the network cards that includes this connector is the Intel Pro/100+ (chipset 82559)
2.4 Wake-up frame
A Wake-up frame is a special data packet containing the Ethernet address of the remote network card. Somewhere in this frame should exist a byte stream (magic sequence) composed by, at the least, 16 times the repetition of the Ethernet address and preceded by a synchronization stream of 6 bytes of FFh.
Magic sequence
If the Ethernet address of a target computer is 01:02:03:04:05:06 (6 bytes), then the LAN controller of that machine should be looking for the following sequence
FFFFFFFFFFFF010203040506010203040506010203040506010203040506
010203040506010203040506010203040506010203040506010203040506
010203040506010203040506010203040506010203040506010203040506
010203040506010203040506
inside the frame.
2.5 Ethernet addresses
An Ethernet Address ia a six octets (48 bits) number that uniquelly identifies every network interface card (NIC). The first three octects (24 bits) are known as the Organizationally Unique Identifier (OUI) and identifies its manufacturer.
The IEEE organization maintains a list of the OUIs in the following web page: IEEE OUI and Company_id Assignments.
References:
Ethernet: the Definitive Guide
Charles E. Spurgeon
O'Reilly
Homepage: Author homepage.
IEEE 802.3 Carrier Sense Multiple Access with Collision Detection (CSMA/CD)
Access Method and Physical Layer Specification
Institute of Electrical and Electronics Engineers
Since May 14, 2001 the IEEE Local and Metropolitan Area Network (802) standards can be downloaded from the IEEE web site (
http://standards.ieee.org/getieee802/).
How to obtain Ethernet addresses
Local NICs:
* Window 9x - Run the program "winipcfg.exe"
* Windows NT & Windows 2000 - Run the program "ipconfig.exe /all"
* Linux - Run the program "ifconfig"
Other methods:
* Ping a remote machine and check the arp table
* Ping a broadcast address and check the arp table
* Check the database of the arpwatch daemon
* Check the the leases and configuration file of the DHCP daemon
Linux:
* ifconfig
* ping -b -c 2 -i 15 192.168.0.255
* cat /proc/net/arp
* arp -a
* static entries: /etc/ether
Windows NT
* ipconfig /all
* netbstat -a local_ip_addr
* ping
* arp
2.6 TCP/IP broadcast addresses
Reference:
Internetworking with TCP/IP
Volume I: Principles, protocols, and architecture (third edition)
Douglas E. Comer
Prentice Hall