Program pentru a porni de la distanță un computer prin internet folosind protocolul Wake-on-LAN.
Wake-on-LAN (WoL) este un standard de rețea de computere Ethernet sau token ring care permite ca un computer să fie pornit sau trezit de un mesaj de rețea.
- Mesajul este de obicei trimis către computerul țintă printr-un program executat pe un dispozitiv conectat la aceeași rețea locală, cum ar fi un smartphone.
- De asemenea, este posibil să inițiezi mesajul dintr-o altă rețea folosind transmisii direcționate subrețea sau un serviciu de gateway WOL.
- Termenii echivalenti includ trezire pe WAN pornire de la distanță pornire prin LAN pornire prin LAN reluare prin LAN reluare pe LAN și trezire pe LAN.
Principiul de funcționare
- Wake-on-LAN ("WOL") este implementat folosind un pachet special conceput, numit pachet magic, care este trimis către toate computerele dintr-o rețea, printre care computerul care urmează să fie trezit.
- Pachetul magic conține adresa MAC a computerului de destinație, un număr de identificare încorporat în fiecare placă de interfață de rețea („NIC”) sau alte dispozitive Ethernet dintr-un computer care îi permite să fie recunoscut și adresat în mod unic într-o rețea.
- Calculatoarele oprite sau oprite capabile de Wake-on-LAN vor conține dispozitive de rețea capabile să „asculte” pachetele primite în modul de consum redus în timp ce sistemul este oprit.
- Dacă se primește un pachet magic care este direcționat către adresa MAC a dispozitivului, NIC-ul semnalează sursa de alimentare a computerului sau placa de bază pentru a iniția trezirea sistemului în același mod în care ar face-o apăsarea butonului de pornire.
- Pachetul magic este trimis pe stratul de legătură de date (nivelul 2 în modelul OSI) și atunci când este trimis este transmis către toate dispozitivele atașate dintr-o rețea dată folosind adresa de difuzare a rețelei; adresa IP (nivelul 3 în modelul OSI) nu este utilizată.
Pentru ca Wake-on-LAN să funcționeze, anumite părți ale interfeței de rețea trebuie să rămână activate. Acest lucru consumă o cantitate mică de putere de așteptare mult mai mică decât puterea normală de funcționare. Dezactivarea wake-on-LAN atunci când nu este necesară poate varia, prin urmare, să reducă ușor consumul de energie pe computerele care sunt oprite, dar încă conectate la o priză.
Structura pachetului magic
Pachetul magic este un cadru de difuzare care conține oriunde în sarcina sa utilă 6 octeți din toți cei 255 (FF FF FF FF FF FF în hexazecimal) urmați de șaisprezece repetări ale adresei MAC pe 48 de biți a computerului țintă pentru un total de 102 octeți.
Deoarece pachetul magic este scanat doar pentru șirul de mai sus și nu este analizat de fapt de o stivă completă de protocoale, acesta poate fi trimis ca orice protocol de rețea și de nivel de transport, deși este de obicei trimis ca datagramă UDP la portul 0 7 sau 9 sau direct prin Ethernet ca EtherType 0x0842.
Un pachet magic standard are următoarele limitări de bază:
- Necesită adresa MAC a computerului de destinație (poate necesita și o parolă SecureOn).
- Nu furnizați o confirmare de livrare.
- Este posibil să nu funcționeze în afara rețelei locale.
- Necesită suport hardware pentru Wake-On-LAN pe computerul de destinație.
- Majoritatea interfețelor wireless 802.11 nu mențin o legătură în stări de putere redusă și nu pot primi un pachet magic.
Implementarea Wake-on-LAN este concepută pentru a fi foarte simplă și pentru a fi procesată rapid de circuitele prezente pe placa de interfață de rețea cu un necesar minim de energie. Deoarece Wake-on-LAN funcționează sub nivelul protocolului IP, adresa MAC este necesară și face ca adresele IP și numele DNS să nu aibă sens.
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 ; }
Ieșire:
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).
Referinta:
Creați un test
https://en.wikipedia.org/wiki/Wake-on-LAN