Localhost IP 127.0.0.1 क्यों है?


85

मुझे आश्चर्य है कि localhostआईपी ​​एड्रेस बनाने के निर्णय का मूल क्या है 127.0.0.1। का "अर्थ" क्या है 127? का "अर्थ" क्या है 0.0.1?


2
मैं इस बारे में भी उत्सुक हूं। IPv6 लूपबैक 0: 0: 0: 0: 0: 0: 0: 1 है, जो मुझे समझ में आता है।
हाइपरस्लग

1
हां, IPv6 की लोकलहोस्ट बहुत सारे सवाल नहीं उठाती है :)
Roee Adler

21
मैंने अभी तक "0: 0: 0: 0: 0: 0: 0: 1" की तरह कोई जगह नहीं देखी है।
विलियम हिल्सम

9
@Wil इसे "# 1 जैसी कोई जगह नहीं है" के लिए संपीड़ित करें और आपको थोड़ा और व्यवसाय मिलेगा।
new123456

6
@WilliamHilsum ने इसका विस्तार करते हुए "0000: 0000: 0000: 0000: 0000: 0000: 0000: 0001" जैसी कोई जगह नहीं है और अधिक शुल्क लिया है।
निक टी

जवाबों:


87

127 एक वर्ग ए नेटवर्क में एक सबनेट मास्क के साथ अंतिम नेटवर्क नंबर है 255.0.0.0127.0.0.1सबनेट में पहला असाइन करने योग्य पता है। 127.0.0.0उपयोग नहीं किया जा सकता क्योंकि वह तार संख्या होगी। लेकिन मेजबान हिस्से के लिए किसी अन्य संख्या का उपयोग करना ठीक काम करना चाहिए और उपयोग करने के लिए वापस आना चाहिए 127.0.0.1127.1.1.1यदि आप चाहें, तो आप इसे पिंग करके स्वयं आज़मा सकते हैं। उन्होंने इसे लागू करने के लिए अंतिम नेटवर्क संख्या तक इंतजार क्यों किया? मुझे नहीं लगता कि यह प्रलेखित है।


14
एकमात्र कारण जो मैं उन्हें मनमाने ढंग से 127 चुनते हुए देखूंगा वह यह है कि यह याद रखने की एक आसान संख्या है (01111111), और शायद वे केवल और खुद के साथ संवाद करने में सक्षम होने के लिए 16 मिलियन मेजबान पतों की अनुमति दे रहे थे (जैसे कि कुछ प्रोग्राम और विंडोज घटक कैसे उपयोग करते हैं आजकल बंदरगाह)। RFC ने वास्तव में केवल यह उल्लेख किया है कि यह लूपबैक के लिए प्रयोग किया जाने वाला 127.0.0.1/32 का मानक अभ्यास है। यह काफी भयावह है क्योंकि वे बाकी ब्लॉक के लिए इरादा रखते थे जो इसे होस्ट से वापस लाते थे और कभी नेटवर्क को नहीं मारते थे, इसलिए मेरी उपरोक्त अटकलें हैं।
RoyalKnight

2
127.0.0.1 पर वापस आने वाले सभी ब्लॉक पतों को लागू करना निर्भर है और शायद सिर्फ लिनक्स स्टैक की ख़ासियत हो सकती है। सोलारिस को कम से कम एक इंटरफ़ेस की आवश्यकता होती है ताकि आपके पिंग टेस्ट के सफल होने के लिए उसे गंतव्य के पते के लिए बाध्य किया जा सके।
जॉलीग्रे

56

सबसे पहले उल्लेख मैं 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 चुनने के लिए अधिक समझदार हो, लेकिन यह बीबीएन पैकेट रेडियो नेटवर्क को पहले ही दे दिया गया था।


23

इंटरनेट के डिजाइनर वास्तव में जानते थे कि हार्डवेयर कैसे काम करता है, और उन्होंने निम्न स्तर के कार्यान्वयन को ध्यान में रखते हुए डिजाइन किया।

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% वृद्धि की संभावना होगी।


1
ध्यान दें कि मैंने "शब्दों" का उपयोग किया था क्योंकि पुरानी मशीनें वापस असामान्य शब्द आकार थीं, लेकिन वे अक्सर 8 बिट अंकगणित का उपयोग करते थे। 8088 के लिए, मैंने कहा होगा "बाइट्स।"
जोसेफ बुई

5

यदि आप इस बारे में सोचते हैं कि स्थानीयहोस्ट या लूपबैक आईपी एड्रेस का क्या मतलब है, तो आप महसूस करते हैं कि आप कभी भी उस पते, या उस नेटवर्क को नहीं देखना चाहते हैं जो होस्ट के बाहर है। (एक होस्ट के अंदर, इसे देखने के लिए बहुत अंधेरा है। मार्क ट्वेन के लिए माफी।)

इसलिए, किसी को इस लोकलहोस्ट पते का प्रतिनिधित्व करने के लिए एक आईपी नेटवर्क चुनना था। मुझे याद नहीं है कि पहले किसने इसे चुना था, लेकिन यह IETF अनुरोध में टिप्पणी के लिए निर्दिष्ट है जो समय-समय पर "होस्ट आवश्यकताएँ" के रूप में जारी किया जाता है।

