logo

Program for å eksternt slå på en PC over internett ved hjelp av Wake-on-LAN-protokollen.

Wake-on-LAN (WoL) er en Ethernet- eller tokenring-datanettverksstandard som lar en datamaskin slås på eller vekkes av en nettverksmelding. 

  • Meldingen sendes vanligvis til måldatamaskinen av et program som kjøres på en enhet koblet til det samme lokale nettverket, for eksempel en smarttelefon.
  • Det er også mulig å starte meldingen fra et annet nettverk ved å bruke subnett-rettede kringkastinger eller en WOL-gateway-tjeneste.
  • Tilsvarende begreper inkluderer vekking på WAN ekstern vekkestrøm på ved LAN oppstart av LAN gjenoppta ved LAN gjenoppta på LAN og vekking på LAN.

Prinsipp for operasjon  

  • Wake-on-LAN ('WOL') implementeres ved hjelp av en spesialdesignet pakke kalt en magisk pakke som sendes til alle datamaskiner i et nettverk, blant dem datamaskinen som skal vekkes.
  • Den magiske pakken inneholder MAC-adressen til destinasjonsdatamaskinen, et identifikasjonsnummer innebygd i hvert nettverkskort ('NIC') eller andre Ethernet-enheter i en datamaskin som gjør at den kan gjenkjennes unikt og adresseres i et nettverk.
  • Nedslåtte eller avslåtte datamaskiner som er i stand til Wake-on-LAN, vil inneholde nettverksenheter som kan "lytte" til innkommende pakker i lavstrømsmodus mens systemet er slått av.
  • Hvis det mottas en magisk pakke som er rettet til enhetens MAC-adresse, signaliserer NIC datamaskinens strømforsyning eller hovedkort for å starte systemvekking omtrent på samme måte som å trykke på strømknappen.
  • Den magiske pakken sendes på datalinklaget (lag 2 i OSI-modellen) og når den sendes, kringkastes den til alle tilkoblede enheter på et gitt nettverk ved å bruke nettverkskringkastingsadressen; IP-adressen (lag 3 i OSI-modellen) brukes ikke.

For at Wake-on-LAN skal fungere, må deler av nettverksgrensesnittet forbli på. Dette bruker en liten mengde standby-strøm mye mindre enn normal driftsstrøm. Deaktivering av wake-on-LAN når det ikke er nødvendig kan derfor variere noe, redusere strømforbruket på datamaskiner som er slått av, men som fortsatt er koblet til en stikkontakt.



Magisk pakkestruktur  
Den magiske pakken er en kringkastingsramme som hvor som helst innenfor nyttelasten inneholder 6 byte av alle 255 (FF FF FF FF FF FF i heksadesimal) etterfulgt av seksten repetisjoner av måldatamaskinens 48-biters MAC-adresse for totalt 102 byte. 
Siden den magiske pakken kun skannes for strengen ovenfor og faktisk ikke analyseres av en full protokollstabel, kan den sendes som en hvilken som helst nettverks- og transportlagsprotokoll, selv om den vanligvis sendes som et UDP-datagram til port 0 7 eller 9 eller direkte over Ethernet som EtherType 0x0842.

En standard magisk pakke har følgende grunnleggende begrensninger:   

  1. Krever destinasjonsdatamaskinens MAC-adresse (kan også kreve et SecureOn-passord).
  2. Ikke oppgi en leveringsbekreftelse.
  3. Fungerer kanskje ikke utenfor det lokale nettverket.
  4. Krever maskinvarestøtte for Wake-On-LAN på måldatamaskinen.
  5. De fleste 802.11 trådløse grensesnitt opprettholder ikke en kobling i lavstrømstilstander og kan ikke motta en magisk pakke.

Wake-on-LAN-implementeringen er designet for å være veldig enkel og raskt behandles av kretsene på nettverksgrensesnittkortet med minimalt strømbehov. Fordi Wake-on-LAN opererer under IP-protokolllaget, kreves MAC-adressen og gjør IP-adresser og DNS-navn meningsløse.

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; } 

Produksjon: 

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).

java swing

Referanse:  
https://en.wikipedia.org/wiki/Wake-on-LAN
 

Lag quiz