0.0.0.0, 127.0.0.1 और स्थानीयहोस्ट के बीच क्या अंतर है?


271

मैं उपयोग कर रहा हूं Jekyllऔर Vagrantअपने मैक पर। मैंने पाया कि इसके बजाय Jekyll serverबांध देंगे । डिफ़ॉल्ट रूप से इस पते पर भी बाँध जाएगा। मैं अभी भी इसके माध्यम से यात्रा कर सकता हूं । लेकिन , ऐसा लगता है कि डिफ़ॉल्ट सेटिंग (उदाहरण के लिए 0.0.0.0:4000) को इंटरनेट एक्सेस की आवश्यकता होती है। मैं इंटरनेट के बिना नहीं चल सकता। क्या यह एक छोटा सा बग है?0.0.0.0:4000127.0.0.1:4000gem serverhttp://localhost:portJekyllJekyll server

मैं भी उपयोग करता हूं Vagrant। मैंने Vagrantfile में पोर्ट फ़ॉरवर्डिंग (8080 => 4000) सेट किया है, क्योंकि मैं वर्चुअल मशीन Jekyllमें इंस्टॉल करता हूं Vagrantऔर इसे मैकॉश के तहत टेस्ट करता हूं । यदि मैं डिफ़ॉल्ट सेटिंग (0.0.0.0:4000) का उपयोग करता हूं, तो यह काम करता है। मैं अपनी सफारी से इसे देख सकता हूं http://localhost:8080। लेकिन अगर इंटरनेट नहीं है, तो मैं 0.0.0.0:4000 तक नहीं बांध सकता। मैं इसके बजाय jekyll server -H 127.0.0.1सेवा को बांधने के लिए उपयोग करता हूं 127.0.0.1:4000, फिर मैं इसके माध्यम से नहीं जा सकता http://localhost:8080

क्या कोई 0.0.0.0, 127.0.0.1 और लोकलहोस्ट के बीच अंतर बता सकता है ? और क्या कोई समझा सकता है कि अंतर इस समस्या का कारण क्यों होगा ?


यह आलेख howtogeek.com/225487/…
fangxing

जवाबों:


408

127.0.0.1आम तौर पर आईपी पता "लूपबैक" या केवल-स्थानीय इंटरफ़ेस को सौंपा गया है। यह एक "नकली" नेटवर्क एडेप्टर है जो केवल एक ही होस्ट के भीतर संचार कर सकता है। इसका उपयोग अक्सर तब किया जाता है जब आप नेटवर्क-सक्षम एप्लिकेशन को केवल उसी होस्ट पर ग्राहकों की सेवा के लिए चाहते हैं। एक प्रक्रिया जो 127.0.0.1कनेक्शन के लिए सुन रही है वह केवल उस सॉकेट पर स्थानीय कनेक्शन प्राप्त करेगी।

"लोकलहोस्ट" आम तौर पर 127.0.0.1आईपी ​​पते के लिए होस्टनाम है । यह आम तौर पर /etc/hosts(या "कहीं" के तहत "मेजबान" नाम के विंडोज समकक्ष %WINDIR%) में सेट किया गया है। आप इसे किसी भी अन्य होस्टनाम की तरह उपयोग कर सकते हैं - यह देखने के लिए "पिंग लोकलहोस्ट" का प्रयास करें कि यह कैसे हल होता है 127.0.0.1

0.0.0.0दो अलग-अलग अर्थ हैं, लेकिन इस संदर्भ में, जब किसी सर्वर को 0.0.0.0उस पर सुनने के लिए कहा जाता है, जिसका अर्थ है "हर उपलब्ध नेटवर्क इंटरफ़ेस पर सुनें"। 127.0.0.1सर्वर प्रक्रिया के परिप्रेक्ष्य से आईपी ​​पते के साथ लूपबैक एडाप्टर मशीन पर किसी भी अन्य नेटवर्क एडेप्टर की तरह दिखता है, इसलिए सुनने के लिए कहा जाने वाला सर्वर 0.0.0.0उस इंटरफ़ेस पर भी कनेक्शन स्वीकार करेगा।

उम्मीद है कि आपके प्रश्न का आईपी पक्ष जवाब देता है। मैं Jekyll या Vagrant से परिचित नहीं हूं, लेकिन मैं अनुमान लगा रहा हूं कि आपका पोर्ट फ़ॉरवर्डिंग 8080 => 4000किसी विशेष नेटवर्क एडाप्टर के लिए बाध्य है, इसलिए जब आप स्थानीय रूप से कनेक्ट होते हैं तो यह रास्ते में नहीं होता है127.0.0.1


हम्म, मेजबानों की ओर इशारा किए बिना भीping localhost विंडोज पर काम करने लगता है । 127.0.0.1localhost
पचेरियर

पचेरियर से सहमत। कम से कम विंडोज में, लोकलहोस्ट डिफ़ॉल्ट रूप से 0.0.0.0 (127.0.0.1 नहीं)
drodsou

5
"यह 0.0.0.0 के बाइंडिंग के आपके विवरण को छोड़कर ज्यादातर सही है। यह हर उपलब्ध नेटवर्क इंटरफ़ेस के लिए बाध्य नहीं है जैसा कि आपने वर्णित किया है, बल्कि सभी पते पर बांधता है । टीसीपी स्टैक में इसे INADDR_ANY के रूप में जाना जाता है - हटाए गए उत्तर से। @strangemonad की।
पिओर Dobrogost

15

जेकिल के वर्तमान संस्करण में, यह http://127.0.0.1:4000/ पर डिफॉल्ट करता है ।
यह अच्छा है, यदि आप एक नेटवर्क से जुड़े हैं, लेकिन नहीं चाहते कि कोई और आपके एप्लिकेशन को एक्सेस करे।

हालाँकि ऐसा हो सकता है कि आप देखना चाहते हैं कि आपका एप्लिकेशन मोबाइल पर या किसी अन्य लैपटॉप / कंप्यूटर से कैसे चलता है।

उस स्थिति में, आप उपयोग कर सकते हैं

jekyll serve --host 0.0.0.0

यह आपके एप्लिकेशन को होस्ट और अगले उपयोग के लिए किसी अन्य होस्ट से इसे कनेक्ट करने के लिए बाध्य करता है

http://host's IP adress/4000 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.