Wake-on-LAN 프로토콜을 사용하여 인터넷을 통해 원격으로 PC 전원을 켜는 프로그램입니다.

WoL(Wake-on-LAN) 컴퓨터가 네트워크 메시지에 의해 켜지거나 깨어날 수 있도록 하는 이더넷 또는 토큰 링 컴퓨터 네트워킹 표준입니다. 

  • 메시지는 일반적으로 스마트폰과 같이 동일한 근거리 통신망에 연결된 장치에서 실행되는 프로그램에 의해 대상 컴퓨터로 전송됩니다.
  • 서브넷 지향 브로드캐스트나 WOL 게이트웨이 서비스를 사용하여 다른 네트워크에서 메시지를 시작하는 것도 가능합니다.
  • 동등한 용어로는 WAN에서 깨우기 LAN으로 원격 깨우기 전원 켜기 LAN으로 전원 켜기 LAN으로 재개 LAN에서 재개 및 LAN에서 깨우기 등이 있습니다.

작동 원리  

  • Wake-on-LAN('WOL')은 깨어나려는 컴퓨터 중 네트워크에 있는 모든 컴퓨터로 전송되는 매직 패킷이라는 특별히 설계된 패킷을 사용하여 구현됩니다.
  • 매직 패킷에는 대상 컴퓨터의 MAC 주소, 각 네트워크 인터페이스 카드('NIC') 또는 컴퓨터의 기타 이더넷 장치에 내장된 식별 번호가 포함되어 있어 네트워크에서 고유하게 인식되고 주소가 지정될 수 있습니다.
  • Wake-on-LAN이 가능한 전원이 꺼졌거나 꺼진 컴퓨터에는 시스템 전원이 꺼진 동안 저전력 모드에서 들어오는 패킷을 '수신'할 수 있는 네트워크 장치가 포함됩니다.
  • 장치의 MAC 주소로 전달되는 매직 패킷이 수신되면 NIC는 컴퓨터의 전원 공급 장치나 마더보드에 신호를 보내 전원 버튼을 누르는 것과 동일한 방식으로 시스템 깨우기를 시작합니다.
  • 매직 패킷은 데이터 링크 계층(OSI 모델의 계층 2)에서 전송되며, 전송되면 네트워크 브로드캐스트 주소를 사용하여 특정 네트워크에 연결된 모든 장치에 브로드캐스트됩니다. IP 주소(OSI 모델의 계층 3)는 사용되지 않습니다.

Wake-on-LAN이 작동하려면 네트워크 인터페이스의 일부가 켜져 있어야 합니다. 이는 정상 작동 전력보다 훨씬 적은 양의 대기 전력을 소비합니다. 따라서 필요하지 않을 때 Wake-on-LAN을 비활성화하면 전원이 꺼져 있지만 여전히 전원 소켓에 연결되어 있는 컴퓨터의 전력 소비를 약간 줄일 수 있습니다.

매직 패킷 구조  
매직 패킷은 페이로드 내에서 전체 255개(16진수로 FF FF FF FF FF FF)의 6바이트와 그 뒤를 이어 대상 컴퓨터의 48비트 MAC 주소를 16번 반복하여 총 102바이트를 포함하는 브로드캐스트 프레임입니다. 
매직 패킷은 위의 문자열에 대해서만 스캔되고 전체 프로토콜 스택에 의해 실제로 구문 분석되지 않기 때문에 일반적으로 포트 0 7 또는 9에 UDP 데이터그램으로 전송되거나 EtherType 0x0842로 이더넷을 통해 직접 전송되지만 네트워크 및 전송 계층 프로토콜로 전송될 수 있습니다.

표준 매직 패킷에는 다음과 같은 기본 제한 사항이 있습니다.   

  1. 대상 컴퓨터 MAC 주소가 필요합니다(SecureOn 비밀번호도 필요할 수 있음).
  2. 배송 확인을 제공하지 마세요.
  3. 로컬 네트워크 외부에서는 작동하지 않을 수 있습니다.
  4. 대상 컴퓨터에서 Wake-On-LAN에 대한 하드웨어 지원이 필요합니다.
  5. 대부분의 802.11 무선 인터페이스는 저전력 상태에서 링크를 유지하지 않으며 매직 패킷을 수신할 수 없습니다.

Wake-on-LAN 구현은 매우 간단하고 최소한의 전력 요구 사항으로 네트워크 인터페이스 카드에 있는 회로에 의해 신속하게 처리되도록 설계되었습니다. Wake-on-LAN은 IP 프로토콜 계층 아래에서 작동하기 때문에 MAC 주소가 필요하며 이로 인해 IP 주소와 DNS 이름이 의미가 없게 됩니다.

C
   // C program to remotely Power On a PC over the   // internet using the Wake-on-LAN protocol.   #include         #include         #include         #include         #include         #include          #include         #include         int     main  ()   {      int     i  ;      unsigned     char     toSend  [  102  ]  mac  [  6  ];      struct     sockaddr_in     udpClient       udpServer  ;      int     broadcast     =     1     ;      // UDP Socket creation      int     udpSocket     =     socket  (  AF_INET       SOCK_DGRAM       0  );      // Manipulating the Socket      if     (  setsockopt  (  udpSocket       SOL_SOCKET       SO_BROADCAST        &  broadcast       sizeof     broadcast  )     ==     -1  )      {      perror  (  'setsockopt (SO_BROADCAST)'  );      exit  (  EXIT_FAILURE  );      }      udpClient  .  sin_family     =     AF_INET  ;      udpClient  .  sin_addr  .  s_addr     =     INADDR_ANY  ;      udpClient  .  sin_port     =     0  ;      //Binding the socket      bind  (  udpSocket       (  struct     sockaddr  *  )  &  udpClient       sizeof  (  udpClient  ));      for     (  i  =  0  ;     i   <  6  ;     i  ++  )      toSend  [  i  ]     =     0xFF  ;      // Let the MAC Address be ab:cd:ef:gh:ij:kl      mac  [  0  ]     =     0xab  ;     // 1st octet of the MAC Address      mac  [  1  ]     =     0xcd  ;     // 2nd octet of the MAC Address      mac  [  2  ]     =     0xef  ;     // 3rd octet of the MAC Address      mac  [  3  ]     =     0  xgh  ;     // 4th octet of the MAC Address      mac  [  4  ]     =     0  xij  ;     // 5th octet of the MAC Address      mac  [  5  ]     =     0  xkl  ;     // 6th octet of the MAC Address      for     (  i  =  1  ;     i   <=  16  ;     i  ++  )      memcpy  (  &  toSend  [  i  *  6  ]     &  mac       6  *  sizeof  (  unsigned     char  ));      udpServer  .  sin_family     =     AF_INET  ;      // Broadcast address      udpServer  .  sin_addr  .  s_addr     =     inet_addr  (  '10.89.255.255'  );      udpServer  .  sin_port     =     htons  (  9  );      sendto  (  udpSocket       &  toSend       sizeof  (  unsigned     char  )     *     102       0        (  struct     sockaddr  *  )  &  udpServer       sizeof  (  udpServer  ));      return     0  ;   }   

산출: 

 This program will power on the switched-off PC   
whose MAC Address is used in this program (the
PC and the Host computer must be connected over
LAN).

참조 :  
https://en.wikipedia.org/wiki/Wake-on-LAN
 

퀴즈 만들기

마음에 드실지도 몰라요