यह बहुत पहले किया गया था, उस समय एक पूरे वर्ग के पते को "बर्बाद" करने का विचार किसी के दिमाग में नहीं आया था।

लोकलहोस्ट की उपयोगिता यह है कि आप हार्ड-कोडेड आईपी पते का उपयोग करके खुद से बात कर सकते हैं। डोमेन नेम सिस्टम होने से बहुत पहले इसका इस्तेमाल किया गया था। आप वास्तव में किसी भी 127.xxx वैध पते का उपयोग कर सकते हैं, लेकिन कोई भी कभी भी नहीं करता है। आप एक वास्तविक नेटवर्क के रूप में चुपके और 127 का उपयोग नहीं कर सकते क्योंकि "राउटर आवश्यकताएँ" RFC उस नेटवर्क को कभी भी किसी इंटरनेट पर रूट करना बंद कर देती है।


4

सबसे पहले, पूरे 127.xxx रेंज आपके लोकलहोस्ट की ओर इशारा करती है।
बाइनरी में 127 "01111111" है। "11111111" = 255 और 0 आरक्षित हैं, इसलिए पसंद स्पष्ट है :)


25
यह कैसे फिर से स्पष्ट है?
रूई एडलर ३०'०

मेरा मानना ​​है कि उन्होंने सिर्फ कुछ सरल चुना है। फिर से, सभी "1" आरक्षित है, इसलिए एक शून्य जोड़ा गया :)
kolypto

तो 10111111 क्यों नहीं? :) या 11011111 या 11101111 या 11110111 या 11111011 या 11111101 या कुछ और?
मुशायरे अंतरायन

1
नहीं। पुनः प्रयास करें।
अर्दी अराम

3

क्योंकि जब वे मानक बनाए गए थे, तो कंप्यूटर धीमे थे और आमतौर पर 8 बिट रजिस्टरों तक सीमित थे। संख्याओं की संख्याओं की तुलना बहुत धीमी गति से की जा रही थी, जाहिर है अगर उन नंबरों को पीछे से लाना होता है तो वास्तव में धीमी मेमोरी। रजिस्टर, जो "बोर्ड पर सीपीयू" भंडारण बहुत तेज थे।

इसके अलावा उन पुराने कंप्यूटरों में "शून्य के बराबर", "शून्य से भिन्न", "नकारात्मक / सकारात्मक पूर्णांक" (जहां संकेत था ... का पता लगाने के लिए विशेष, तेज़ निर्देश थे ... अनुमान लगाएं कि, सबसे बाईं ओर, अब 127 के साथ एक कनेक्शन देखें , वह बाईं ओर के सभी बाइनरी "1" के साथ संख्या है।

इसलिए वे विशेष नंबर थे, क्योंकि वे अक्सर किए गए कार्यों पर बहुत सारे सीपीयू चक्रों को बचाने के लिए प्रोग्रामिंग चालबाजी की अनुमति देते थे।

आपको "IF CallerIP =" 0 "कभी नहीं दिखाई देगा, लेकिन" IF NotZero (CallerIP) "निर्देश।

आप प्राचीन असेंबली निर्देशों जैसे "BEQ, BNE" (6502 CPUs) को लंबे समय तक स्पष्टीकरण के लिए जा सकते हैं। इस पेज को भी देखें

अंततः:

0, 255 और 127 सभी को एक, सबसे तेज़, निर्देश के साथ जांचा जा सकता है। सी जैसी उच्च स्तरीय भाषाओं में भी "कमी" तुलनात्मक कार्य हैं जो कंपाइलर आंतरिक रूप से एक निर्देश में अनुकूलित कर सकते हैं।

70 और 80 प्रोग्रामर ने वास्तव में सुपर-दुर्लभ संसाधनों के साथ शानदार आर्किटेक्चर का उत्पादन किया, आईपी नंबरिंग जैसे मानकों के पीछे बहुत सारे विचार और प्रतिभा है।


बहुत बढ़िया जवाब। यह वास्तव में सबसे स्पष्ट और सबसे समझदार व्याख्या है।
not2qubit

दरअसल, जब आईपी को डिज़ाइन किया गया था और इसके लिए कुछ शुरुआती आधार निर्धारित किए गए थे, तो 8 बिट्स के पूर्णांक गुणकों में डेटा के साथ काम नहीं किया गया था। उस समय के कई आर्किटेक्चर में 12 या 18 बिट के गुणकों में रजिस्टर और शब्द आकार थे, उदाहरण के लिए। यह एक कारण है कि उस समय अष्टक इतना लोकप्रिय क्यों था; 18 बिट्स को बिना किसी नुकसान और बेकार के 6 ऑक्टल अंकों के रूप में दर्शाया जा सकता है; 12 बिट्स 4 ऑक्टल अंक हैं। माइक्रो कंप्यूटर आमतौर पर 8-बिट मात्रा में काम करते थे, लेकिन यह केवल बहुत बाद में था कि माइक्रो कंप्यूटर नियमित रूप से (विशेष रूप से सीधे) इंटरनेट से जुड़े होने लगे।
सीवीएन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.