Wake-on-LAN (WoL) è uno standard di rete per computer Ethernet o token ring che consente a un computer di essere acceso o risvegliato da un messaggio di rete.
- Il messaggio viene solitamente inviato al computer di destinazione da un programma eseguito su un dispositivo connesso alla stessa rete locale come uno smartphone.
- È anche possibile avviare il messaggio da un'altra rete utilizzando trasmissioni dirette alla sottorete o un servizio gateway WOL.
- Termini equivalenti includono riattivazione tramite WAN, riattivazione remota, accensione tramite LAN, accensione tramite LAN, ripresa tramite LAN, ripresa su LAN e riattivazione su LAN.
Principio di funzionamento
- Wake-on-LAN ("WOL") viene implementato utilizzando un pacchetto appositamente progettato chiamato pacchetto magico che viene inviato a tutti i computer in una rete tra cui il computer da riattivare.
- Il pacchetto magico contiene l'indirizzo MAC del computer di destinazione, un numero identificativo integrato in ciascuna scheda di interfaccia di rete ("NIC") o altri dispositivi Ethernet in un computer che consente di riconoscerlo e indirizzarlo in modo univoco su una rete.
- I computer spenti o dotati di funzionalità Wake-on-LAN conterranno dispositivi di rete in grado di "ascoltare" i pacchetti in ingresso in modalità a basso consumo mentre il sistema è spento.
- Se viene ricevuto un pacchetto magico indirizzato all'indirizzo MAC del dispositivo, la scheda di rete segnala all'alimentatore o alla scheda madre del computer di avviare la riattivazione del sistema, proprio come farebbe premendo il pulsante di accensione.
- Il pacchetto magico viene inviato sul livello di collegamento dati (livello 2 nel modello OSI) e una volta inviato viene trasmesso a tutti i dispositivi collegati su una determinata rete utilizzando l'indirizzo di trasmissione della rete; l'indirizzo IP (livello 3 nel modello OSI) non viene utilizzato.
Affinché Wake-on-LAN funzioni, è necessario che alcune parti dell'interfaccia di rete rimangano attive. Ciò consuma una piccola quantità di energia in standby, molto inferiore alla normale energia operativa. La disattivazione della wake-on-LAN quando non è necessaria può quindi ridurre leggermente il consumo energetico sui computer spenti ma ancora collegati a una presa di corrente.
Struttura del pacchetto magico
Il pacchetto magico è un frame broadcast contenente ovunque all'interno del suo payload 6 byte su tutti i 255 (FF FF FF FF FF FF in esadecimale) seguito da sedici ripetizioni dell'indirizzo MAC a 48 bit del computer di destinazione per un totale di 102 byte.
Poiché il pacchetto magico viene scansionato solo per la stringa sopra e non effettivamente analizzato da uno stack di protocolli completo, può essere inviato come qualsiasi protocollo a livello di rete e trasporto sebbene venga generalmente inviato come datagramma UDP alla porta 0 7 o 9 o direttamente su Ethernet come EtherType 0x0842.
Un pacchetto magico standard presenta le seguenti limitazioni di base:
- Richiede l'indirizzo MAC del computer di destinazione (potrebbe richiedere anche una password SecureOn).
- Non fornire una conferma di consegna.
- Potrebbe non funzionare al di fuori della rete locale.
- Richiede il supporto hardware di Wake-On-LAN sul computer di destinazione.
- La maggior parte delle interfacce wireless 802.11 non mantengono un collegamento negli stati di basso consumo e non possono ricevere un pacchetto magico.
L'implementazione del Wake-on-LAN è progettata per essere molto semplice e per essere rapidamente elaborata dalla circuiteria presente sulla scheda di interfaccia di rete con un fabbisogno energetico minimo. Poiché Wake-on-LAN opera al di sotto del livello del protocollo IP, è richiesto l'indirizzo MAC e rende privi di significato gli indirizzi IP e i nomi 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 ; }
Produzione:
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).
Riferimento :
Crea quiz
https://en.wikipedia.org/wiki/Wake-on-LAN