Desde la página web de Wireshark :
El bloque MAC de destino contiene 16 duplicaciones de la dirección IEEE del objetivo, sin interrupciones ni interrupciones.
¿Hay alguna razón específica para las 16 duplicaciones?
fuente
Desde la página web de Wireshark :
El bloque MAC de destino contiene 16 duplicaciones de la dirección IEEE del objetivo, sin interrupciones ni interrupciones.
¿Hay alguna razón específica para las 16 duplicaciones?
En mi opinión, el valor tiene que ser exactamente 16.
La tecnología Magic Packet ( documento técnico , publicación n.º 20213) se desarrolló entre AMD y Hewlett Packard alrededor de 1995. De la página 2:
"Dado que un controlador Ethernet ya tiene un circuito de correspondencia de direcciones incorporado ..." proponen reutilizarlo, agregando un contador "para contar las 16 duplicaciones de la dirección IEEE".
Razonan que WOL debería ser trivial para agregar, dejando la implementación real abierta de par en par. Esto no parece ser históricamente arbitrario ("Oh, 16 parece lo suficientemente largo"), porque:
Construye sobre lo que tienes / lo que sabes. Por ejemplo, supongamos que nos gustan las potencias de 2 y, por lo tanto, los dígitos hexadecimales. Convenientemente, un dígito hexadecimal (4 bits) contiene valores positivos de 0-15. Nuestro procesador verifica todas las matemáticas y establece un "indicador" de desbordamiento si intentamos agregar 1 a un valor ya "máximo" (como 15). Debido a que es bastante común, incluso podemos tener una instrucción especial para condiciones de desbordamiento, así que en pseudocódigo:
Initialize a single counter that holds values from 0-15.
Set it to 0.
Watch the network. When I see the signal:
Loop:
Do I see my address at the right spot?
Yes: Add 1 to counter.
Did I just overflow? (15+1 = 0?)
Yes: Jump out of loop to "wake up" code.
...otherwise
Loop again.
Líneas de señal de chip. La referencia de AMD a los "circuitos" lleva al extremo profundo, por lo que todo lo que realmente necesita saber es que podemos imaginar un caso simple en el que un "bit establecido en 1" corresponde a un voltaje "alto" en algún lugar de un chip, visible en un "alfiler".
Arduinos son un buen ejemplo: establezca un bit de memoria en 1, y Arduino establece un pin de salida "alto". Este cambio de voltaje a menudo se demuestra mediante la activación de los LED, pero a través de la magia de los transistores puede activar, interrumpir o "despertar" automáticamente otros circuitos o chips.
Supongamos una representación hexadecimal más natural (dos dígitos hexadecimales, como FF, a menudo vistos en IP, máscaras y direcciones MAC) y vinculemos el "pin de salida 5" de nuestro Arduino a la "posición de bit 5" en nuestro contador:
Memory Value Event
0000 0000 00 Nothing, so keep adding 1...
0000 1111 0F Nothing, but add 1...
0001 0000 10 Arduino pin 5 high. New voltage interrupts other circuits.
Debido a que la ubicación de la memoria está vinculada a ese pin, es elegante y todo el hardware: solo sigue agregando 1, sin necesidad de interferir con el controlador o el código de desarrollador del BIOS. Eres solo un fabricante de circuitos de todos modos. Proporcionará un pin que va alto, para ser consumido por el silicio de otro fabricante de chips, que es lo que todos están haciendo. En el mundo real es un poco más complicado (por ejemplo, la especificación ENC28J60 lo expone con detalles horripilantes), pero esa es la esencia.
Después de esto, la obviedad humana parece más un efecto secundario que el objetivo. Para las computadoras, 4 copias de su MAC deberían ser suficientes, pero ahora ese contador no se desbordará y ya no es simple. Por lo tanto, parece más probable que el objetivo sea lograr que sea implementado por tantos diseñadores de silicio, controladores y BIOS como sea posible, y 16 les da a todos la opción de elegir entre "desbordamiento" Y señalización directa, sin rediseñar y rediseñar.
Jugando al abogado del diablo para la detección humana, ¿qué pasa con el próximo número más alto con la misma flexibilidad: 256? Eso no funciona: el segmento de datos solo produce un paquete WOL que es más grande de lo que podría ser una trama Ethernet ( en ese momento ).
Para mí, esto significa que 16 es el único valor que puede ser el segmento WOL .
Si. Es simple y la posibilidad de que alguien envíe estos datos accidentalmente es efectivamente cero.
Desea simple porque un microcontrolador de muy baja potencia en la NIC tiene que poder vigilar permanentemente el tráfico de red ethernet sin procesar y actuar si ve este patrón y no desea encender los sistemas por accidente debido a un flujo de red aleatoria data es el comando para encender el sistema.
fuente
Creo que es principalmente una forma de asegurarse de que solo un paquete mágico realmente despierte la computadora. Como los paquetes se escanean para esta secuencia sin mirar ningún encabezado de protocolo (por ejemplo, direcciones IP, números de puerto), el paquete debe ser fácilmente identificable y la cantidad de falsos positivos cerca de cero. La probabilidad de que un protocolo de red aleatorio envíe un paquete que contenga 16 veces la dirección MAC de una computadora es cercana a cero, pero la posibilidad de un falso positivo es mucho mayor si solo hubiera una repetición.
fuente
16 porque es una lógica muy fácil contar hasta 16. Repetir la dirección MAC porque ya hay una lógica de coincidencia de direcciones en el chip. Libro blanco de AMD
fuente