回答:
私の意見では、値は正確に16でなければなりません。
Magic Packet Technology(ホワイトペーパー、出版物#20213)は、1995年頃にAMDとHewlett Packardの間で開発されました。2ページ目から:
「イーサネットコントローラーには既にアドレスマッチング回路が組み込まれているので...」彼らは、「IEEEアドレスの16の重複をカウントアップするために」カウンターを追加して再利用することを提案します。
彼らは、実際の実装を広く公開したまま、WOLを追加するのは簡単なはずだと考えています。これは、歴史的にarbitrary意的ではないようです(「ああ、16は十分に長く見えます」)。
あなたが持っているもの/あなたが知っているものの上に構築してください。例として、2のべき乗、したがって16進数が好きだと仮定しましょう。便利なことに、16進数(4ビット)は0〜15の正の値を保持します。プロセッサはすべての計算をチェックし、既に「最大」値(15など)に1を追加しようとすると、オーバーフロー「フラグ」を設定します。それは非常に一般的であるため、オーバーフロー条件のための特別な命令さえあるかもしれないので、擬似コードで:
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に設定」がチップのどこかにある「高」電圧に対応する単純なケースを想像できることです。 "ピン"。
Arduinoが良い例です。メモリビットを1に設定し、Arduinoが出力ピンを「高」に設定します。この電圧変化は、LEDを駆動することでデモされることがよくありますが、トランジスタの魔法により、他の回路やチップを自動的に起動、中断、または「起動」することができます。
より自然な16進表現(IP、マスク、MACアドレスでよく見られるFFなどの2桁の16進数)を想定し、Arduinoの「出力ピン5」をカウンターの「ビット位置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仕様では、恐ろしいほど詳細にレイアウトされています)が、それが要点です。
この後、人間の自明性は目標よりも副作用のようです。コンピューターの場合、MACの4つのコピーで十分ですが、そのカウンターはオーバーフローせず、もはや単純ではありません。したがって、目標はできるだけ多くのシリコン、ドライバー、およびBIOSデザイナーによって実装することである可能性が高いようです。16では、再設計や改造を行うことなく、「オーバーフロー」またはダイレクトシグナリングを選択できます。
悪魔の擁護者である人間の検出を演じるなら、同じ柔軟性を持つ次の数値である256はどうでしょうか?それは機能しません。データセグメントだけでは、イーサネットフレーム(当時)よりも大きいWOLパケットが生成されます。
私にとってこれは、WOLセグメントが取り得る唯一の値が16であることを意味します。
これは主に、マジックパケットのみが実際にコンピューターをウェイクアップすることを確認する方法だと思います。プロトコルヘッダー(IPアドレス、ポート番号など)を見ずにパケットがこのシーケンスでスキャンされるため、パケットは簡単に識別でき、誤検知の数がゼロに近い必要があります。ランダムネットワークプロトコルがコンピューターのMACアドレスの16倍を含むパケットを送信する確率はゼロに近いですが、繰り返しが1回だけの場合、誤検知の可能性ははるかに高くなります。
16にカウントするのは非常に簡単なロジックであるため、16。チップ上にすでにアドレス一致ロジックが存在するため、MACアドレスを繰り返します。AMDホワイトペーパー