ที่อยู่ MAC นั้นไม่ซ้ำกัน
สามารถมีและจะซ้ำกับ MACs มีสาเหตุหลายประการที่เป็นหนึ่งที่พวกเขาไม่จำเป็นต้องไม่ซ้ำกัน (ทั่วโลก)
MAC จะต้องไม่ซ้ำกันในเครือข่ายท้องถิ่นดังนั้น ARP / NDP สามารถทำงานได้และสวิตช์รู้ตำแหน่งที่จะส่งดาตาแกรมเข้ามา โดยปกติ (ไม่จำเป็น) ว่าเงื่อนไขเป็นจริงและสิ่งต่าง ๆ ใช้งานได้ดีเพียงเพราะความเป็นไปได้ที่จะมี MAC ที่เหมือนกันสองเครื่องใน LAN เดียวกันแม้ว่าพวกเขาจะไม่ได้เป็นเอกลักษณ์ก็ยังค่อนข้างต่ำ
อีกเหตุผลหนึ่งคือมีอุปกรณ์อยู่มากกว่าแค่ที่อยู่ ในขณะที่ที่อยู่ 48 บิตดูเหมือนว่ามีที่อยู่เพียงพอสำหรับทุกคนจนถึงสิ้นวัน แต่นั่นไม่ใช่กรณี
พื้นที่ที่อยู่แบ่งออกเป็นสองส่วน 24 บิต (ซับซ้อนกว่าเล็กน้อย แต่ให้เพิกเฉยต่อรายละเอียดเล็กน้อย) ครึ่งหนึ่งคือ OUI ที่คุณสามารถลงทะเบียนกับ IEEE และมอบหมายให้ บริษัท ของคุณประมาณ 2,000 ดอลลาร์ ส่วนที่เหลืออีก 24 บิตคุณทำสิ่งที่คุณต้องการ แน่นอนคุณสามารถลงทะเบียน OUI หลายตัวซึ่งเป็นสิ่งที่ผู้เล่นรายใหญ่ทำ
ยกตัวอย่างของ Intel พวกเขาลงทะเบียนรวมทั้งสิ้น 7 OUI ทำให้มีที่อยู่ทั้งหมด 116 ล้านที่อยู่
เมนบอร์ดของคอมพิวเตอร์ของฉัน (ซึ่งใช้ชิปเซ็ต X99) เช่นเดียวกับเมนบอร์ดของแล็ปท็อปและเมนบอร์ดของคอมพิวเตอร์ทุกเครื่องที่ใช้ x86 ที่ฉันเป็นเจ้าของในช่วง 10-15 ปีที่ผ่านมามีการ์ดเครือข่าย Intel เป็นส่วนหนึ่งของชิปเซ็ต แน่นอนว่ามีคอมพิวเตอร์มากกว่า Intel มากกว่า 116 ล้านเครื่องในโลก ดังนั้น MACs ของพวกเขาอาจจะไม่ซ้ำกัน (ในแง่ของความเป็นเอกลักษณ์ระดับโลก)
นอกจากนี้ยังมีการรายงานรายกรณีของเอ่อ ... ราคาถูกกว่า ... ผู้ผลิตเพียงแค่ "ขโมย" ที่อยู่จาก OUI ของผู้อื่น กล่าวอีกนัยหนึ่งพวกเขาใช้ที่อยู่แบบสุ่ม ฉันเคยได้ยินของผู้ผลิตที่ใช้ที่อยู่เดียวกันสำหรับผลิตภัณฑ์ที่ครบถ้วนเช่นกัน ไม่ว่าจะสอดคล้องหรือทำให้รู้สึกมาก แต่คุณสามารถทำอะไรกับมัน การ์ดเครือข่ายเหล่านี้มีอยู่ อีกครั้ง: โอกาสที่จะกลายเป็นปัญหาในทางปฏิบัติยังคงต่ำมากหากมีการใช้ที่อยู่กับสิ่งที่พวกเขาตั้งใจคุณจะต้องมีที่อยู่สองแห่งใน LAN เดียวกันเพื่อแจ้งให้ทราบล่วงหน้า
ทีนี้จะทำอย่างไรกับปัญหาของคุณ?
วิธีแก้ปัญหาอาจง่ายกว่าที่คุณคิด อุปกรณ์ IoT ของคุณส่วนใหญ่อาจต้องใช้เวลาบ้างโดยปกติเวลาจะได้รับโดยอัตโนมัติผ่าน NTP ความแม่นยำโดยทั่วไปของ NTP อยู่ในช่วงไมโครวินาที (ใช่นั่นคือขนาดเล็กไม่ใช่หนึ่งในพัน) ฉันวิ่งntpq -c rl
เพื่อให้แน่ใจและได้บอก 2 -20
โอกาสในการเปิดใช้งานอุปกรณ์สองเครื่องของคุณเป็นครั้งแรกที่ไมโครวินาทีเดียวกันนั้นมีความแม่นยำต่ำมาก โดยทั่วไปจะเป็นไปได้ที่จะเกิดขึ้น (โดยเฉพาะถ้าคุณขายหลายล้านรายการในเวลาอันสั้นขอแสดงความยินดีกับความสำเร็จของคุณ!) แต่มันไม่น่าเป็นไปได้ - ในทางปฏิบัติมันจะไม่เกิดขึ้น ดังนั้นประหยัดเวลาหลังจากการบูทครั้งแรกที่ร้านค้าถาวร
เวลาบูตของอุปกรณ์ IoT ของคุณจะเท่ากันทุกอุปกรณ์ ยกเว้นว่าไม่เป็นความจริงเลย
ด้วยตัวจับเวลาความละเอียดสูงเวลาการบู๊ตจะแตกต่างกันอย่างมากแม้ในอุปกรณ์เดียวกันทุกครั้ง มันอาจจะเป็นเพียงนาฬิกาไม่กี่เห็บที่แตกต่างกัน (หรือไม่กี่แสนถ้าคุณอ่านบางสิ่งบางอย่างเช่นการนับเวลาของ CPU) ดังนั้นจึงไม่ซ้ำกันมาก แต่มันเพิ่มเอนโทรปีบางอย่าง
ในทำนองเดียวกันเวลาที่ใช้connect
ในการส่งคืนในครั้งแรกที่คุณเข้าถึงไซต์ API จะมีความแตกต่างกันเล็กน้อย แต่สามารถวัดได้ทุกครั้ง ในทำนองเดียวกันgetaddrinfo
จะใช้เวลาต่างกันเล็กน้อยซึ่งสามารถวัดได้สำหรับทุกอุปกรณ์เมื่อค้นหาชื่อโฮสต์ของเว็บ API เป็นครั้งแรก
เชื่อมเอนโทรปีที่สามหรือสี่เหล่านี้ (ที่อยู่ MAC, เวลาเปิดเครื่องครั้งแรก, เวลาที่จะบู๊ตเป็นครั้งแรก, เชื่อมต่อครั้ง) และคำนวณแฮชจากนั้น MD5 จะทำได้ดีสำหรับวัตถุประสงค์นั้น ที่นั่นคุณมีเอกลักษณ์
ในขณะที่ไม่ได้รับประกันความเป็นเอกลักษณ์อย่างแท้จริงแต่ "ค่อนข้างมาก" รับประกันด้วยโอกาสที่จะล้มเหลว คุณจะต้องมีอุปกรณ์สองเครื่องที่มี MAC ที่เหมือนกันซึ่งเปิดใช้งานเป็นครั้งแรกในไมโครวินาทีเดียวกันและใช้เวลาเดียวกันในการบูตและเชื่อมต่อกับเว็บไซต์ของคุณ นั่นจะไม่เกิดขึ้น หากเกิดขึ้นคุณควรเริ่มเล่นลอตเตอรีทันทีเนื่องจากสิ่งที่ปรากฏทั้งหมดคุณรับประกันได้ว่าจะชนะ
อย่างไรก็ตามหาก "จะไม่เกิดขึ้น" ไม่ดีพอที่จะรับประกันได้เพียงแค่ส่งหมายเลขที่เพิ่มขึ้นตามลำดับ (สร้างขึ้นบนเซิร์ฟเวอร์) ในแต่ละครั้งที่พวกเขาเข้าถึงเว็บ API ของคุณ ให้อุปกรณ์จัดเก็บหมายเลขนั้นเสร็จสิ้น