logo

Program do zdalnego włączania komputera przez Internet przy użyciu protokołu Wake-on-LAN.

Wake-on-LAN (WoL) to standard sieci komputerowej Ethernet lub Token Ring, który umożliwia włączenie lub wybudzenie komputera za pomocą komunikatu sieciowego. 

  • Wiadomość jest zwykle wysyłana do komputera docelowego przez program uruchomiony na urządzeniu podłączonym do tej samej sieci lokalnej, np. smartfonie.
  • Możliwe jest także zainicjowanie komunikatu z innej sieci przy użyciu rozgłaszania kierowanego do podsieci lub usługi bramy WOL.
  • Równoważne terminy obejmują zdalne wybudzenie przez sieć WAN, włączenie zasilania przez sieć LAN, wznowienie przez LAN, wznowienie w sieci LAN i wybudzenie w sieci LAN.

Zasada działania  

  • Funkcja Wake-on-LAN („WOL”) jest realizowana przy użyciu specjalnie zaprojektowanego pakietu zwanego pakietem magicznym, który jest wysyłany do wszystkich komputerów w sieci, w tym do komputera, który ma zostać wybudzony.
  • Pakiet magiczny zawiera adres MAC komputera docelowego oraz numer identyfikacyjny wbudowany w każdą kartę interfejsu sieciowego („NIC”) lub inne urządzenie Ethernet w komputerze, który umożliwia jego jednoznaczne rozpoznanie i zaadresowanie w sieci.
  • Wyłączone komputery z funkcją Wake-on-LAN będą zawierać urządzenia sieciowe zdolne do „słuchania” przychodzących pakietów w trybie niskiego poboru mocy, gdy system jest wyłączony.
  • Jeśli odebrany zostanie magiczny pakiet kierowany na adres MAC urządzenia, karta sieciowa wysyła sygnał do zasilacza komputera lub płyty głównej, aby zainicjował wybudzanie systemu, podobnie jak naciśnięcie przycisku zasilania.
  • Pakiet magiczny jest wysyłany w warstwie łącza danych (warstwa 2 w modelu OSI) i po wysłaniu jest rozgłaszany do wszystkich podłączonych urządzeń w danej sieci przy użyciu adresu rozgłoszeniowego sieci; adres IP (warstwa 3 w modelu OSI) nie jest używany.

Aby funkcja Wake-on-LAN działała, niektóre elementy interfejsu sieciowego muszą pozostać włączone. Zużywa to niewielką ilość energii w trybie gotowości, znacznie mniej niż normalna moc robocza. Wyłączenie funkcji Wake-on-LAN, gdy nie jest potrzebna, może zatem nieznacznie zmniejszyć zużycie energii na komputerach, które są wyłączone, ale nadal podłączone do gniazdka elektrycznego.



Struktura pakietu magicznego  
Pakiet magiczny to ramka rozgłoszeniowa zawierająca w dowolnym miejscu ładunku 6 bajtów ze wszystkich 255 (FF FF FF FF FF FF w formacie szesnastkowym), po których następuje szesnaście powtórzeń 48-bitowego adresu MAC komputera docelowego, co daje w sumie 102 bajty. 
Ponieważ pakiet magiczny jest skanowany tylko pod kątem powyższego ciągu, a nie w rzeczywistości analizowany przez pełny stos protokołów, może zostać wysłany jako dowolny protokół warstwy sieci i transportu, chociaż zazwyczaj jest wysyłany jako datagram UDP do portu 0 7 lub 9 lub bezpośrednio przez Ethernet jako EtherType 0x0842.

Standardowy magiczny pakiet ma następujące podstawowe ograniczenia:   

  1. Wymaga adresu MAC komputera docelowego (może również wymagać hasła SecureOn).
  2. Nie dostarczaj potwierdzenia dostawy.
  3. Może nie działać poza siecią lokalną.
  4. Wymaga sprzętowej obsługi funkcji Wake-On-LAN na komputerze docelowym.
  5. Większość interfejsów bezprzewodowych 802.11 nie utrzymuje łącza w stanach niskiego poboru mocy i nie może odbierać pakietów magicznych.

Implementacja Wake-on-LAN została zaprojektowana tak, aby była bardzo prosta i mogła być szybko przetwarzana przez obwody znajdujące się na karcie interfejsu sieciowego przy minimalnym zapotrzebowaniu na energię. Ponieważ funkcja Wake-on-LAN działa poniżej warstwy protokołu IP, wymagany jest adres MAC, co sprawia, że ​​adresy IP i nazwy DNS stają się bez znaczenia.

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

Wyjście: 

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

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

Utwórz quiz