Wake-on-LAN (WoL) je ethernetový alebo tokenringový počítačový sieťový štandard, ktorý umožňuje zapnutie alebo prebudenie počítača sieťovou správou.
- Správa sa zvyčajne odosiela do cieľového počítača pomocou programu spusteného na zariadení pripojenom k rovnakej lokálnej sieti, ako je napríklad smartfón.
- Je tiež možné iniciovať správu z inej siete pomocou vysielania smerovaného do podsiete alebo služby brány WOL.
- Ekvivalentné termíny zahŕňajú prebudenie cez WAN vzdialené prebudenie cez LAN zapnutie cez LAN obnovenie LAN obnovením na LAN a prebudenie cez LAN.
Princíp činnosti
- Wake-on-LAN („WOL“) sa realizuje pomocou špeciálne navrhnutého paketu nazývaného magic packet, ktorý sa posiela všetkým počítačom v sieti medzi nimi počítačom, ktorý má byť prebudený.
- Magický paket obsahuje MAC adresu cieľového počítača a identifikačné číslo zabudované do každej sieťovej karty („NIC“) alebo iných ethernetových zariadení v počítači, ktoré umožňuje jeho jedinečné rozpoznanie a adresovanie v sieti.
- Vypnuté alebo vypnuté počítače schopné Wake-on-LAN budú obsahovať sieťové zariadenia schopné „počúvať“ prichádzajúce pakety v režime nízkej spotreby, keď je systém vypnutý.
- Ak sa prijme magický paket, ktorý je nasmerovaný na adresu MAC zariadenia, sieťová karta signalizuje napájaciemu zdroju počítača alebo základnej doske, aby spustili prebudenie systému takmer rovnakým spôsobom, ako by to urobilo stlačenie tlačidla napájania.
- Magický paket je odoslaný na vrstve dátového spojenia (vrstva 2 v modeli OSI) a po odoslaní je vysielaný do všetkých pripojených zariadení v danej sieti pomocou vysielacej adresy siete; IP adresa (vrstva 3 v modeli OSI) sa nepoužíva.
Aby Wake-on-LAN fungovalo, časti sieťového rozhrania musia zostať zapnuté. Toto spotrebuje malé množstvo energie v pohotovostnom režime oveľa menej ako pri bežnej prevádzke. Zakázanie funkcie wake-on-LAN, keď nie je potrebné, sa preto môže mierne líšiť a znížiť spotrebu energie na počítačoch, ktoré sú vypnuté, ale stále sú zapojené do elektrickej zásuvky.
Štruktúra magického paketu
Magický paket je vysielaný rámec obsahujúci kdekoľvek v rámci svojho užitočného zaťaženia 6 bajtov zo všetkých 255 (FF FF FF FF FF FF v hexadecimálnej sústave), po ktorých nasleduje šestnásť opakovaní 48-bitovej MAC adresy cieľového počítača v celkovom počte 102 bajtov.
Keďže magický paket je skenovaný iba na reťazec vyššie a nie je v skutočnosti analyzovaný úplným zásobníkom protokolov, môže byť odoslaný ako akýkoľvek protokol sieťovej a transportnej vrstvy, hoci sa zvyčajne odosiela ako datagram UDP na port 0 7 alebo 9 alebo priamo cez Ethernet ako EtherType 0x0842.
Štandardný magický paket má nasledujúce základné obmedzenia:
- Vyžaduje MAC adresu cieľového počítača (môže tiež vyžadovať heslo SecureOn).
- Neposkytujte potvrdenie o doručení.
- Nemusí fungovať mimo lokálnej siete.
- Vyžaduje hardvérovú podporu Wake-On-LAN na cieľovom počítači.
- Väčšina bezdrôtových rozhraní 802.11 neudržiava spojenie v stave nízkej spotreby a nemôže prijať magický paket.
Implementácia Wake-on-LAN je navrhnutá tak, aby bola veľmi jednoduchá a aby bola rýchlo spracovaná obvodmi prítomnými na karte sieťového rozhrania s minimálnymi požiadavkami na energiu. Pretože Wake-on-LAN funguje pod vrstvou protokolu IP, vyžaduje sa MAC adresa a IP adresy a názvy DNS strácajú zmysel.
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; }
výstup:
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).
Referencia :
https://en.wikipedia.org/wiki/Wake-on-LAN