Ohjelma käynnistää tietokoneen etänä Internetin kautta Wake-on-LAN-protokollan avulla.
Wake-on-LAN (WoL) on Ethernet- tai token ring -tietokoneverkkostandardi, jonka avulla tietokone voidaan käynnistää tai herättää verkkoviestillä.
- Viesti lähetetään yleensä kohdetietokoneelle samaan lähiverkkoon kytketyllä laitteella, kuten älypuhelimella, suoritettavalla ohjelmalla.
- Viesti on myös mahdollista käynnistää toisesta verkosta käyttämällä aliverkkoon suunnattuja lähetyksiä tai WOL-yhdyskäytäväpalvelua.
- Vastaavia termejä ovat wake on WAN etäherätys käynnistyy LAN:lla käynnistys lähiverkolla jatkaminen lähiverkolla jatkaminen lähiverkossa ja herätys LAN-verkossa.
Toimintaperiaate
- Wake-on-LAN ('WOL') toteutetaan käyttämällä erityisesti suunniteltua pakettia, jota kutsutaan taikapaketiksi ja joka lähetetään kaikille verkon tietokoneille, mukaan lukien herätettäville tietokoneille.
- Taikapaketti sisältää kohdetietokoneen MAC-osoitteen ja jokaiseen verkkokorttiin ("NIC") tai muihin tietokoneen ethernet-laitteisiin sisäänrakennetun tunnistenumeron, joka mahdollistaa sen yksilöllisen tunnistamisen ja osoitteen verkossa.
- Sammutetut tai sammutetut tietokoneet, jotka kykenevät Wake-on-LAN-toimintoon, sisältävät verkkolaitteita, jotka pystyvät "kuuntelemaan" saapuvia paketteja virransäästötilassa, kun järjestelmästä on katkaistu virta.
- Jos vastaanotetaan taikapaketti, joka on suunnattu laitteen MAC-osoitteeseen, verkkokortti antaa tietokoneen virtalähteelle tai emolevylle signaalin käynnistääkseen järjestelmän heräämisen pitkälti samalla tavalla kuin virtapainikkeen painaminen tekisi.
- Magic-paketti lähetetään datalinkkikerroksessa (kerros 2 OSI-mallissa) ja lähetyksen jälkeen se yleislähetetään kaikille liitetyille laitteille tietyssä verkossa käyttämällä verkon yleislähetysosoitetta; IP-osoitetta (kerros 3 OSI-mallissa) ei käytetä.
Jotta Wake-on-LAN toimisi, verkkoliitännän osien on pysyttävä päällä. Tämä kuluttaa pienen määrän valmiustilatehoa paljon vähemmän kuin normaali käyttöteho. Wake-on-LAN-toiminnon poistaminen käytöstä, kun sitä ei tarvita, voi siksi hieman vähentää virrankulutusta tietokoneissa, jotka ovat sammutettuja mutta silti kytkettynä pistorasiaan.
Magic-pakettirakenne
Taikapaketti on yleislähetyskehys, joka sisältää missä tahansa hyötykuormassaan 6 tavua kaikista 255:stä (FF FF FF FF FF FF heksadesimaalimuodossa), jota seuraa kuusitoista kohdetietokoneen 48-bittisen MAC-osoitteen toistoa yhteensä 102 tavua.
Koska maaginen paketti skannataan vain yllä olevaa merkkijonoa varten eikä sitä tosiasiassa jäsennä täysi protokollapino, se voidaan lähettää minkä tahansa verkko- ja siirtokerroksen protokollana, vaikka se lähetetään tyypillisesti UDP-datagrammina porttiin 0 7 tai 9 tai suoraan Ethernetin kautta EtherType 0x0842:na.
Tavallisella taikapaketilla on seuraavat perusrajoitukset:
- Edellyttää kohdetietokoneen MAC-osoitetta (saattaa vaatia myös SecureOn-salasanan).
- Älä anna toimitusvahvistusta.
- Ei ehkä toimi paikallisverkon ulkopuolella.
- Edellyttää kohdetietokoneen Wake-On-LAN-laitteistotukea.
- Useimmat langattomat 802.11-liitännät eivät ylläpidä linkkiä pienitehoisissa tiloissa eivätkä voi vastaanottaa taikapakettia.
Wake-on-LAN-toteutus on suunniteltu erittäin yksinkertaiseksi ja nopeasti prosessoitavaksi verkkoliitäntäkortilla olevalla piirillä minimaalisella virrankulutuksella. Koska Wake-on-LAN toimii IP-protokollakerroksen alapuolella, MAC-osoite vaaditaan ja tekee IP-osoitteista ja DNS-nimistä merkityksettömiä.
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 ; }
Lähtö:
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).
Viite:
Luo tietokilpailu
https://en.wikipedia.org/wiki/Wake-on-LAN