127.0.0.1 और लोकलहोस्ट के बीच क्या अंतर है


157

निम्नलिखित को मानते हुए निम्नलिखित में परिभाषित किया गया है .../hosts:

127.0.0.1 localhost

क्या, यदि कोई हो, सर्वर नाम के रूप में उपयोग करने 127.0.0.1और localhostविशेष रूप से कनेक्शन के लिए सुन रहे स्थानीय रूप से चलने वाली प्रक्रियाओं को मारने के बीच वास्तविक अंतर हैं?


15
आप कह सकते हैं localhostकि प्रोटोकॉल स्वतंत्र है, IPv4 और IPv6 दोनों काम करेंगे।
स्टीव-ओ

जवाबों:


122

खैर, सबसे अधिक संभावना अंतर आप अभी भी एक वास्तविक क्या करना है वह यह है कि देखने के localhostकहीं।

यदि आप उपयोग करते हैं 127.0.0.1, तो (बुद्धिमान) सॉफ्टवेयर बस एक आईपी पते में सीधे बदल देगा और इसका उपयोग करेगा। कुछ कार्यान्वित gethostbynameबिंदीदार प्रारूप (और संभवतः समतुल्य IPv6 प्रारूप) का पता लगाएगा और एक लुकअप नहीं करेगा।

अन्यथा, नाम को हल करना होगा। और इस बात की कोई गारंटी नहीं है कि आपकी hostsफ़ाइल वास्तव में उस रिज़ॉल्यूशन (पहले या बिल्कुल) के लिए उपयोग की जाएगी , इसलिए localhostयह पूरी तरह से अलग आईपी ​​एड्रेस बन सकता है ।

उसके द्वारा मेरा मतलब है कि, कुछ सिस्टम पर, एक स्थानीय hostsफ़ाइल को बायपास किया जा सकता है। host.confलिनक्स पर फ़ाइल नियंत्रण इस (और कई अन्य Unices)।


6
मुख्य अंतर यह है कि कनेक्शन यूनिक्स डोमेन सॉकेट के माध्यम से बनाया जा सकता है, जैसा कि यहां कहा गया है: stackoverflow.com/questions/3715925/localhost-vs-127-0-0-1
डॉन वीगेट्स

/etc/nsswitch.confका चयन करता है hostsया DNS पहले एक मेजबान देखने के लिए प्रयोग किया जाता है, अगर एनएसएस चल रहा है।
निशान लकाटा

@DonViegues यह MySQL विशिष्ट और IMO खराब डिज़ाइन है। यह लोकलहोस्ट को देखेगा और आईपी का उपयोग करने के बजाय यूनिक्स-सॉकेट का उपयोग करने की कोशिश करेगा लेकिन 127.0.0.1 के लिए यह सिर्फ आईपी का उपयोग करता है।
अरमान आयुधनी

@ArmanOrdookhani AFAIK यदि आप SSH के माध्यम से एक दूरस्थ होस्ट से कनेक्ट कर रहे हैं और फिर वहां से एक MySQL (MySQL सर्वर तक पहुंचने के लिए एक SSH सुरंग की तरह) आपको 127.0.0.1 का उपयोग करना होगा, क्योंकि संपूर्ण TC / IP पर चला जाता है। लेकिन अगर एक ही मशीन पर चलने वाली 2 प्रक्रियाएं जुड़ना चाहती हैं, तो लोकलहोस्ट (यूनिक्स सॉकेट) तेजी से खत्म हो गया है। धन्यवाद!
डॉन विएगस

1
@DonViegues हाँ आप सही हैं यूनिक्स सॉकेट में टीसीपी / आईपी की तुलना में कम ओवरहेड है। मैं सिर्फ इस व्यवहार का उल्लेख करना चाहता था MySQL के लिए विशिष्ट है और ओएस या नेटवर्किंग स्तर में कुछ नहीं।
अरमान आयुधानी

36

विकिपीडिया इसे अच्छी तरह से बताता है:

आधुनिक कंप्यूटर सिस्टम पर, होस्टहोस्ट के रूप में लोकलहोस्ट IPv4 में 127.0.0.0/8 (लूपबैक) नेट ब्लॉक में IPv4 एड्रेस का अनुवाद करता है, आमतौर पर 127.0.0.1 या # 1 IPv6 में।

