आईपी ​​पते 0.0.0.0 और 127.0.0.1 के बीच क्या अंतर है?


220

मुझे पता है कि 127.0.0.1 ~ 127.255.255.254 अधिकांश आधुनिक ऑपरेटिंग सिस्टम के लिए लूपबैक आईपी पते हैं, और ये आईपी पते हमारे अपने कंप्यूटर को संदर्भित करने के लिए उपयोग किए जा सकते हैं।

लेकिन 0.0.0.0 क्या है? ऐसा लगता है कि यह स्थानीय कंप्यूटर को भी संदर्भित करता है, तो क्या अंतर है ?

और, क्या आप मेरे लिए निम्नलिखित आईपी कनेक्शन की व्याख्या कर सकते हैं:

netstat -an आउटपुट का स्क्रीनशॉट


6
इस प्रश्न पर भी एक नज़र डालें, क्योंकि यह विवरण देता है कि 0.0.0.0 क्या है (और नहीं है): serverfault.com/questions/228629/…
ऐली केसलमैन

एक आधुनिक ऑपरेटिंग सिस्टम ::1लूपबैक पते के रूप में उपयोग किया जाएगा ।
कैस्परर्ड

जवाबों:


157

केवल एक चीज यह है कि आप यह नहीं कह रहे हैं कि "सभी पतों तक पहुंच होनी चाहिए" - यह आपके फ़ायरवॉल (एस) और / या सर्वर सॉफ़्टवेयर और / या अन्य सुरक्षा परतों जैसे tcpwrappers में किया गया है।

इस संदर्भ में 0.0.0.0 का अर्थ है, "स्थानीय मशीन पर सभी आईपी पते" (वास्तव में, शायद "स्थानीय मशीन पर सभी आईपीवी 4 पते")। इसलिए, यदि आपके वेबसर्वर मशीन में दो आईपी पते, 192.168.1.1 और 10.1.2.1 हैं, और आप 0.0.0.0 पर वेबकेवर डेमन को अपाचे की तरह सुनने की अनुमति देते हैं, तो यह उन दोनों आईपी पते पर उपलब्ध होगा। लेकिन केवल उन आईपी पतों और वेब पोर्ट (नों) से क्या संपर्क किया जा सकता है।

