वेक-ऑन-लैन पैकेट में लक्ष्य मैक पते के 16 दोहराव क्यों होते हैं?


16

से Wireshark वेबपेज :

टारगेट मैक ब्लॉक में टारगेट के IEEE पते के 16 डुप्लीकेशंस होते हैं, जिनमें कोई ब्रेक या रुकावट नहीं होती है।

क्या 16 दोहराव का कोई विशेष कारण है?

जवाबों:


29

मेरी राय में, मान बिल्कुल 16 होना चाहिए।

मैजिक पैकेट टेक्नोलॉजी ( श्वेतपत्र , प्रकाशन # 20213) एएमडी और हेवलेट पैकर्ड के बीच 1995 में विकसित किया गया था। पेज 1:

"चूंकि एक ईथरनेट नियंत्रक में पहले से अंतर्निहित पता मिलान सर्किटरी है ..." वे इसे पुन: उपयोग करने का प्रस्ताव देते हैं, एक काउंटर जोड़ते हुए "IEEE पते के 16 दोहराव को गिनने के लिए"।

उनका कारण है कि वास्तविक कार्यान्वयन को व्यापक रूप से खुला छोड़ते हुए, WOL को जोड़ने के लिए तुच्छ होना चाहिए। यह ऐतिहासिक रूप से मनमाना प्रतीत नहीं होता ("ओह, 16 बहुत लंबे समय तक दिखता है"), क्योंकि:

  1. जो आपके पास है / जो आप जानते हैं, उस पर निर्माण करें। उदाहरण के लिए, मान लें कि हम 2 की शक्तियों को पसंद करते हैं और इसलिए हेक्स अंक। आसानी से, एक हेक्स अंक (4 बिट्स) 0-15 से सकारात्मक मान रखता है। यदि हम एक पहले से ही "अधिकतम" मूल्य (जैसे 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.
    
  2. चिप संकेत लाइनों। "सर्किटरी" के लिए एएमडी का संदर्भ गहन अंत की ओर जाता है, इसलिए आपको वास्तव में जानने की आवश्यकता है कि हम एक साधारण मामले की कल्पना कर सकते हैं जहां "बिट सेट 1" कहीं चिप में "उच्च" वोल्टेज से मेल खाती है, जो एक दृश्य में दिखाई देती है "पिन"।

Arduinos एक अच्छा उदाहरण हैं: 1 के लिए एक मेमोरी बिट सेट करें, और 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 कल्पना इसे विस्तार से बताती है), लेकिन यही है।

इसके बाद, लक्ष्य की तुलना में मानवीय स्पष्टता अधिक साइड इफेक्ट लगती है। कंप्यूटर के लिए, आपके मैक की 4 प्रतियाँ पर्याप्त होनी चाहिए, लेकिन अब वह काउंटर अतिप्रवाह नहीं होगा और यह अब आसान नहीं है। इसलिए यह अधिक संभावना है कि लक्ष्य को संभव के रूप में कई सिलिकॉन, ड्राइवर, और BIOS डिजाइनरों द्वारा कार्यान्वित किया जाना था, और 16 सभी को "ओवरफ्लो" और प्रत्यक्ष सिग्नलिंग के बीच एक विकल्प देता है, बिना फिर से आर्किटेक्चरिंग और रिटूलिंग के।

मानव की पहचान के लिए शैतान के वकील की भूमिका निभाते हुए, उसी लचीलेपन के साथ अगले उच्च संख्या के बारे में क्या: 256? यह काम नहीं करता है: डेटा खंड अकेले एक WOL पैकेट का उत्पादन करता है जो ईथरनेट फ्रेम ( उस समय ) से बड़ा होता है।

तो मेरे लिए इसका मतलब है कि 16 एकमात्र मूल्य है जो WOL खंड हो सकता है।


1
यदि आपको पता नहीं दिखता है, तो क्या काउंटर को रीसेट करने के लिए आपके पास अपने छद्मकोड में एक पंक्ति नहीं होनी चाहिए? अन्यथा पर्याप्त समय और शोर के साथ, आप हमेशा अंत में जागेंगे।
ल्यूक

@ ल्यूक हाँ। मैंने मूल रूप से इसे समायोजित किया, लेकिन सरलीकरण के दौरान इसे मुख्य धागे की खातिर हटा दिया। मैंने अभी पुनर्विचार किया है (बहुत विलंबित प्रतिक्रिया के लिए क्षमा याचना) और ठीक कर सकता है, लेकिन मुझे आपके लिए नेटवर्क में उपयोगी होने पर संपादन स्वीकृत करने में कोई आपत्ति नहीं है।
.bρǝɲǝɲ

19

हाँ। यह सरल है और मौका है कि कोई इस डेटा को गलती से भेजता है प्रभावी रूप से शून्य है।

आप सरल चाहते हैं क्योंकि एनआईसी में एक बहुत कम संचालित माइक्रोकंट्रोलर को स्थायी रूप से कच्चे ईथरनेट नेटवर्क ट्रैफ़िक को देखने में सक्षम होना पड़ता है और यदि यह इस पैटर्न को देखता है तो आप कार्य कर सकते हैं और आप सिस्टम को गलती से चालू नहीं करना चाहते हैं क्योंकि यादृच्छिक नेटवर्क की एक धारा डेटा सिस्टम चालू करने का कमांड है।


9

मुझे लगता है कि यह मुख्य रूप से यह सुनिश्चित करने का एक तरीका है कि केवल एक जादू पैकेट वास्तव में कंप्यूटर को जगाएगा। जैसा कि किसी भी प्रोटोकॉल हेडर (जैसे, आईपी पते, पोर्ट नंबर) को देखे बिना पैकेटों को इस क्रम के लिए स्कैन किया जाता है, पैकेट को आसानी से पहचानने की आवश्यकता होती है और शून्य के करीब झूठी सकारात्मक की संख्या। एक यादृच्छिक नेटवर्क प्रोटोकॉल एक कंप्यूटर के मैक पते से 16 गुना अधिक पैकेट भेजने की संभावना शून्य के करीब है, लेकिन एक ही पुनरावृत्ति होने पर झूठी सकारात्मक की संभावना बहुत अधिक है।


1
केवल एक पुनरावृत्ति के साथ, एक झूठी सकारात्मक की संभावना 1 होगी, क्योंकि मैक पते हर समय हर पैकेट के साथ तार पर भेजे जाते हैं।
स्वेन

@SvW वास्तव में, लेकिन इस मामले में वे आवश्यक रूप से छह एफएफ बाइट्स द्वारा उपसर्ग नहीं करते हैं - हालांकि मैंने इस बिंदु का उल्लेख नहीं किया है।
अले

5

16 क्योंकि यह 16 तक गिनती करने के लिए मृत तर्क है। मैक पते को दोहरा रहा है क्योंकि चिप पर पहले से ही पता मिलान तर्क है। एएमडी श्वेत पत्र

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.