Program a számítógép távoli bekapcsolására az interneten keresztül a Wake-on-LAN protokoll segítségével.

Wake-on-LAN (WoL) egy Ethernet vagy token ring számítógépes hálózati szabvány, amely lehetővé teszi a számítógép bekapcsolását vagy felébresztését hálózati üzenet hatására. 

  • Az üzenetet általában egy olyan program küldi el a célszámítógépnek, amely ugyanahhoz a helyi hálózathoz csatlakoztatott eszközön, például okostelefonon fut.
  • Lehetőség van az üzenet másik hálózatról történő kezdeményezésére is, alhálózatra irányított sugárzással vagy WOL átjáró szolgáltatással.
  • Az egyenértékű kifejezések közé tartozik a Wake on WAN távoli ébresztési bekapcsolás LAN-on keresztüli bekapcsolás a LAN-on keresztül a Folytatás a LAN-on keresztül a Folytatás a LAN-on és az Wake-up on LAN.

Működési elv  

  • A Wake-on-LAN ('WOL') egy speciálisan kialakított, varázscsomagnak nevezett csomag segítségével valósul meg, amelyet a hálózat összes számítógépére küldenek, köztük az ébresztendő számítógépet is.
  • A mágikus csomag tartalmazza a célszámítógép MAC-címét, egy azonosító számot, amely a számítógép minden hálózati interfészkártyájába ("NIC") vagy más Ethernet-eszközbe van beépítve, amely lehetővé teszi az egyedi felismerést és címzést a hálózaton.
  • A Wake-on-LAN-ra képes kikapcsolt vagy kikapcsolt számítógépek hálózati eszközöket tartalmaznak, amelyek képesek „hallgatni” a bejövő csomagokat alacsony fogyasztású módban, miközben a rendszer ki van kapcsolva.
  • Ha az eszköz MAC-címére irányított varázscsomag érkezik, a hálózati kártya a számítógép tápegységének vagy az alaplapnak jelzi a rendszer felébresztését, nagyjából ugyanúgy, mint a bekapcsológomb megnyomásával.
  • A mágikus csomag az adatkapcsolati rétegen (az OSI modellben a 2. rétegen) kerül elküldésre, és elküldéskor egy adott hálózaton lévő összes csatlakoztatott eszközhöz a hálózati sugárzási cím használatával kerül elküldésre; az IP-cím (az OSI modellben 3-as réteg) nincs használatban.

Ahhoz, hogy a Wake-on-LAN működjön, a hálózati interfész egyes részeinek bekapcsolva kell maradniuk. Ez kis mennyiségű készenléti energiát sokkal kevesebbet fogyaszt, mint a normál működési teljesítmény. A wake-on-LAN letiltása, amikor nem szükséges, ezért némileg csökkentheti az energiafogyasztást a kikapcsolt, de konnektorba csatlakoztatott számítógépeken.

Mágikus csomagstruktúra  
A mágikus csomag egy broadcast keret, amely a hasznos terhelésen belül bárhol 6 bájtot tartalmaz mind a 255-ből (FF FF FF FF FF FF hexadecimálisan), majd a célszámítógép 48 bites MAC-címének tizenhat ismétlését, összesen 102 bájtot. 
Mivel a varázscsomag csak a fenti karakterláncot keresi, és valójában nem elemzi egy teljes protokollverem, elküldhető bármely hálózati és szállítási rétegbeli protokollként, bár általában UDP-datagramként kerül elküldésre a 0 7-es vagy 9-es portra, vagy közvetlenül Etherneten keresztül EtherType 0x0842-ként.

Egy szabványos mágikus csomagnak a következő alapvető korlátai vannak:   

  1. Megköveteli a célszámítógép MAC-címét (szükséges lehet egy SecureOn jelszó is).
  2. Ne adjon kézbesítési visszaigazolást.
  3. Előfordulhat, hogy a helyi hálózaton kívül nem működik.
  4. A Wake-On-LAN hardveres támogatása szükséges a célszámítógépen.
  5. A legtöbb 802.11 vezeték nélküli interfész alacsony fogyasztású állapotban nem tart fenn kapcsolatot, és nem tud varázscsomagot fogadni.

A Wake-on-LAN megvalósítást úgy tervezték, hogy nagyon egyszerű legyen, és gyorsan feldolgozható legyen a hálózati interfészkártyán lévő áramkörrel, minimális energiaigény mellett. Mivel a Wake-on-LAN az IP-protokollréteg alatt működik, a MAC-címre van szükség, ami értelmetlenné teszi az IP-címeket és a DNS-neveket.

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

Kimenet: 

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

Hivatkozás:  
https://en.wikipedia.org/wiki/Wake-on-LAN
 

Kvíz létrehozása