Program do zdalnego włączania komputera przez Internet przy użyciu protokołu Wake-on-LAN.

Wake-on-LAN (WoL) to standard sieci komputerowej Ethernet lub Token Ring, który umożliwia włączenie lub wybudzenie komputera za pomocą komunikatu sieciowego. 

  • Wiadomość jest zwykle wysyłana do komputera docelowego przez program uruchomiony na urządzeniu podłączonym do tej samej sieci lokalnej, np. smartfonie.
  • Możliwe jest także zainicjowanie komunikatu z innej sieci przy użyciu rozgłaszania kierowanego do podsieci lub usługi bramy WOL.
  • Równoważne terminy obejmują zdalne wybudzenie przez sieć WAN, włączenie zasilania przez sieć LAN, wznowienie przez LAN, wznowienie w sieci LAN i wybudzenie w sieci LAN.

Zasada działania  

  • Funkcja Wake-on-LAN („WOL”) jest realizowana przy użyciu specjalnie zaprojektowanego pakietu zwanego pakietem magicznym, który jest wysyłany do wszystkich komputerów w sieci, w tym do komputera, który ma zostać wybudzony.
  • Pakiet magiczny zawiera adres MAC komputera docelowego oraz numer identyfikacyjny wbudowany w każdą kartę interfejsu sieciowego („NIC”) lub inne urządzenie Ethernet w komputerze, który umożliwia jego jednoznaczne rozpoznanie i zaadresowanie w sieci.
  • Wyłączone komputery z funkcją Wake-on-LAN będą zawierać urządzenia sieciowe zdolne do „słuchania” przychodzących pakietów w trybie niskiego poboru mocy, gdy system jest wyłączony.
  • Jeśli odebrany zostanie magiczny pakiet kierowany na adres MAC urządzenia, karta sieciowa wysyła sygnał do zasilacza komputera lub płyty głównej, aby zainicjował wybudzanie systemu, podobnie jak naciśnięcie przycisku zasilania.
  • Pakiet magiczny jest wysyłany w warstwie łącza danych (warstwa 2 w modelu OSI) i po wysłaniu jest rozgłaszany do wszystkich podłączonych urządzeń w danej sieci przy użyciu adresu rozgłoszeniowego sieci; adres IP (warstwa 3 w modelu OSI) nie jest używany.

Aby funkcja Wake-on-LAN działała, niektóre elementy interfejsu sieciowego muszą pozostać włączone. Zużywa to niewielką ilość energii w trybie gotowości, znacznie mniej niż normalna moc robocza. Wyłączenie funkcji Wake-on-LAN, gdy nie jest potrzebna, może zatem nieznacznie zmniejszyć zużycie energii na komputerach, które są wyłączone, ale nadal podłączone do gniazdka elektrycznego.

Struktura pakietu magicznego  
Pakiet magiczny to ramka rozgłoszeniowa zawierająca w dowolnym miejscu ładunku 6 bajtów ze wszystkich 255 (FF FF FF FF FF FF w formacie szesnastkowym), po których następuje szesnaście powtórzeń 48-bitowego adresu MAC komputera docelowego, co daje w sumie 102 bajty. 
Ponieważ pakiet magiczny jest skanowany tylko pod kątem powyższego ciągu, a nie w rzeczywistości analizowany przez pełny stos protokołów, może zostać wysłany jako dowolny protokół warstwy sieci i transportu, chociaż zazwyczaj jest wysyłany jako datagram UDP do portu 0 7 lub 9 lub bezpośrednio przez Ethernet jako EtherType 0x0842.

Standardowy magiczny pakiet ma następujące podstawowe ograniczenia:   

  1. Wymaga adresu MAC komputera docelowego (może również wymagać hasła SecureOn).
  2. Nie dostarczaj potwierdzenia dostawy.
  3. Może nie działać poza siecią lokalną.
  4. Wymaga sprzętowej obsługi funkcji Wake-On-LAN na komputerze docelowym.
  5. Większość interfejsów bezprzewodowych 802.11 nie utrzymuje łącza w stanach niskiego poboru mocy i nie może odbierać pakietów magicznych.

Implementacja Wake-on-LAN została zaprojektowana tak, aby była bardzo prosta i mogła być szybko przetwarzana przez obwody znajdujące się na karcie interfejsu sieciowego przy minimalnym zapotrzebowaniu na energię. Ponieważ funkcja Wake-on-LAN działa poniżej warstwy protokołu IP, wymagany jest adres MAC, co sprawia, że ​​adresy IP i nazwy DNS stają się bez znaczenia.

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  ;   }   

Wyjście: 

 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).

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

Utwórz quiz