Wake-on-LAN (WoL) es un estándar de red de computadoras Ethernet o Token Ring que permite que una computadora se encienda o despierte mediante un mensaje de red.
- El mensaje generalmente se envía a la computadora de destino mediante un programa ejecutado en un dispositivo conectado a la misma red de área local, como un teléfono inteligente.
- También es posible iniciar el mensaje desde otra red mediante transmisiones dirigidas a subred o un servicio de puerta de enlace WOL.
- Los términos equivalentes incluyen activación en WAN activación remota encendido mediante LAN encendido mediante LAN reanudación por LAN reanudación en LAN y activación en LAN.
Principio de funcionamiento
- Wake-on-LAN ("WOL") se implementa mediante un paquete especialmente diseñado llamado paquete mágico que se envía a todas las computadoras en una red, entre ellas la computadora que se va a despertar.
- El paquete mágico contiene la dirección MAC de la computadora de destino y un número de identificación integrado en cada tarjeta de interfaz de red ("NIC") u otros dispositivos Ethernet en una computadora que permite reconocerla y abordarla de manera única en una red.
- Las computadoras apagadas o apagadas con capacidad de Wake-on-LAN contendrán dispositivos de red capaces de "escuchar" los paquetes entrantes en modo de bajo consumo mientras el sistema está apagado.
- Si se recibe un paquete mágico dirigido a la dirección MAC del dispositivo, la NIC envía una señal a la fuente de alimentación de la computadora o a la placa base para que inicie la reactivación del sistema de la misma manera que lo haría al presionar el botón de encendido.
- El paquete mágico se envía en la capa de enlace de datos (capa 2 en el modelo OSI) y cuando se envía se transmite a todos los dispositivos conectados en una red determinada utilizando la dirección de transmisión de la red; la dirección IP (capa 3 en el modelo OSI) no se utiliza.
Para que Wake-on-LAN funcione, algunas partes de la interfaz de red deben permanecer encendidas. Esto consume una pequeña cantidad de energía en espera, mucho menos que la energía operativa normal. Por lo tanto, deshabilitar Wake-on-LAN cuando no sea necesario puede reducir ligeramente el consumo de energía en computadoras que están apagadas pero aún conectadas a una toma de corriente.
Estructura del paquete mágico
El paquete mágico es una trama de transmisión que contiene en cualquier lugar dentro de su carga útil 6 bytes de los 255 (FF FF FF FF FF FF en hexadecimal) seguidos de dieciséis repeticiones de la dirección MAC de 48 bits de la computadora de destino para un total de 102 bytes.
Dado que el paquete mágico solo se escanea en busca de la cadena anterior y en realidad no lo analiza una pila de protocolos completa, puede enviarse como cualquier protocolo de capa de red y transporte, aunque generalmente se envía como un datagrama UDP al puerto 0 7 o 9 o directamente a través de Ethernet como EtherType 0x0842.
Un paquete mágico estándar tiene las siguientes limitaciones básicas:
- Requiere la dirección MAC de la computadora de destino (también puede requerir una contraseña de SecureOn).
- No proporcione una confirmación de entrega.
- Puede que no funcione fuera de la red local.
- Requiere soporte de hardware de Wake-On-LAN en la computadora de destino.
- La mayoría de las interfaces inalámbricas 802.11 no mantienen un enlace en estados de bajo consumo y no pueden recibir un paquete mágico.
La implementación de Wake-on-LAN está diseñada para ser muy simple y ser procesada rápidamente por los circuitos presentes en la tarjeta de interfaz de red con un requisito mínimo de energía. Debido a que Wake-on-LAN opera por debajo de la capa de protocolo IP, se requiere la dirección MAC y hace que las direcciones IP y los nombres DNS carezcan de significado.
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; }
Producción:
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).
Referencia :
https://en.wikipedia.org/wiki/Wake-on-LAN