चूंकि ईथरनेट संचार के लिए मैक पतों का उपयोग करता है, क्या मैं एक इथरनेट नेटवर्क बना सकता हूँ जहाँ उपकरणों का आईपी पता नहीं होगा, सिर्फ मैक एड्रेस?
यदि आप स्क्रैच से अपने सभी सॉफ़्टवेयर लिख रहे थे, तो आप निश्चित रूप से ऐसा कर सकते थे। बस सॉफ्टवेयर ने मैक पते को कहीं भी स्वीकार कर लिया है कि उस कार्यक्रम के लिए सामान्य समकक्ष ने एक आईपी पता स्वीकार किया होगा। आईपी पते के बजाय कच्चे ईथरनेट पैकेट भेजने के लिए सभी सिस्टम कॉल का उपयोग करें और यह काम करेगा - लेकिन यह एक बड़ी परेशानी होगी।
आम तौर पर, आपके नेटवर्क पर मैक पते किसी भी पैटर्न का पालन नहीं करते हैं। वे निर्माता द्वारा हार्डवेयर में जलाए जाते हैं। वे लंबे और भारी हैं। मेरा अभी C8-60-00-CA-4B-9A है। मेरे बगल में कंप्यूटर 00-40-F4-48-1B-88 है।
मशीनों को आप एक दूसरे से बात करने में सक्षम होने के लिए, आप प्रत्येक मशीन को नेटवर्क पर अन्य सभी मशीनों के सभी मैक पते की हार्ड-कोडित सूची दे सकते हैं ताकि यह पता चल सके कि पैकेट कहां भेजना है। यह टाइपिंग में बहुत त्रुटि है, और कभी भी आपने अपने किसी भी नेटवर्किंग हार्डवेयर को बदल दिया है जिसे आपको नए मैक पतों को प्रतिबिंबित करने के लिए सभी सूचियों को बदलना होगा।
यह एक बहुत बड़ी परेशानी है, इसलिए संभवत: आप नेटवर्क पर मशीनों के लिए एक-दूसरे के साथ प्रसारण पैकेट का उपयोग करते हुए स्वचालित रूप से एक-दूसरे के मैक पते की खोज करेंगे। फिर आप उन्हें कुछ सार्थक पते के साथ खुद को पहचानने का एक तरीका देंगे ताकि आपको "टेलनेट C8-60-00-CA-4B-9A" जैसे कमांड टाइप करने पड़ें।
पता चलता है कि यह वही है जो आईपी करता है- यह हार्ड कोडित मैक पते के बजाय नेटवर्क पर मेजबानों को संबोधित करने के लिए सार्थक संख्याओं का उपयोग करने का एक तरीका है। आईपी के शीर्ष पर DNS में जोड़ें और आप "टेलनेट वेबसर्वर" जैसी कमांड टाइप कर सकते हैं।
संदेश भेजने के लिए ईथरनेट IP पते का उपयोग नहीं कर सकता है? मैं यह नहीं कह रहा हूं कि मुझे यह पूछना चाहिए कि क्या ऐसा करने के लिए चुना जा सकता है।
मैक पते सूचना के 6 बाइट्स हैं और आईपी पते केवल 4 बाइट्स हैं, इसलिए आप किसी भी तरह का 1 से 1 मैपिंग नहीं कर सकते हैं। आपको एक आईपी पते (जिस सॉफ्टवेयर द्वारा नेटवर्क पर किसी अन्य होस्ट के साथ संवाद करना चाहते हैं) से मैक एड्रेस (पैकेट में डालने के लिए) खोजने का कोई तरीका चाहिए।
ऐसा करने का एक (हार्ड कोर) तरीका नेटवर्क पर प्रत्येक मशीन में जाना होगा, और शीर्ष दो बाइट्स को शून्य (या कुछ अन्य निश्चित संख्या जो एक ही हो) बनाकर आईपी पते की तरह देखने के लिए अपना हार्डवेयर मैक पता बदलना होगा। नेटवर्क पर प्रत्येक मशीन के लिए) और नीचे के चार बाइट्स को "आईपी पते" पर सेट करें, जो आप चाहते हैं कि वे नेटवर्क पर हों। (अधिकांश नेटवर्क कार्ड आपको वेंडर को सौंपे गए मैक पते को संशोधित करने देंगे)
यह वास्तव में काम करने के लिए, अगले आपको अपने नेटवर्किंग स्टैक में कोड को हैक करना होगा ताकि वास्तव में इस प्रणाली का उपयोग किया जा सके। आप मूल रूप से एआरपी (आईपी पते को मैक पते में आईपी पते का अनुवाद करने के लिए उपयोग करता है) के साथ सब कुछ चीर देंगे। आप आईपी हेडर बनाने / पढ़ने वाले भागों को चीर देंगे। इसके बजाय, आप इसे बहुत ही सरल कोड से बदल देंगे, जिसे पता wxyz पर होस्ट करने के लिए भेजा जाने वाला एक IP पैकेट दिया गया है, एक ईथरनेट फ्रेम बनाएँ, जिसमें DEST पता 00-00-wxyz सेट है।
आपको एक पैकेट के रिसीवर को इंगित करने के लिए एक तरीका भी चाहिए जो कि प्रोटोकॉल (यूडीपी, टीसीपी) के लिए है। आप शायद किसी मौजूदा फ़ील्ड को ओवरराइड करके ईथरनेट हेडर में कहीं चिपका सकते हैं। शायद स्रोत पते के शीर्ष दो बाइट्स में से एक का उपयोग करें? यह गंतव्य मशीनों को प्राप्त करने की क्षमता को प्रभावित नहीं करेगा, लेकिन कुछ स्विच को गड़बड़ कर सकता है। आप ईथरनेट फ़्रेम के आरंभ या अंत में प्रोटोकॉल भी जोड़ सकते हैं और पेलोड का आकार एक-एक करके बढ़ा सकते हैं - लेकिन यह एक आईपी हेडर की तरह महकने लगता है।
तो यह सब काम आपको क्या खरीदेगा?
पहले यह आपको प्रत्येक आउटगोइंग पैकेट पर ARP तालिका में लुकअप के ओवरहेड को बचाएगा। यह शायद केवल माइक्रोसेकंड के आदेश पर है।
आप IP हेडर चेकसमों की गणना करने और उन्हें रखने के लिए आवश्यक मेमोरी के कार्य को सहेजते हैं। यह शायद आधुनिक हार्डवेयर पर महत्वपूर्ण नहीं है।
आप नेटवर्क पर हर पैकेट में 16 बाइट्स बचाते हैं क्योंकि कोई आईपी हेडर नहीं होगा। यह आवेदन के आधार पर जोड़ सकता है।
सबसे बड़ा लाभ यह होगा कि आपको कोई ARP अनुरोध नहीं करना पड़ेगा। एक नए होस्ट को एक मानक आईपी पैकेट भेजना एआरपी एक्सचेंज को ट्रिगर करता है जो मिलीसेकंड ले सकता है और अप्रत्याशित है। यह कुछ अनुप्रयोगों के लिए एक बहुत बड़ा लाभ हो सकता है जो विलंबता और घबराहट के प्रति बहुत संवेदनशील हैं।
कुछ बहुत ही विशिष्ट अनुप्रयोगों के लिए यह वास्तव में करने के लिए समझ में आता है। मैंने एक बार एक रीयल-टाइम सिस्टम पर काम किया था, जिसने एकमात्र इंटर होस्ट संचार के लिए केवल यूडीपी पैकेट का उपयोग किया था, केवल इस कारण से कि यह उन एआरपी दृश्यों को किक करने से बचता है और अप्रत्याशित रूप से देरी और घबराहट को जोड़ता है। मैंने एक बार एक संसाधन-सीमित एम्बेडेड सिस्टम पर भी काम किया था, जो सीधे आईपी पैकेट्स के अंदर यूडीपी पेलोड भेजकर काम करता था (कोई आईपी हेडर) नहीं क्योंकि इसने सभी एआरपी और नेटमास्क और अतिरिक्त चेकसम सामान को लागू करने के लिए आवश्यक सभी जटिलता और मेमोरी को बचाया।