Wake-on-LAN (WoL) est une norme de réseau informatique Ethernet ou Token Ring qui permet à un ordinateur d'être allumé ou réveillé par un message réseau.
- Le message est généralement envoyé à l'ordinateur cible par un programme exécuté sur un appareil connecté au même réseau local tel qu'un smartphone.
- Il est également possible de lancer le message à partir d'un autre réseau en utilisant des diffusions dirigées vers un sous-réseau ou un service de passerelle WOL.
- Les termes équivalents incluent le réveil sur le réseau étendu, la mise sous tension par le réseau local, la mise sous tension par le réseau local, la reprise par le réseau local, la reprise sur le réseau local et le réveil sur le réseau local.
Principe de fonctionnement
- Wake-on-LAN (« WOL ») est implémenté à l'aide d'un paquet spécialement conçu appelé paquet magique qui est envoyé à tous les ordinateurs d'un réseau, parmi lesquels l'ordinateur à réveiller.
- Le paquet magique contient l'adresse MAC de l'ordinateur de destination et un numéro d'identification intégré à chaque carte d'interface réseau (« NIC ») ou à d'autres périphériques Ethernet d'un ordinateur qui lui permet d'être reconnu et adressé de manière unique sur un réseau.
- Les ordinateurs éteints ou éteints capables de Wake-on-LAN contiendront des périphériques réseau capables « d'écouter » les paquets entrants en mode basse consommation pendant que le système est hors tension.
- Si un paquet magique est reçu et dirigé vers l'adresse MAC du périphérique, la carte réseau signale à l'alimentation électrique ou à la carte mère de l'ordinateur de lancer le réveil du système, de la même manière que le ferait une pression sur le bouton d'alimentation.
- Le paquet magique est envoyé sur la couche liaison de données (couche 2 dans le modèle OSI) et, une fois envoyé, il est diffusé à tous les périphériques connectés sur un réseau donné en utilisant l'adresse de diffusion réseau ; l'adresse IP (couche 3 dans le modèle OSI) n'est pas utilisée.
Pour que Wake-on-LAN fonctionne, certaines parties de l'interface réseau doivent rester activées. Cela consomme une petite quantité d’énergie en veille, bien inférieure à l’énergie de fonctionnement normale. La désactivation du wake-on-LAN lorsqu'elle n'est pas nécessaire peut donc légèrement réduire la consommation électrique des ordinateurs éteints mais toujours branchés sur une prise de courant.
Structure des paquets magiques
Le paquet magique est une trame de diffusion contenant n'importe où dans sa charge utile 6 octets sur les 255 (FF FF FF FF FF en hexadécimal) suivis de seize répétitions de l'adresse MAC de 48 bits de l'ordinateur cible pour un total de 102 octets.
Étant donné que le paquet magique est uniquement analysé pour la chaîne ci-dessus et n'est pas réellement analysé par une pile de protocoles complète, il peut être envoyé comme n'importe quel protocole de couche réseau et transport, bien qu'il soit généralement envoyé sous forme de datagramme UDP au port 0 7 ou 9 ou directement sur Ethernet sous le nom EtherType 0x0842.
Un paquet magique standard présente les limitations de base suivantes :
- Nécessite l’adresse MAC de l’ordinateur de destination (peut également nécessiter un mot de passe SecureOn).
- Ne fournissez pas de confirmation de livraison.
- Peut ne pas fonctionner en dehors du réseau local.
- Nécessite la prise en charge matérielle de Wake-On-LAN sur l’ordinateur de destination.
- La plupart des interfaces sans fil 802.11 ne maintiennent pas de liaison dans des états de faible consommation et ne peuvent pas recevoir de paquet magique.
La mise en œuvre du Wake-on-LAN est conçue pour être très simple et pour être rapidement traitée par les circuits présents sur la carte d'interface réseau avec une consommation d'énergie minimale. Étant donné que Wake-on-LAN fonctionne sous la couche de protocole IP, l'adresse MAC est requise et rend les adresses IP et les noms DNS dénués de sens.
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; }
Sortir:
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).
Référence :
https://en.wikipedia.org/wiki/Wake-on-LAN