Блок цільового MAC містить 16 дублювань адреси IEEE цілі, без перерв і перебоїв.
Чи є якась конкретна причина для 16 дублювань?
Блок цільового MAC містить 16 дублювань адреси IEEE цілі, без перерв і перебоїв.
Чи є якась конкретна причина для 16 дублювань?
Відповіді:
На мою думку, значення повинно бути рівно 16.
Технологія Magic Packet ( Whitepaper , публікація №20213) була розроблена між AMD та Hewlett Packard приблизно в 1995 році. З 2 сторінки:
"Оскільки контролер Ethernet вже має вбудовану схему відповідності адрес ...", вони пропонують повторно використовувати його, додаючи лічильник "для підрахунку 16 дублювань адреси IEEE".
Вони вважають, що WOL слід тривіально додати, залишаючи фактичну реалізацію широко відкритою. Схоже, це не є довільно історичним ("О, 16 виглядає досить довго"), оскільки:
Побудуйте на тому, що у вас є / що ви знаєте. Для прикладу припустимо, що нам подобаються потужності 2 і тому шістнадцяткові цифри. Зручно, що шістнадцятковий розряд (4 біти) містить позитивні значення від 0-15. Наш процесор перевіряє всю математику і встановлює "прапор" переповнення, якщо ми спробуємо додати 1 до вже "max" значення (наприклад, 15). Оскільки це досить часто, ми можемо навіть мати спеціальну інструкцію щодо умов переповнення, тому в псевдокоді:
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.
Чіп сигнальних ліній. Посилання AMD на "схему" призводить до глибокого кінця, тому все, що вам потрібно насправді знати, - це те, що ми можемо уявити простий випадок, коли "біт, встановлений на 1", відповідає "високій" напрузі десь у мікросхемі, видно на "шпилька".
Arduinos - хороший приклад: встановіть біт пам'яті в 1, а Arduino встановить вихідний контакт "високий". Ця зміна напруги часто демонструється приводом світлодіодів, але завдяки магії транзисторів вона може автоматично активувати, перервати або "розбудити" інші схеми чи мікросхеми.
Припустимо більш природне шістнадцяткове подання (дві шістнадцяткові цифри, такі як FF, часто зустрічаються в IP, масках та MAC-адресах) і прив’яжіть "вихідний штифт 5" нашого Arduino до "бітової позиції 5" в нашому лічильнику:
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.
Оскільки розташування пам'яті прив’язане до цього штифта, воно елегантне та все обладнання: просто продовжуйте додавати 1, не потрібно втручатися в код драйвера або розробника BIOS. Ти все одно просто виробник контурів. Ви забезпечите високу шпильку, яку споживає кремній інших виробників мікросхем, що і роблять усі. У реальному світі це дещо складніше (наприклад, специфікація ENC28J60 викладає це жахливими деталями), але це суть.
Після цього очевидність людини здається більше побічним ефектом, ніж мета. Для комп’ютерів вистачить 4 копій вашого MAC, але тепер цей лічильник не переповниться, і він вже не просто. Тож здається більш імовірним, що мета полягала в тому, щоб його реалізували якомога більше конструкторів кремнію, драйверів та BIOS, а 16 дає кожному можливість вибору між "переповненням" та прямою сигналізацією, без переобладнання та переобладнання.
Граючи в захисника диявола для виявлення людини, як бути наступне вище число з такою ж гнучкістю: 256? Це не працює: один сегмент даних виробляє пакет WOL, який перевищує рамку Ethernet ( на той час ).
Тож для мене це означає, що 16 - це єдине значення, яке може бути сегмент WOL .
Так. Це просто і шанс, що хтось випадково надішле ці дані, фактично дорівнює нулю.
Ви хочете просто, тому що дуже малопотужний мікроконтролер в NIC повинен мати можливість постійно дивитися сирий мережевий трафік і діяти, якщо він бачить цю схему, і ви не хочете включати системи випадково, тому що потік випадкової мережі Дані - це команда для включення системи.
Я думаю, що це головним чином спосіб переконатися, що лише магічний пакет насправді розбудить комп’ютер. Оскільки пакети скануються на цю послідовність, не дивлячись на жодні заголовки протоколу (наприклад, IP-адреси, номери портів), пакет повинен бути легко ідентифікованим, а кількість помилкових позитивів - близьким до нуля. Ймовірність того, що випадковий мережевий протокол надсилає пакет, що містить 16-кратну MAC-адресу комп’ютера, близький до нуля, але шанс помилкового позитиву набагато вищий, якби було лише одне повторення.
16, тому що це мертва легка логіка, яку можна нарахувати до 16. Повторення MAC-адреси, оскільки на мікросхемі вже є логіка відповідності адреси. Білий папір AMD