मुझे आश्चर्य है कि localhost
आईपी एड्रेस बनाने के निर्णय का मूल क्या है 127.0.0.1
। का "अर्थ" क्या है 127
? का "अर्थ" क्या है 0.0.1
?
मुझे आश्चर्य है कि localhost
आईपी एड्रेस बनाने के निर्णय का मूल क्या है 127.0.0.1
। का "अर्थ" क्या है 127
? का "अर्थ" क्या है 0.0.1
?
जवाबों:
127 एक वर्ग ए नेटवर्क में एक सबनेट मास्क के साथ अंतिम नेटवर्क नंबर है 255.0.0.0
। 127.0.0.1
सबनेट में पहला असाइन करने योग्य पता है। 127.0.0.0
उपयोग नहीं किया जा सकता क्योंकि वह तार संख्या होगी। लेकिन मेजबान हिस्से के लिए किसी अन्य संख्या का उपयोग करना ठीक काम करना चाहिए और उपयोग करने के लिए वापस आना चाहिए 127.0.0.1
। 127.1.1.1
यदि आप चाहें, तो आप इसे पिंग करके स्वयं आज़मा सकते हैं। उन्होंने इसे लागू करने के लिए अंतिम नेटवर्क संख्या तक इंतजार क्यों किया? मुझे नहीं लगता कि यह प्रलेखित है।
सबसे पहले उल्लेख मैं 127 के असाइनमेंट के बारे में पा सकता हूं क्योंकि लूपबैक नवंबर 1986 है। आरएफसी 990 रेनॉल्ड्स और पोस्टेल द्वारा लिखित है:
पता शून्य का अर्थ "यह" है, जैसा कि "इस नेटवर्क" में है।
उदाहरण के लिए, पता 0.0.0.37 की व्याख्या इस नेटवर्क पर अर्थ 37 होस्ट के रूप में की जा सकती है।
...
क्लास ए नेटवर्क नंबर 127 को "लूपबैक" फ़ंक्शन सौंपा गया है, अर्थात, एक उच्च स्तर प्रोटोकॉल द्वारा भेजे गए डेटाग्राम को नेटवर्क 127 पते पर होस्ट के अंदर वापस लौटना चाहिए। नेटवर्क के लिए "भेजा" कोई भी 127 पता कहीं भी किसी भी नेटवर्क पर दिखाई नहीं देना चाहिए।
सितंबर 1981 तक आरएफसी 790 , 0 और 127 पहले से ही आरक्षित थे:
000.rr.rrr.rrr आरक्षित [JBP] ... 127.rr.rrr.rrr आरक्षित [JBP]
1981 तक 0 और 127 एकमात्र आरक्षित वर्ग A नेटवर्क थे। 0 का उपयोग विशिष्ट होस्ट की ओर इशारा करने के लिए किया गया था, ताकि लूपबैक के लिए 127 बचे।
मुझे पता है कि यह सवाल का जवाब नहीं देता है, लेकिन यह उतना ही पीछे है जितना मैं खोद सकता था। हो सकता है कि यह लूपबैक के लिए 1.0.0.0 चुनने के लिए अधिक समझदार हो, लेकिन यह बीबीएन पैकेट रेडियो नेटवर्क को पहले ही दे दिया गया था।
इंटरनेट के डिजाइनर वास्तव में जानते थे कि हार्डवेयर कैसे काम करता है, और उन्होंने निम्न स्तर के कार्यान्वयन को ध्यान में रखते हुए डिजाइन किया।
8 बिट असेंबली और मशीन लैंग्वेज प्रोग्रामिंग में मान 0, 127 और 255 विशेष हैं क्योंकि "ट्रिक्स" हैं जिनका उपयोग आप इन मूल्यों के लिए परीक्षण करने के लिए कर सकते हैं और छोटे निर्देशों का उपयोग करके विभिन्न कोड में शाखा कर सकते हैं जो अन्य पूर्णांकों की तुलना में तेजी से निष्पादित होते हैं। 127 सबसे अधिक हस्ताक्षरित 8 बिट पूर्णांक है, इसलिए इसे 1 से बढ़ाना एक हस्ताक्षरित अतिप्रवाह का कारण होगा। इसी तरह, 255 बढ़ने से अहस्ताक्षरित अतिप्रवाह होगा। मूल्य 0 को एक रजिस्टर में लोड करना आमतौर पर चिप पर एक शून्य ध्वज सेट करेगा। कल्पना कीजिए कि नेटवर्किंग प्रोग्राम इस तरह दिखता है pseudocode में:
if (value == 0) doLocal();
if (value == 127) doLoopback();
if (value == 255) doNetwork();
यद्यपि यह चिप पर निर्भर करता है, उन दिनों में अधिकांश चिप्स इन परीक्षणों को 2 शब्दों, 3 शब्दों और क्रमशः 3 शब्दों (कुल 8 शब्दों) के साथ सांकेतिक शब्दों में बदल सकते थे और आगे उन विशेष परीक्षणों में 1 घड़ी के प्रत्येक चक्र में निष्पादित होने की संभावना थी। किसी अन्य मूल्य का उपयोग करने के लिए संभवतः 4 शब्दों में से प्रत्येक (कुल 12 शब्दों) की आवश्यकता होगी, कोड आकार में 50% वृद्धि और निष्पादन समय में भी 50% वृद्धि की संभावना होगी।
यदि आप इस बारे में सोचते हैं कि स्थानीयहोस्ट या लूपबैक आईपी एड्रेस का क्या मतलब है, तो आप महसूस करते हैं कि आप कभी भी उस पते, या उस नेटवर्क को नहीं देखना चाहते हैं जो होस्ट के बाहर है। (एक होस्ट के अंदर, इसे देखने के लिए बहुत अंधेरा है। मार्क ट्वेन के लिए माफी।)
इसलिए, किसी को इस लोकलहोस्ट पते का प्रतिनिधित्व करने के लिए एक आईपी नेटवर्क चुनना था। मुझे याद नहीं है कि पहले किसने इसे चुना था, लेकिन यह IETF अनुरोध में टिप्पणी के लिए निर्दिष्ट है जो समय-समय पर "होस्ट आवश्यकताएँ" के रूप में जारी किया जाता है।
यह बहुत पहले किया गया था, उस समय एक पूरे वर्ग के पते को "बर्बाद" करने का विचार किसी के दिमाग में नहीं आया था।
लोकलहोस्ट की उपयोगिता यह है कि आप हार्ड-कोडेड आईपी पते का उपयोग करके खुद से बात कर सकते हैं। डोमेन नेम सिस्टम होने से बहुत पहले इसका इस्तेमाल किया गया था। आप वास्तव में किसी भी 127.xxx वैध पते का उपयोग कर सकते हैं, लेकिन कोई भी कभी भी नहीं करता है। आप एक वास्तविक नेटवर्क के रूप में चुपके और 127 का उपयोग नहीं कर सकते क्योंकि "राउटर आवश्यकताएँ" RFC उस नेटवर्क को कभी भी किसी इंटरनेट पर रूट करना बंद कर देती है।
सबसे पहले, पूरे 127.xxx रेंज आपके लोकलहोस्ट की ओर इशारा करती है।
बाइनरी में 127 "01111111" है। "11111111" = 255 और 0 आरक्षित हैं, इसलिए पसंद स्पष्ट है :)
क्योंकि जब वे मानक बनाए गए थे, तो कंप्यूटर धीमे थे और आमतौर पर 8 बिट रजिस्टरों तक सीमित थे। संख्याओं की संख्याओं की तुलना बहुत धीमी गति से की जा रही थी, जाहिर है अगर उन नंबरों को पीछे से लाना होता है तो वास्तव में धीमी मेमोरी। रजिस्टर, जो "बोर्ड पर सीपीयू" भंडारण बहुत तेज थे।
इसके अलावा उन पुराने कंप्यूटरों में "शून्य के बराबर", "शून्य से भिन्न", "नकारात्मक / सकारात्मक पूर्णांक" (जहां संकेत था ... का पता लगाने के लिए विशेष, तेज़ निर्देश थे ... अनुमान लगाएं कि, सबसे बाईं ओर, अब 127 के साथ एक कनेक्शन देखें , वह बाईं ओर के सभी बाइनरी "1" के साथ संख्या है।
इसलिए वे विशेष नंबर थे, क्योंकि वे अक्सर किए गए कार्यों पर बहुत सारे सीपीयू चक्रों को बचाने के लिए प्रोग्रामिंग चालबाजी की अनुमति देते थे।
आपको "IF CallerIP =" 0 "कभी नहीं दिखाई देगा, लेकिन" IF NotZero (CallerIP) "निर्देश।
आप प्राचीन असेंबली निर्देशों जैसे "BEQ, BNE" (6502 CPUs) को लंबे समय तक स्पष्टीकरण के लिए जा सकते हैं। इस पेज को भी देखें ।
अंततः:
0, 255 और 127 सभी को एक, सबसे तेज़, निर्देश के साथ जांचा जा सकता है। सी जैसी उच्च स्तरीय भाषाओं में भी "कमी" तुलनात्मक कार्य हैं जो कंपाइलर आंतरिक रूप से एक निर्देश में अनुकूलित कर सकते हैं।
70 और 80 प्रोग्रामर ने वास्तव में सुपर-दुर्लभ संसाधनों के साथ शानदार आर्किटेक्चर का उत्पादन किया, आईपी नंबरिंग जैसे मानकों के पीछे बहुत सारे विचार और प्रतिभा है।