WOL(WAKE ON LAN)패킷 이란?

2018. 12. 21. 10:55

WOL(Wake On Lan)패킷 이란?

  • WOL매킷(매직패킷)이란, 16진수 FF FF FF FF FF FF 뒤에 맥주소를 일렬로 16번 중단없이 이은 102Byte 짜리 패킷으로 포트 지정 후 해당 패킷을 전송하면 컴퓨터에 전원이 입력됩니다. 
  • Remote Wake-up이라고도 하는 Wake on LAN은 특수한 데이터 패킷(*매직 패킷이라고 함)을 전송하여 네트워크 컴퓨터를 원격으로 켤 수 있는 기술입니다. 컴퓨터가 꺼진 경우에도 네트워크 어댑터가 계속해서 네트워크를 "수신 대기"하므로 특수한 패킷이 도착하면 네트워크 어댑터가 컴퓨터를 켤 수 있습니다.

[그림 1.1] 매직 패킷 Byte Stream 출저: http://windows.microsoft.com/ko-kr/windows7/what-are-wake-on-lan-capabilities

 

 

WOL(WAKE ON LAN)패킷 사용방법 및 설정

 

  •  우선 꺼져있는 PC IP가 없으므로 네트워크를 통해 직접적인 신호를 보낼 수 없습니다. 때문에 공유기 또는 라우터에게 매직패킷을 전송하며, 전송시에는 브로드캐스팅 방식을 사용 합니다.
  • 이는 특정 IP로 신호를 보내는 것이 아니라 같은망에 있는 모든 랜선에 동일한 신호를 보내 모든 PC가 해당 패킷을 수신할 수 있게 하기 위해서 입니다. 이 과정에서 꺼져있던 PC는 매직 패킷을 수신하게 되며 PC는 이에 반응해 부팅하게 됩니다. 
  • WOL 패킷을 사용하기 위한 설정으로는 보통은 아래와 같은 과정을 거치면 되며, 설정 관련 부분은 PC, OS마다 다를 수 있습니다. 
  • 장치관리자-네트워크어댑터-랜카드드라이버-속성-고급-웨이크 온 랜 종료-사용함 으로 변경 후
  • 장치관리자-네트워크어댑터-랜카드드라이버-속성-전원관리-모두 체크 해제를 합니다. 
  • 바이오스-PME~~~-사용함

 

 

 

C# Code

using System.Net;
using System.Net.Sockets;

namespace WakeOnLan
{
    class Program
    {
        static void Main(string[] args)
        {
            byte[] mac = new byte[] { 0x00, 0x07, 0x00, 0x00, 0x00, 0x00 }; //mac주소  쓰면됨.
            WakeUp(mac);
        }

        private static void WakeUp(byte[] mac)
        {
            UdpClient client = new UdpClient();
            client.Connect(IPAddress.Broadcast, 40000);

            byte[] packet = new byte[17 * 6];

            for (int i = 0; i < 6; i++)
            {
                packet[i] = 0xFF;
            }

            for (int i = 1; i <= 16; i++)
            {
                for (int j = 0; j < 6; j++)
                {
                    packet[i * 6 + j] = mac[j];
                }
            }
            client.Send(packet, packet.Length);
        }
    }
}

'etc.' 카테고리의 다른 글

Native Code와 Managed Code  (0) 2021.04.19
int main( )? void main( )?  (0) 2018.12.21

BELATED ARTICLES

more