ध्यान दें कि, एक अलग संदर्भ (रूटिंग) में 0.0.0.0 का मतलब आमतौर पर डिफ़ॉल्ट मार्ग (इंटरनेट के बाकी हिस्सों को "अपने स्थानीय नेटवर्क आदि में मार्गों से अलग करने का मार्ग) होता है।


तो आपका मतलब है कि वेबसर्वर का सॉकेट किसी भी उपलब्ध पते के लिए बाध्य है जब यह 0.0.0.0 पर सुनता है?
onmyway133

0.0.0.0डिफ़ॉल्ट मार्ग का मतलब केवल तभी होता है जब वह उपसर्ग /0(या netmask 0.0.0.0) के साथ हो
minmaxavg

ध्यान दिया जाए: यदि कुछ प्रक्रिया 0.0.0.0 पर सुनती है, तो यह सभी मशीन के नेटवर्क इंटरफेस के आईपी एड्रेसेज़ पर पहुंच जाएगा, जिसमें वर्तमान में लूप बैक इंटरफ़ेस का कॉन्फ़िगर किया गया पता शामिल है। लेकिन यदि प्रक्रिया केवल लूपबैक पते के पोर्ट <portNumber> पर ही सुनती है, जैसे 127.0.0.1, और फिर प्रक्रिया केवल 127.0.0.1: <portNumber> को लक्षित करके उसी मशीन से उपलब्ध है । खेलने के लिए इस अजगर उपकरण का प्रयास करें !
गाब :04

77

जब कोई सेवा 0.0.0.0 पर सुन रही है, तो इसका मतलब है कि सेवा सभी कॉन्फ़िगर किए गए नेटवर्क इंटरफेस पर सुन रही है, जब 127.0.0.1 पर सुन रहा है, सेवा केवल लूपबैक इंटरफ़ेस (केवल स्थानीय मशीन पर उपलब्ध) के लिए बाध्य है


38

IP पते के 0.0.0.0बहुत भिन्न अर्थ हो सकते हैं, यह इस बात पर निर्भर करता है कि इसका उपयोग कहां किया गया है।

  • यह एक वास्तविक नेटवर्क इंटरफ़ेस को दिया जाने वाला एक वैध पता नहीं है, साथ ही 0.0.0.0/8 सबनेट (यानी किसी भी पते से शुरू होने वाले 0.) में किसी भी अन्य पते के साथ ।
  • इसे किसी भी IP पैकेट पर स्रोत पते के रूप में उपयोग नहीं किया जा सकता है, जब तक कि ऐसा तब न हो जब कोई कंप्यूटर अभी भी अपने स्वयं के आईपी पते को नहीं जानता है और यह एक (क्लासिक उदाहरण: DHCP) का अधिग्रहण करने की कोशिश कर रहा है।
  • यदि एक रूटिंग टेबल में उपयोग किया जाता है, तो यह डिफ़ॉल्ट गेटवे की पहचान करता है; 0.0.0.0 के लिए एक मार्ग डिफ़ॉल्ट एक है, यानी जब कोई गंतव्य गंतव्य पते के लिए कोई और अधिक विशिष्ट मार्ग उपलब्ध नहीं होता है।
  • अंत में, जब netstatकमांड के आउटपुट में देखा जाता है (जो आपने पूछा है), इसका मतलब है कि एक दिया सॉकेट कंप्यूटर पर उपलब्ध सभी आईपी पते पर सुन रहा है; जब कंप्यूटर में एक से अधिक आईपी पता होता है, तो एक सॉकेट केवल एक विशिष्ट पते और पोर्ट जोड़ी, या एक पोर्ट और सभी पते के लिए बाध्य हो सकता है ; यदि आप वहां एक आईपी पता देखते हैं, तो इसका मतलब है कि सॉकेट केवल उस पोर्ट और उस विशिष्ट पते पर ही सुन रहा है; यदि आप देखते हैं 0.0.0.0, तो इसका मतलब है कि यह मशीन के सभी पतों पर उस पोर्ट पर सुन रहा है , जिसमें लूपबैक वन ( 127.0.0.1) शामिल है।

3
यदि आप 0.0.0.0 कर्ल करते हैं तो इसका क्या मतलब है? क्या कर्ल वास्तव में उपलब्ध इंटरफेस के माध्यम से संपर्क कर रहा है और अनुरोध भेज रहा है? यह कैसे पता चलता है कि कौन सा इंटरफ़ेस सही है? मैं समझता हूं कि एक सर्वर सभी इंटरफेस पर कैसे सुन सकता है, लेकिन क्लाइंट के लिए सभी इंटरफेस जैसे कि जब मैं कर्ल 0.0.0.0 या कर्ल [::] करता है, तो अनुरोध करने के लिए क्या तंत्र है।
CMCDragonkai

1
OS आपको संभवतः ऐसा करने से रोक देगा, क्योंकि यह नेटवर्किंग के नज़रिए से समझ में नहीं आता है। ping 0.0.0.0Windows सिस्टम पर प्रयास करने से त्रुटि संदेश प्राप्त होता है।
मासिमो

curl 0.0.0.0connection refusedआर्क लिनक्स पर पैदावार । ping 0.0.0.0दूसरी ओर, एक उपनाम लगता है ping 127.0.0.1जिसके लिए ठीक काम करता है।
मथायस ब्रॉन

@MatthiasBraun connection refusedहो सकता है क्योंकि कर्ल डिफ़ॉल्ट रूप से पोर्ट 80 / tcp से कनेक्ट करने का प्रयास करता है। nmap -sV localhostयदि 631 / tcp जैसे: के साथ अपने खुले बंदरगाहों को खोजने की कोशिश करें curl 0.0.0.0:631
पाब्लो ए

27

ली बी का जवाब सही है, लेकिन आपकी रुचि के मामले में यहां कुछ प्रासंगिक RFC हैं।

0.0.0.0:

से RFC1122 , खंड 3.1.2.3:

अब हम IP पते के लिए निम्न संकेतन का उपयोग करते हुए कक्षा A, B और C IP पते के लिए महत्वपूर्ण विशेष मामलों को संक्षेप में प्रस्तुत करते हैं:

            { <Network-number>, <Host-number> }

        or
            { <Network-number>, <Subnet-number>, <Host-number> }

...

          (a)  { 0, 0 }

             This host on this network.  MUST NOT be sent, except as
             a source address as part of an initialization procedure
             by which the host learns its own IP address.

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

127.0.0.1:

से RFC5735 :

127.0.0.0/8 - यह ब्लॉक इंटरनेट होस्ट लूपबैक पते के रूप में उपयोग के लिए सौंपा गया है। इस ब्लॉक के भीतर कहीं भी एक उच्च-स्तरीय प्रोटोकॉल द्वारा भेजे गए डेटाग्राम को होस्ट के अंदर वापस लूप किया जाता है। यह आमतौर पर लूपबैक के लिए केवल 127.0.0.1/32 का उपयोग करके लागू किया गया है। जैसा कि [RFC1122], खंड 3.2.1.3 में वर्णित है, पूरे 127.0.0.0/8 ब्लॉक के भीतर पते कहीं भी किसी भी नेटवर्क पर वैध रूप से प्रकट नहीं होते हैं।

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


4

सरल शब्दों में: 0.0.0.0 पर सुनने का मतलब है कि कहीं से भी इस कंप्यूटर पर नेटवर्क एक्सेस करना, उदाहरण के लिए, इस कंप्यूटर से, स्थानीय नेटवर्क से या इंटरनेट से, जबकि 127.0.0.1 को सुनने का मतलब केवल इस कंप्यूटर से सुनना है।

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