특별히 설계된 네트웍 패킷을 사용하여 원격의 컴퓨터를 기동하는 것이다. 이 기능은 네트웍 카드와 마더보드가 Wake on Lan을 지원해야만 제대로 동작한다.
WOL 은 다음과 같은 원리로 동작한다:
PC 를 종료할 때 NIC (네트웍 카드) 은 완전히 꺼진 것은 아닌 상태로 여전히 켜져 있으며, '매직' 패킷이 오는지 살펴보고 있다. 이 패킷은 특정한 문자열 (byte-sequence) 이 포함되어 있어야 하며, 아무 프로토콜 (이를테면 IPX, IP 따위) 에나 얹혀오면 된다. '마법의' 문자열을 만드는 코드를 참조하기 바란다.
이 프로그램은 UDP 를 사용해서 패킷을 보낸다. 이더넷 인터페이스로 전달되는 UDP 패킷의 완전한 모습은 아래와 같은 것이다:
[ethernet header][IP header][UDP header][Magic sequence][CRCS] |
스크립트는 단지 이 패킷을 보내는 것으로 족하다. NIC 은 수신만 할 뿐이며 무언가 응답하는 것이 없으므로, 이 패킷을 보낸 후 돌아오는 데이터 등에 대해서는 신경쓰지 않아도 좋다.
프로토콜에 대한 좀 더 상세한 설명은 AMD 백서를 참고하라.
그린 PC, WOL 지원의 마더보드 BIOS, 네트웍 카드, PCI 2.2 규격, os 지원 (windows 95 - DELL 의 문서에 의하면 가능 -, windows 98, windows 2000)
마더보드
최근의 거의 모든 마더보드에는 PCI 슬롯 옆에 3 핀의 WOL 커넥터가 있을 것이고, 또한 BIOS 에서도 WOL 로 기동하는 기능이 포함되어 있을것이다. 만약 Award BIOS 를 사용하다면 Power Management Setup 에서 이 옵션을 찾을 수 있다.
네트웍 카드
네트웍 카드에도 3 핀의 WOL 커넥터가 있을 것이다. 이 커넥터가 있는 네트웍 카드로는 Intel Pro/100+ (82559 칩셋) 가 있다.
Wake-up 프레임은 원격 호스트의 이더넷 주소 (MAC address) 를 포함하고 있는 특별한 데이터 패킷이다. 이 프레임 내의 어딘가에는 동기화를 위한 6 바이트의 FFh 로 시작해서 그 이더넷 주소가 적어도 16 번 반복되는 문자열 ('마법의' 문자열) 이 존재해야 한다.
'마법의' 문자열
대상 호스트의 이더넷 주소가 01:02:03:04:05:06 (6 바이트) 라면, 그 호스트의 LAN 카드는 아래와 같은
FFFFFFFFFFFF010203040506010203040506010203040506010203040506 010203040506010203040506010203040506010203040506010203040506 010203040506010203040506010203040506010203040506010203040506 010203040506010203040506 |
라는 문자열이 패킷에 들어있는지 살펴보게 된다.
이더넷 주소는 6 옥텟 [1] (48 비트) 숫자인데, 이는 모든 네트웍 카드 (NIC) 를 고유하게 식별하도록 한다. 처음 세 옥텟 (24 비트) 는 Organizationally Unique Identifier (OUI) 라고 불리며, 이는 NIC 의 제조사를 나타낸다.
IEEE 에서는 OUI 목록을 다음 웹페이지에 유지하고 있다: IEEE OUI and Company_id Assignments.
참고서적:
Ethernet: the Definitive Guide |
Charles E. Spurgeon |
O'Reilly |
홈페이지: 저자의 홈페이지.
IEEE 802.3 Carrier Sense Multiple Access with Collision Detection (CSMA/CD) |
Access Method and Physical Layer Specification |
Institute of Electrical and Electronics Engineers |
2001 년 3 월 14 일 부터 LAN/MAN (802) 표준을 IEEE 웹사이트 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/) 에서 다운로드 할 수 있다.
이더넷 주소는 어떻게 알아보죠?
로컬 NIC 의 경우:
Window 9x - "winipcfg.exe" 를 실행한다.
Windows NT 와 Windows 2000 - "ipconfig.exe /all" 를 실행한다.
Linux - "ifconfig" 를 실행한다.
다른 방법:
원격 호스트에 ping 을 보낸 다음 arp table 을 살펴본다.
브로드캐스트 주소에 ping 을 보낸 다음 arp table 을 살펴본다.
arpwatch 데몬의 데이터베이스를 살펴본다.
대여 ip (lease) 와 DHCP 데몬의 설정파일을 살펴본다.
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
참고서적:
Internetworking with TCP/IP |
Volume I: Principles, protocols, and architecture (third edition) |
Douglas E. Comer |
Prentice Hall |
인터넷 주소에 대한 설명을 이 책의 4 장에서 찾을 수 있다. (4.5, 4.6, 4.11 절)
[1] | 역주 : 1 octets = 8 bits |