Wake-on-LAN (WoL) е Ethernet или Token Ring компютърен мрежов стандарт, който позволява компютърът да бъде включен или събуден от мрежово съобщение.
- Съобщението обикновено се изпраща до целевия компютър от програма, изпълнявана на устройство, свързано към същата локална мрежа, като например смартфон.
- Възможно е също така да инициирате съобщението от друга мрежа, като използвате излъчвания, насочени към подмрежа, или услуга за шлюз WOL.
- Еквивалентните термини включват събуждане по WAN отдалечено събуждане по LAN захранване по LAN възобновяване по LAN възобновяване по LAN и събуждане по LAN.
Принцип на действие
- Wake-on-LAN („WOL“) се реализира с помощта на специално проектиран пакет, наречен магически пакет, който се изпраща до всички компютри в мрежата, включително компютъра, който трябва да бъде събуден.
- Магическият пакет съдържа MAC адреса на целевия компютър, идентификационен номер, вграден във всяка мрежова интерфейсна карта („NIC“) или други Ethernet устройства в компютъра, който му позволява да бъде уникално разпознат и адресиран в мрежа.
- Изключените или изключени компютри с възможност за Wake-on-LAN ще съдържат мрежови устройства, способни да „слушат“ входящите пакети в режим на ниска мощност, докато системата е изключена.
- Ако се получи магически пакет, който е насочен към MAC адреса на устройството, мрежовата карта сигнализира на захранването на компютъра или дънната платка да инициира събуждане на системата по същия начин, както би направило натискането на бутона за захранване.
- Магическият пакет се изпраща на слоя на връзката за данни (слой 2 в OSI модела) и когато бъде изпратен, се излъчва към всички свързани устройства в дадена мрежа, като се използва мрежовият адрес за излъчване; IP-адресът (слой 3 в OSI модела) не се използва.
За да работи Wake-on-LAN, части от мрежовия интерфейс трябва да останат включени. Това консумира малко енергия в режим на готовност, много по-малко от нормалната работна мощност. Следователно деактивирането на събуждане по LAN, когато не е необходимо, може леко да намали консумацията на енергия на компютри, които са изключени, но все още са включени в електрически контакт.
Магическа структура на пакета
Магическият пакет е излъчван кадър, съдържащ навсякъде в своя полезен товар 6 байта от всички 255 (FF FF FF FF FF FF в шестнадесетичен), последван от шестнадесет повторения на 48-битовия MAC адрес на целевия компютър за общо 102 байта.
Тъй като магическият пакет се сканира само за горния низ и всъщност не се анализира от пълен протоколен стек, той може да бъде изпратен като всеки протокол на мрежовия и транспортния слой, въпреки че обикновено се изпраща като UDP дейтаграма към порт 0 7 или 9 или директно през Ethernet като EtherType 0x0842.
replaceall в низ java
Стандартният магически пакет има следните основни ограничения:
- Изисква MAC адрес на целевия компютър (също може да изисква парола за SecureOn).
- Не предоставяйте потвърждение за доставка.
- Може да не работи извън локалната мрежа.
- Изисква хардуерна поддръжка на Wake-On-LAN на целевия компютър.
- Повечето безжични интерфейси 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