मैक पते अद्वितीय नहीं हैं
वहाँ हो सकता है, और एमएसीएस के साथ डुप्लिकेट होंगे। इसके कई कारण हैं, एक यह कि उन्हें (विश्व स्तर पर) अद्वितीय होने की आवश्यकता नहीं है ।
मैक स्थानीय नेटवर्क पर अद्वितीय होना चाहिए, इसलिए एआरपी / एनडीपी अपना काम कर सकता है, और स्विच जानता है कि आने वाले डेट्रोग्राम को कहां भेजना है। आमतौर पर (जरूरी नहीं) कि पूर्व शर्त पूरी हो और चीजें ठीक काम करती हैं, सिर्फ इसलिए कि एक ही लैन पर दो समान मैक होने की संभावना, भले ही वे अद्वितीय न हों, काफी कम है।
एक और कारण यह है कि वहाँ केवल पते से अधिक उपकरणों मौजूद हैं। जबकि 48 बिट पते ऐसे लगते हैं जैसे दिनों के अंत तक हर किसी के लिए पर्याप्त पते हैं, ऐसी बात नहीं है।
पता स्थान दो 24-बिट हिस्सों में विभाजित है (यह थोड़ा अधिक जटिल है, लेकिन आइए क्षुद्र विवरणों को अनदेखा करें)। एक आधा OUI है जिसे आप IEEE में पंजीकृत कर सकते हैं और अपनी कंपनी को लगभग 2000 डॉलर में असाइन कर सकते हैं। शेष 24 बिट्स, आप जो चाहें करते हैं। बेशक आप कई OUI रजिस्टर कर सकते हैं, जो कि बड़े खिलाड़ी करते हैं।
उदाहरण के तौर पर इंटेल को लें। उन्होंने कुल 7 OUI पंजीकृत किए हैं, जिससे उन्हें कुल 116 मिलियन पते मिले हैं।
मेरे कंप्यूटर का मेनबोर्ड (जो एक X99 चिपसेट का उपयोग करता है) और साथ ही मेरे लैपटॉप के मेनबोर्ड के साथ-साथ प्रत्येक x86 आधारित कंप्यूटर का मेनबोर्ड जो कि पिछले 10-15 वर्षों के दौरान मेरे पास था, में चिपसेट के हिस्से के रूप में एक इंटेल नेटवर्क कार्ड था। निश्चित रूप से दुनिया में 116 मिलियन से अधिक इंटेल-आधारित कंप्यूटर हैं। इस प्रकार, उनके मैक संभवतः अद्वितीय नहीं हो सकते हैं (विश्व स्तर पर अद्वितीय के अर्थ में)।
इसके अलावा, मामलों की रिपोर्ट उह ... सस्ती ... निर्माताओं ने किसी और के ओयूआई से पते "चोरी" करके की है। दूसरे शब्दों में, उन्होंने बस कुछ यादृच्छिक पते का उपयोग किया। मैंने ऐसे निर्माताओं के बारे में सुना है जो केवल एक पूर्ण उत्पाद श्रेणी के लिए एक ही पते का उपयोग करते हैं। न तो वह वास्तव में अनुरूप है या बहुत मायने रखता है, लेकिन आप इसके बारे में क्या कर सकते हैं। ये नेटवर्क कार्ड मौजूद हैं। दोबारा: संभावना यह है कि यह एक व्यावहारिक समस्या बन जाती है फिर भी अगर पते का उपयोग उन उद्देश्यों के लिए किया जाता है, तो आपको उनमें से दो को एक ही लैन पर नोटिस करने की आवश्यकता होती है।
अब, अपनी समस्या के बारे में क्या करें?
समाधान शायद आपके विचार से सरल है। आपके IoT उपकरणों को संभवतः समय की कुछ धारणाओं की आवश्यकता होगी, आमतौर पर समय स्वचालित रूप से NTP के माध्यम से प्राप्त होता है। NTP की विशिष्ट परिशुद्धता माइक्रोसेकंड रेंज में है (हाँ, यह सूक्ष्म है, मिली नहीं)। मैं सिर्फ ntpq -c rl
यकीन करने के लिए दौड़ा और 2 -20 बताया गया ।
आपके दो उपकरणों के पहली बार एक ही माइक्रोसेकंड पर सटीक रूप से चालू होने की संभावना बहुत कम है। यह आम तौर पर संभव है (विशेषकर यदि आप उनमें से बहुत कम समय में लाखों बेचते हैं, तो आपकी सफलता पर बधाई!), निश्चित रूप से। लेकिन यह बहुत संभावना नहीं है - व्यवहार में ऐसा नहीं होगा। इस प्रकार, स्थायी स्टोर पर पहले बूटिंग के बाद का समय बचाएं।
आपके IoT डिवाइस का बूट समय हर डिवाइस पर समान होगा। सिवाय इसके कि बिल्कुल भी सच नहीं है ।
एक उच्च रिज़ॉल्यूशन टाइमर को देखते हुए, बूट समय औसत रूप से एक ही डिवाइस पर, हर बार अलग होता है। यह शायद केवल कुछ घड़ी अलग-अलग है (या कुछ सौ हजार, यदि आप सीपीयू के टाइम स्टैम्प काउंटर की तरह कुछ पढ़ते हैं), तो बिल्कुल अनोखा नहीं, लेकिन यह निश्चित रूप से कुछ एन्ट्रापी जोड़ता है।
इसी तरह, connect
पहली बार जब आप अपनी एपीआई साइट तक पहुँचते हैं, तो आपको थोड़ा समय लगेगा, लेकिन औसतन, हर बार अलग। इसी तरह, getaddrinfo
पहली बार अपने वेब एपीआई के होस्टनाम को देखते समय हर डिवाइस के लिए थोड़ा अलग, औसत दर्जे का समय लगेगा।
एन्ट्रापी के उन तीन या चार स्रोतों को समाहित करें (मैक एड्रेस, पहले पावर-ऑन का समय, पहली बार बूट करने का समय, समय कनेक्ट करें) और उसी से एक हैश की गणना करें। MD5 उस उद्देश्य के लिए ठीक काम करेगा। वहाँ, आप अद्वितीय हैं।
हालांकि यह वास्तव में विशिष्टता की गारंटी नहीं देता है, लेकिन यह "बहुत ज्यादा" इसकी गारंटी देता है, विफलता के एक नेगलेबल मौका के साथ। आपके पास समान एमएसीएस वाले दो उपकरण होंगे जो पहली बार एक ही माइक्रोसेकंड पर चालू होते हैं, और एक ही समय को बूट करने के लिए, और आपकी साइट से कनेक्ट करने के लिए सही समय लगता है। यह होने वाला नहीं है। यदि ऐसा होता है, तो आपको तुरंत लॉटरी खेलना शुरू करना चाहिए क्योंकि सभी दिखावे के लिए, आपको जीतने की गारंटी है।
यदि, हालांकि, "नहीं होगा" गारंटी के रूप में पर्याप्त नहीं है, तो बस प्रत्येक डिवाइस को क्रमिक रूप से बढ़ती संख्या (सर्वर पर उत्पन्न) पास करें जब वे पहली बार आपके वेब एपीआई का उपयोग करते हैं। डिवाइस को उस नंबर को स्टोर करने दें, किया।