Wake-on-LAN (WoL) je Ethernet ili token ring računalni mrežni standard koji omogućuje da se računalo uključi ili probudi mrežnom porukom.
- Poruku ciljanom računalu obično šalje program koji se izvršava na uređaju spojenom na istu lokalnu mrežu, poput pametnog telefona.
- Također je moguće pokrenuti poruku iz druge mreže korištenjem emitiranja usmjerenih na podmrežu ili usluge pristupnika WOL.
- Ekvivalentni pojmovi uključuju daljinsko buđenje putem WAN-a, uključivanje putem LAN-a, uključivanje putem LAN-a, nastavak putem LAN-a, nastavak na LAN-u i buđenje na LAN-u.
Princip rada
- Wake-on-LAN ('WOL') implementira se korištenjem posebno dizajniranog paketa koji se naziva magični paket koji se šalje svim računalima u mreži među kojima je i računalo koje treba probuditi.
- Čarobni paket sadrži MAC adresu odredišnog računala, identifikacijski broj ugrađen u svaku karticu mrežnog sučelja ('NIC') ili druge ethernet uređaje u računalu koji omogućuje njegovo jedinstveno prepoznavanje i adresiranje na mreži.
- Isključena ili isključena računala sposobna za Wake-on-LAN sadržavat će mrežne uređaje koji mogu 'slušati' dolazne pakete u načinu rada niske potrošnje dok je sustav isključen.
- Ako se primi čarobni paket koji je usmjeren na MAC adresu uređaja, NIC signalizira napajanju računala ili matičnoj ploči da započne buđenje sustava na sličan način kao što bi to bilo pritiskom na tipku za napajanje.
- Čarobni paket se šalje slojem podatkovne veze (sloj 2 u OSI modelu) i kada se pošalje, emitira se svim priključenim uređajima na danoj mreži koristeći mrežnu adresu emitiranja; IP-adresa (sloj 3 u OSI modelu) se ne koristi.
Kako bi Wake-on-LAN radio, dijelovi mrežnog sučelja moraju ostati uključeni. Ovo troši malu količinu energije u stanju pripravnosti, mnogo manje od normalne radne snage. Onemogućavanje wake-on-LAN-a kada nije potrebno stoga može malo smanjiti potrošnju energije na računalima koja su isključena, ali još uvijek uključena u strujnu utičnicu.
Struktura čarobnog paketa
Čarobni paket je okvir emitiranja koji sadrži bilo gdje unutar svog nosivosti 6 bajtova od svih 255 (FF FF FF FF FF FF u heksadecimalnom obliku) nakon čega slijedi šesnaest ponavljanja 48-bitne MAC adrese ciljnog računala za ukupno 102 bajta.
Budući da se magični paket samo skenira u potrazi za gore navedenim nizom i zapravo ga ne analizira cijeli hrp protokola, može se poslati kao bilo koji protokol mrežnog i transportnog sloja iako se obično šalje kao UDP datagram na port 0 7 ili 9 ili izravno preko Etherneta kao EtherType 0x0842.
Standardni čarobni paket ima sljedeća osnovna ograničenja:
- Zahtijeva MAC adresu odredišnog računala (također može zahtijevati SecureOn lozinku).
- Nemojte davati potvrdu isporuke.
- Možda neće raditi izvan lokalne mreže.
- Zahtijeva hardversku podršku za Wake-On-LAN na odredišnom računalu.
- Većina 802.11 bežičnih sučelja ne održavaju vezu u stanjima niske potrošnje i ne mogu primiti čarobni paket.
Implementacija Wake-on-LAN dizajnirana je tako da bude vrlo jednostavna i da je brzo obradi strujni krug prisutan na kartici mrežnog sučelja uz minimalnu potrošnju energije. Budući da Wake-on-LAN radi ispod sloja IP protokola, potrebna je MAC adresa i čini IP adrese i DNS nazive besmislenim.
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] = 0xgh; // 4th octet of the MAC Address mac[4] = 0xij; // 5th octet of the MAC Address mac[5] = 0xkl; // 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; }
Izlaz:
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).
Referenca:
https://en.wikipedia.org/wiki/Wake-on-LAN