फर्क सिर्फ इतना है कि यह DNS में दिख रहा है उस सिस्टम के लिए जो localhostहल करता है। यह खोज वास्तव में, वास्तव में त्वरित है। उदाहरण के लिए, stackoverflow.comआपको पता बार में टाइप करने के लिए (या यहां दिए गए एक बुकमार्कलेट का उपयोग किया गया है)। किसी भी तरह से, आप एक होस्टनाम के माध्यम से यहां पहुंचे। localhostएक समान कार्यक्षमता प्रदान करता है।


11
यह वास्तव में महत्वपूर्ण है। लोकलहोस्ट IPv6 एड्रेस को हल कर सकता है, जबकि 127.0.0.1 नहीं। IPv6 पर लोकलहोस्ट का उपयोग करना केवल सिस्टम काम कर सकता है, जबकि 127.0.0.1 IPv4 उपलब्ध नहीं है।
इरविन जानसन

32

कुछ एप्लिकेशन विशेष रूप से "लोकलहोस्ट" का इलाज करेंगे। mysql क्लाइंट 127.0.0.1 पर सर्वर से कनेक्ट करने के लिए tcp का उपयोग करने के बजाय स्थानीय यूनिक्स डोमेन सॉकेट से कनेक्ट करने के अनुरोध के रूप में लोकलहोस्ट का इलाज करेगा। यह तेज़ हो सकता है, और एक अलग प्रमाणीकरण क्षेत्र में हो सकता है।

मुझे ऐसे अन्य ऐप्स के बारे में नहीं पता है जो 127.0.0.1 की तुलना में स्थानीय रूप से व्यवहार करते हैं, लेकिन संभवतः कुछ हैं।


8

खैर, आईपी तेजी से है।

मूल रूप से, जब आप सर्वर नाम से कॉल करते हैं, तो इसे मूल आईपी में बदल दिया जाता है।

लेकिन एक आईपी को याद रखना मुश्किल होगा, इस कारण से डोमेन नाम बनाया गया था।

व्यक्तिगत रूप से मैं के http://localhostबजाय http://127.0.0.1या का उपयोग करें http://username


लोकलहोस्ट तेज़ है, टीसीपी / आईपी का उपयोग नहीं करता है
डॉन विएगस

@ डोन विएगस - आप जो कहते हैं वह इस सूत्र में अन्य उत्तरों के विपरीत है। क्या आप विस्तार से समझा सकते हैं?
डिकला

हां, मैं अपनी अन्य टिप्पणी को कॉपी और पेस्ट करूंगा: मुख्य अंतर यह है कि कनेक्शन यूनिक्स डोमेन सॉकेट के माध्यम से बनाया जा सकता है, जैसा कि यहां बताया गया है: stackoverflow.com/questions/3715925/localhost-vs-127-0-0-1
17

5
@DonViegues, जो MySQL के लिए विशिष्ट है, जो localhostएक विशेष तरीके से संभाल रहा है । अन्य अनुप्रयोगों की संभावना अभी भी होगी localhost
विलियम डेनिस

0

कुछ अलग नहीं है। एक को दूसरे की तुलना में याद रखना आसान है। आम तौर पर, आप एक आईपी पते के साथ जुड़ने के लिए एक नाम को परिभाषित करते हैं। आपको 127.0.0.1 के लिए लोकलहोस्ट निर्दिष्ट करने की आवश्यकता नहीं है, आप अपने इच्छित किसी भी नाम को निर्दिष्ट कर सकते हैं।


-3

मुख्य अंतर यह है कि कनेक्शन यूनिक्स डोमेन सॉकेट के माध्यम से बनाया जा सकता है, जैसा कि यहां कहा गया है: लोकलहोस्ट बनाम 127.0.0.1


6
आपके द्वारा जोड़ा गया उत्तर एक विशेष मामला है जो MySQL के लिए विशिष्ट है, यह आम तौर पर लागू नहीं होता है। en.wikipedia.org/wiki/Localhost#Special_cases
विलियम डेनिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.