logo

Програма для віддаленого ввімкнення ПК через Інтернет за допомогою протоколу Wake-on-LAN.

Wake-on-LAN (WoL) це стандарт комп’ютерної мережі Ethernet або Token Ring, який дозволяє ввімкнути комп’ютер або вивести його з режиму сну мережевим повідомленням. 

Excel видалити перший символ
  • Зазвичай повідомлення надсилається на цільовий комп’ютер за допомогою програми, яка виконується на пристрої, підключеному до тієї ж локальної мережі, наприклад смартфоні.
  • Також можна ініціювати повідомлення з іншої мережі за допомогою широкомовних розсилок, спрямованих на підмережу, або служби шлюзу WOL.
  • Еквівалентні терміни включають пробудження через глобальну мережу, дистанційне пробудження, увімкнення живлення через локальну мережу, відновлення живлення через локальну мережу, відновлення через локальну мережу, відновлення в локальній мережі та пробудження через локальну мережу.

Принцип дії  

  • Wake-on-LAN ('WOL') реалізується за допомогою спеціально розробленого пакета, який називається чарівним пакетом, який надсилається на всі комп'ютери в мережі, в тому числі на комп'ютер, який потрібно активувати.
  • Чарівний пакет містить MAC-адресу комп’ютера призначення та ідентифікаційний номер, вбудований у кожну плату мережевого інтерфейсу («NIC») або інші пристрої Ethernet у комп’ютері, що дозволяє його однозначно розпізнавати та адресувати в мережі.
  • Вимкнені або вимкнені комп’ютери з підтримкою Wake-on-LAN міститиме мережеві пристрої, здатні «прослуховувати» вхідні пакети в режимі низького енергоспоживання, коли живлення системи вимкнено.
  • Якщо отримано чарівний пакет, спрямований на MAC-адресу пристрою, мережевий адаптер сигналізує блоку живлення або материнській платі комп’ютера ініціювати вихід системи з режиму сну приблизно так само, як це було б натиснуто кнопку живлення.
  • Чарівний пакет надсилається на канальному рівні (рівень 2 у моделі OSI) і після надсилання розсилається на всі підключені пристрої в даній мережі за допомогою широкомовної адреси мережі; IP-адреса (рівень 3 у моделі OSI) не використовується.

Щоб Wake-on-LAN працював, частини мережевого інтерфейсу мають залишатися ввімкненими. Це споживає невелику кількість енергії в режимі очікування, набагато менше, ніж звичайна робоча потужність. Вимкнення пробудження через локальну мережу, коли воно не потрібне, може дещо зменшити споживання енергії на комп’ютерах, які вимкнено, але все ще підключено до розетки.



Чарівна структура пакета  
Чарівний пакет — це широкомовний кадр, який містить будь-де в межах свого корисного навантаження 6 байтів із усіх 255 (FF FF FF FF FF FF у шістнадцятковому форматі), за якими слідують шістнадцять повторів 48-бітної MAC-адреси цільового комп’ютера, що становить 102 байти. 
Оскільки чарівний пакет лише сканується на наявність рядка вище, а не аналізується повним стеком протоколів, його можна надіслати як будь-який протокол мережевого та транспортного рівня, хоча зазвичай він надсилається як дейтаграма UDP на порт 0 7 або 9 або безпосередньо через Ethernet як EtherType 0x0842.

Стандартний магічний пакет має такі основні обмеження:   

  1. Потрібна MAC-адреса цільового комп’ютера (також може знадобитися пароль SecureOn).
  2. Не надавайте підтвердження доставки.
  3. Може не працювати поза локальною мережею.
  4. Потрібна апаратна підтримка Wake-On-LAN на цільовому комп’ютері.
  5. Більшість бездротових інтерфейсів 802.11 не підтримують зв’язок у стані низького енергоспоживання та не можуть отримати магічний пакет.

Реалізація Wake-on-LAN розроблена так, щоб вона була дуже простою та швидко оброблялася схемою, наявною на платі мережевого інтерфейсу, з мінімальними вимогами до живлення. Оскільки Wake-on-LAN працює нижче рівня протоколу IP, потрібна MAC-адреса, що робить IP-адреси та імена 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] = 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; } 

Вихід: 

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

Посилання:  
https://en.wikipedia.org/wiki/Wake-on-LAN
 

Створіть вікторину