ทำไมแพ็คเก็ต Wake-On-LAN จึงมีที่อยู่ MAC เป้าหมาย 16 รายการซ้ำกัน


16

จากหน้าเว็บ Wireshark :

บล็อก MAC เป้าหมายประกอบด้วยการซ้ำซ้อนของที่อยู่ IEEE ของเป้าหมาย 16 รายการโดยไม่มีการหยุดพักหรือการหยุดชะงัก

มีเหตุผลเฉพาะสำหรับการทำซ้ำ 16 ครั้งหรือไม่

คำตอบ:


29

ในความคิดของฉันค่าจะต้องเท่ากับ 16

Magic Packet Technology ( whitepaper , สิ่งพิมพ์ # 20213) ได้รับการพัฒนาระหว่าง AMD และ Hewlett Packard ประมาณปี 1995 จากหน้า 2:

"เนื่องจากคอนโทรลเลอร์อีเธอร์เน็ตมีวงจรจับคู่ที่อยู่ในตัวอยู่แล้ว ... " พวกเขาเสนอให้นำมันกลับมาใช้ใหม่โดยเพิ่มตัวนับ "เพื่อนับซ้ำของที่อยู่ IEEE 16 ซ้ำ"

พวกเขาให้เหตุผลว่าควรจะเพิ่มเล็กน้อย WOL ในขณะที่เปิดกว้างการใช้งานจริง สิ่งนี้ดูเหมือนจะไม่เป็นไปตามอำเภอใจในอดีต ("โอ้อายุ 16 ปีดูนานพอ") เนื่องจาก:

  1. สร้างสิ่งที่คุณมี / สิ่งที่คุณรู้ ตัวอย่างเช่นสมมติว่าเราชอบพลังของ 2 และดังนั้นเลขฐานสิบหก สะดวกสบาย, เลขฐานสิบหก (4 บิต) เก็บค่าบวกจาก 0-15 หน่วยประมวลผลของเราตรวจสอบคณิตศาสตร์ทั้งหมดและตั้งค่า "สถานะ" ล้นหากเราพยายามเพิ่ม 1 ลงในค่า "สูงสุด" (เช่น 15) เพราะมันเป็นเรื่องธรรมดาเราอาจมีคำสั่งพิเศษสำหรับเงื่อนไขล้นดังนั้นใน pseudocode:

    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.
    
  2. สายสัญญาณชิป การอ้างถึง "วงจรไฟฟ้า" ของ AMD นั้นนำไปสู่ส่วนลึกดังนั้นสิ่งที่คุณต้องรู้คือเราสามารถจินตนาการกรณีง่าย ๆ ที่ "บิตตั้งค่าเป็น 1" สอดคล้องกับแรงดันไฟฟ้า "สูง" ที่ใดที่หนึ่งในชิป "เข็ม"

Arduinos เป็นตัวอย่างที่ดี: ตั้งค่าบิตหน่วยความจำเป็น 1 และ Arduino ตั้งค่าเอาต์พุตขา "สูง" การเปลี่ยนแปลงแรงดันไฟฟ้านี้มักจะมีการสาธิตโดยการขับ LED แต่ด้วยความมหัศจรรย์ของทรานซิสเตอร์มันสามารถเปิดใช้งานการขัดจังหวะหรือ "ปลุก" วงจรหรือชิปอื่น ๆ โดยอัตโนมัติ

สมมติว่าเป็นเลขฐานสิบหกที่เป็นธรรมชาติมากขึ้น (เลขฐานสิบหกสองหลักเช่น 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 วางไว้ในรายละเอียดที่น่ากลัว) แต่นั่นเป็นส่วนสำคัญ

หลังจากนี้ความชัดเจนของมนุษย์ดูเหมือนจะมีผลข้างเคียงมากกว่าเป้าหมาย สำหรับคอมพิวเตอร์ MAC 4 เครื่องของคุณน่าจะพอเพียง แต่ตอนนี้ตัวนับนั้นจะไม่ล้นและก็ไม่ง่ายอีกต่อไป ดังนั้นจึงมีความเป็นไปได้มากกว่าที่เป้าหมายจะนำมันไปใช้โดยนักออกแบบซิลิกอนไดร์เวอร์และไบออสมากที่สุดเท่าที่จะเป็นไปได้และ 16 ให้ทุกคนเลือกระหว่าง "ล้น" และการส่งสัญญาณโดยตรงโดยไม่ต้องปรับโครงสร้างใหม่

การเล่นการสนับสนุนของปีศาจเพื่อการตรวจจับของมนุษย์จำนวนที่สูงกว่าถัดไปที่มีความยืดหยุ่นเท่ากัน: 256? ไม่ได้ผล: ส่วนข้อมูลเพียงอย่างเดียวสร้างแพ็คเก็ต WOL ที่ใหญ่กว่าเฟรม Ethernet ( ในเวลานั้น )

สำหรับฉันนี่หมายความว่า 16 เป็นค่าเดียวที่เซ็กเมนต์ WOL สามารถเป็นได้


1
คุณไม่ควรมีบรรทัดใน pseudocode เพื่อรีเซ็ตตัวนับหากคุณไม่เห็นที่อยู่ ไม่เช่นนั้นจะมีเวลาและเสียงรบกวนเพียงพอคุณจะตื่นขึ้นมาในที่สุด
ลุค

@ ลุคใช่ ฉันอาศัยอยู่ที่เดิม แต่ในระหว่างการทำให้เข้าใจง่ายลบออกเพื่อประโยชน์ของหัวข้อหลัก ฉันเพิ่งกลับมา (ขอโทษสำหรับการตอบกลับที่ล่าช้ามาก) และสามารถแก้ไขได้ แต่ฉันไม่รังเกียจที่จะอนุมัติการแก้ไขหากมีประโยชน์ในเครือข่ายสำหรับคุณ
ρɯͽbρɯͽ

19

ใช่. มันง่ายและโอกาสที่มีคนส่งข้อมูลนี้โดยไม่ได้ตั้งใจมีค่าเป็นศูนย์

คุณต้องการง่าย ๆ เพราะไมโครคอนโทรลเลอร์ที่ใช้พลังงานต่ำมากใน NIC จะต้องสามารถรับชมเครือข่ายอีเธอร์เน็ตดิบอย่างถาวรและทำถ้าเห็นรูปแบบนี้และคุณไม่ต้องการเปิดระบบโดยบังเอิญเพราะกระแสของเครือข่ายแบบสุ่ม data คือคำสั่งให้เปิดระบบ


9

ฉันคิดว่าส่วนใหญ่เป็นวิธีการตรวจสอบให้แน่ใจว่ามีเพียงแพ็คเก็ตเวทย์มนตร์เท่านั้นที่จะปลุกคอมพิวเตอร์ เมื่อแพ็กเก็ตถูกสแกนสำหรับลำดับนี้โดยไม่ต้องดูส่วนหัวของโปรโตคอลใด ๆ (เช่นที่อยู่ IP หมายเลขพอร์ต) แพ็กเก็ตจะต้องสามารถระบุตัวตนได้ง่ายและจำนวนของผลบวกปลอมใกล้กับศูนย์ ความน่าจะเป็นที่โปรโตคอลเครือข่ายแบบสุ่มกำลังส่งแพ็กเก็ตที่มี 16 เท่าที่อยู่ MAC ของคอมพิวเตอร์อยู่ใกล้กับศูนย์ แต่โอกาสของการบวกที่ผิดพลาดจะสูงกว่ามากหากมีการทำซ้ำเพียงครั้งเดียว


1
ด้วยการทำซ้ำเพียงครั้งเดียวความน่าจะเป็นของการบวกผิดจะเป็น 1 เนื่องจากที่อยู่ MAC จะถูกส่งข้ามสายตลอดเวลาพร้อมกับทุกแพ็กเก็ต
สเวน

@SvW แน่นอน แต่ในกรณีนี้พวกเขาไม่จำเป็นต้องนำหน้าด้วยไบต์ FF หกตัว - แม้ว่าฉันไม่ได้พูดถึงจุดนี้
Ale

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.