जब मैं अपने वेब ब्राउज़र में लोकलहोस्ट: 8080 पर जाता हूं तो वास्तव में क्या हो रहा है? (अपाचे तोमकैट)


11

मैंने अपना करियर सभी स्थानीय एप्लिकेशन प्रोग्रामिंग (C ++ एप्लिकेशन और व्हाट्सएप) पर खर्च किया है। मैं अपने पैरों को अब वेब दुनिया में खोदने की कोशिश कर रहा हूं। मैं एक्लिप्स (मार्स) और अपाचे टॉम्केट 8.0.23 का उपयोग करने की कोशिश कर रहा हूं और एक एन्वायरमेंट सेट कर रहा हूं जिसमें मैं सर्वर साइड प्रोग्रामिंग (जेएसपी, पीएचपी, आदि) के साथ प्रयोग कर सकता हूं और सीख सकता हूं। मेरे पास यह सब ऐसे सेट है जब मैं टाइप करता हूं

localhost:8080

मेरे ब्राउज़र में यह सही tomcat पृष्ठ पर जाता है। मुझे पता है कि यह शायद बहुत सरल है, लेकिन यह मेरे दिमाग को उड़ाने की तरह है।

जब मैं लोकलहोस्ट टाइप करता हूं तो वास्तव में क्या हो रहा है?

जहां इंटरनेट नहीं है तो टॉमकैट पेज कहां से आ रहा है? मुझे पूरा यकीन है कि डेटा एक सर्वर से आता है, जो टॉमकैट के लिए धन्यवाद, मेरे पीसी पर है, लेकिन मेरे ब्राउज़र को कैसे पता चला कि लोकलहोस्ट से जानकारी कहां मिलेगी: 8080?

मुझे लगता है कि 8080 एक बंदरगाह या कुछ और है, लेकिन मैं वास्तव में उस बारे में निश्चित नहीं हूं और अगर यह एक बंदरगाह है तो मुझे वास्तव में यकीन नहीं है कि इसका क्या मतलब है।

मूल रूप से सर्वर साइड वेब डेवलपमेंट के बारे में सभी मुझे पता है (मुझे लगता है ...) यह है कि शुद्ध एचटीएमएल / सीएसएस वेब डेवलपमेंट में सभी काम स्थानीय रूप से एक बार सब कुछ डाउनलोड होने के बाद किया जाता है, लेकिन सर्वर के साथ कुछ काम (कुछ सीमांकक के अंदर) बंद हो जाते हैं सर्वर और एक अलग रूप में HTML में वापस इंजेक्ट किया जाता है (बहुत सी + + में एक फ़ंक्शन के लिए डेटा भेजने और लौटाए जा रहे अलग-अलग डेटा), जो तब फिर से स्थानीय रूप से पृष्ठ पर आ जाता है।


2
मैं आपको RFC 7230 पढ़ने के लिए आमंत्रित करना चाहूंगा ।
माइकल हैम्पटन

ऐसा लगता है कि यह एक लंबी रात है;)
सॉफ्टेंग

जवाबों:


9

जब मैं अपने वेब ब्राउज़र को लोकलहोस्ट: 8080 पर जाने के लिए निर्देशित करता हूँ तो वास्तव में क्या हो रहा है?

  1. आप अपने वेब ब्राउज़र को होस्टनाम को हल करने के लिए अपने ऑपरेटिंग सिस्टम से पूछ रहे हैं localhost। ऑपरेटिंग सिस्टम सामान्य रूप से होस्टनाम localhostको 127.0.0.1, आपके लूप बैक इंटरफ़ेस को हल करेगा ।

  2. किसी भी होस्टनाम या आईपी पते के बाद एक :और एक पोर्ट नंबर जैसे :8080ब्राउज़र बताता है कि डिफ़ॉल्ट वेब-सर्वर पोर्ट 80 के बजाय उस टीसीपी पोर्ट से कनेक्ट करना है।

    बस के रूप में http://localhost:80/, http://localhost/, http://127.0.0.1/:80, और http://127.0.0.1/, एक ही सर्वर और बंदरगाह के लिए प्रत्येक कनेक्ट इतना है http://localhost:8080/और http://127.0.0.1:8080/यह भी एक ही आईपी पता करने के लिए लेकिन टीसीपी पोर्ट 8080 पर कनेक्ट

अतिरिक्त नोट: HTTP / 1.1 में, भले ही वेब ब्राउज़र एक ही आईपी पते और पोर्ट से, कई वेब-सर्वर से जुड़ता हो, लेकिन लोकलहोस्ट और 127.0.0.1 के बीच थोड़ा अंतर होता है। पता बार में क्या है, इसके आधार पर, आपका ब्राउज़र अनुरोध शीर्षलेख फ़ील्ड को या तो Host: localhostउसके साथ भेज देगा Host: 127.0.0.1। जब किसी वेब सर्वर को ठीक से कॉन्फ़िगर किया जाता है, तो ब्राउज़र का होस्ट हेडर फ़ील्ड एकल वेब सर्वर को एक एकल आईपी एड्रेस पोर्ट पर सुनने की अनुमति देता है और कई वेब डोमेन के लिए अलग-अलग वेबपेजों की सेवा करता है जो एक ही आईपी पते का समाधान करते हैं।

ऑपरेटिंग सिस्टम आमतौर पर होस्टहोस्ट को लोकलहोस्ट की तरह कैसे हल करता है?

  1. यूनिक्स सिस्टम या यूनिक्स जैसे OS पर जैसे Linux या Freebsd, फ़ाइल / etc / मेजबान है, और इसके लिए लाइनें होने की संभावना है:

    127.0.0.1   localhost
    ::1     localhost ip6-localhost ip6-loopback
    
  2. खिड़कियों पर, फ़ाइल है c:\windows\system32\drivers\etc\hostsऔर आमतौर पर एक समान रेखा होगी:

    127.0.0.1   localhost
    

अतिरिक्त नोट: यदि आप चाहें, तो आप अपनी मेजबानों फ़ाइल में लाइनें जोड़ सकते हैं जैसे:

127.0.0.1     localhost
127.0.0.1     developer.yourdomain.com
# Deny Browser Request For These Sites
127.0.0.2     www.spam.advertisements.com
127.0.0.2     super.ads.com
# Block These Sites
127.0.0.3     www.dont.go.here.com
127.0.0.3     nsfw.stuff.com 
  • http://developer.yourdomain.com:8080/आपके ब्राउज़र के पता बार में यूनिफ़ॉर्म रिसोर्स लोकेटर (URL) , वेब ब्राउज़र को आपके स्थानीय लूपबैक पते 127.0.0.1 के 8080 को पोर्ट करने के लिए एक टीसीपी कनेक्शन बनाने का निर्देश देता है।

  • इसके अलावा, 127.0.0.0/8 रेंज में किसी भी पते पर rfc1700 पृष्ठ 4 के लिए रिकॉर्डिंग भी एक लूपबैक पता है। इस प्रकार, आपके कंप्यूटर पर चलने वाला एक ठीक से कॉन्फ़िगर किया गया वेबसर्वर 127.0.0.2 पोर्ट पर सभी अनुरोधों से इनकार कर सकता है, जबकि एक सामान्य "आपको यहां नहीं जाना चाहिए। 127.0.0.3 पर कनेक्शन के लिए साइट अवरुद्ध है" संदेश।

टॉमकैट पृष्ठ कहाँ से आ रहा है?

Apache Tomcat एक सर्वर है जो पोर्ट पर सुनता है और जावा प्रोग्राम चलाता है जो आपके ब्राउजर को भेजने के लिए कंटेंट जेनरेट करता है।


कुछ भी नहीं समझाता। बहुत ही सतही
ग्रीन

@Green क्या आप विशेष रूप से देख रहे थे? स्थानीयहोस्ट नाम एक पते पर हल हो रहा है, और टीसीपी पोर्ट नंबर को कवर किया गया है। मैंने कवर नहीं किया: कैसे विभिन्न सर्वर पोर्ट को सूचीबद्ध करने का काम करते हैं, सर्वर पूल कई कनेक्शनों को संभालते हैं, वेब-सर्वरों को कैसे कॉन्फ़िगर करते हैं, टीसीपी संचार के आंतरिक कामकाज, पूर्ण HTTP हेडर स्पष्टीकरण, या होस्ट्स में नहीं मिले डोमेन के लिए नाम समाधान कैसे काम करता है फ़ाइल, प्रत्येक प्रश्न के दायरे से परे होगा।
कीथ रेनॉल्ड्स

1

जब आप वेब ब्राउज़र में www.google.com टाइप करते हैं, तो यह डिफ़ॉल्ट पोर्ट 80 से Google सर्वर पर एक कनेक्शन खोलता है (एक DNS लुकअप के माध्यम से यह देखने के लिए कि आईपी एड्रेस www.google.com क्या है) और वेब पेज का अनुरोध करता है। Google सर्वर एक वेब पेज के साथ प्रतिक्रिया करता है जिसे आपका ब्राउज़र स्क्रीन पर खींचता है (आमतौर पर छवियों, सीएसएस और जावास्क्रिप्ट के लिए आगे कॉल करके)।

जब आप लोकलहोस्ट पर जाते हैं: 8080 यह बिल्कुल वही बात है। लोकलहोस्ट सर्वर का नाम हमेशा उस मशीन पर रहता है जिस पर आप चल रहे हैं और 127.0.0.1 के फर्जी आईपी पते का उपयोग करता है (आपके कंप्यूटर में दो आईपी पते होंगे - यह नकली जो हर कंप्यूटर के पास है और असली वाला है)। तो आपके पास एक टॉमकैट इंस्टेंस होना चाहिए जो पोर्ट 8080 पर कनेक्शन के लिए स्थानीय रूप से सुन रहा हो।

डिफ़ॉल्ट http पोर्ट 80 के बजाय पोर्ट 8080 क्यों? ठीक है कि आपके पास पहले से ही एक वेबसर्वर है।

आमतौर पर आपके पास वेब सर्वर और ऐप सर्वर होते हैं।

  1. वेब सर्वर (अपाचे httpd की तरह) स्थैतिक पृष्ठों की सेवा करते हैं। वास्तव में यह एक फैंसी वन-वे एफ़टीपी सर्वर की तरह है। आप एक टीसीपी कनेक्शन खोलें और HTTP कमांड (आमतौर पर प्राप्त करें) का उपयोग करके एक फ़ाइल के लिए पूछें। वेबसर्वर एक HTML फ़ाइल लौटाता है और आपका ब्राउज़र इसे डाउनलोड करता है और इसे पार्स करता है, देखता है कि इसे अन्य छवियों और अनुरोधों की आवश्यकता है। एक वेबसर्वर बहुत तेज़ है लेकिन मूल रूप से स्थानीय डिस्क से फ़ाइलों को हटा देता है और उन्हें वापस कर देता है।

  2. एक ऐप सर्वर (जैसे टॉमकैट या जेबॉस) समान है, क्योंकि यह आमतौर पर उस पेज को "बनाने" के लिए कोड चलाता है जो आप डिस्क से सीधे लिफ्ट करने के बजाय पूछ रहे हैं। उस पेज को बनाने के लिए यह आपके आवेदन पर निर्भर करता है। यह एक डेटाबेस से कनेक्ट हो सकता है, एक प्रोग्राम चला सकता है, बेतरतीब ढंग से एक पृष्ठ की सेवा कर सकता है ... आदि जब आप उदाहरण के लिए अपने ऑनलाइन बैंकिंग पर लॉग ऑन करते हैं, तो ऐप सर्वर आपके लिए एक सत्र सेट करता है, उस सत्र आईडी को एक कुकी में लौटाता है जो कि आपकी जब तक आप लॉग आउट नहीं करते, तब तक ब्राउज़र हर बार अनुरोध करता है। इसलिए यदि आप "मेरे शेष" पृष्ठ के लिए पूछते हैं तो बैंक को पता चलता है कि आप अपने सत्र आईडी पर आधारित हैं, फिर अपना नाम और बैंक बैलेंस प्राप्त करने के लिए इसके डेटाबेस में जाता है, फिर एक पृष्ठ बनाता है जिसमें कहा जाता है "हाय जॉन स्मिथ, आपका शेष € 100 है। " ऐप सर्वर आमतौर पर धीमे होते हैं, लेकिन Webservers की तुलना में अधिक बहुमुखी होते हैं।

कई स्थानों पर 80 के डिफ़ॉल्ट पोर्ट में एक WebServer चल रहा है, और फिर AppServer एक द्वितीयक पोर्ट (जैसे 8080) पर चल रहा है। इसलिए स्थैतिक पृष्ठों को तेजी से काम किया जाता है और जब उपयोगकर्ता एक लिंक पर क्लिक करते हैं जो उन्हें एक गतिशील पृष्ठ पर ले जाता है, तो लिंक 8080 पर जाता है (जो ऐप सर्वर जवाब देता है) या वेब सर्वर ऐप सर्वर के कुछ अनुरोधों को अग्रेषित करने के लिए सेटअप है जो मामला अभी भी डिफ़ॉल्ट पोर्ट 80 की तरह दिखता है और इसलिए उपयोगकर्ता को थोड़ा अच्छा लगता है)।

बेशक यह एक बहुत ही उच्च स्तरीय अवलोकन है और कुछ भी ऐसा नहीं है जो काला और सफेद हो। अधिकांश Webservers स्क्रिप्ट चलाकर कुछ गतिशील सामग्री बना सकते हैं (आमतौर पर CGI के माध्यम से वह perl या PHP का उपयोग करके स्क्रिप्ट करेंगे) और अधिकांश ऐप सर्वर वेबसर्वर की तरह सादे फ़ाइलों की सेवा भी कर सकते हैं। वास्तव में यह संभव है कि केवल एक ऐप सर्वर चलाएं और 8080 से 80 तक टॉमकैट पोर्ट नंबर बदलें।

अंत में कई एप्लिकेशन ऐप सर्वर (जो धीमे और अक्षम के रूप में देखे गए) के लिए प्रत्येक अनुरोध के लिए पूर्ण HTML पृष्ठों की सेवा से दूर जा रहे हैं और इसके बजाय केवल JSON या XML भेजने के लिए AJAX का उपयोग करके डेटा स्निपेट के साथ जवाब दे रहे हैं। उस मूल www.google.com पर वापस जाएं जिसे आपने अपनी खोज क्वेरी में टाइप किया था, खोज को हिट करें और अपने परिणामों का एक पृष्ठ प्राप्त करें। अब इसके बजाय, जैसा कि आप लिखते हैं, आपका ब्राउज़र लगातार Google को AJAX अनुरोध भेज रहा है जो अब तक आपके द्वारा लिखे गए खोज के आधार पर खोज परिणामों पर निर्भर करता है और फिर आपका ब्राउज़र पृष्ठ को अपडेट करता है। इसका अर्थ है कि उपयोगकर्ता को पृष्ठ को इतनी तेज़ी से और अधिक गतिशील रूप से सबमिट करने के लिए प्रतीक्षा करने की आवश्यकता नहीं है (जैसे एक पुराने स्कूल डेस्कटॉप ऐप होगा)।


1

इस परिदृश्य में आप लोकलहोस्ट को हल करने के लिए एक अनुरोध भेजते हैं जो 127.0.0.1 (लूपबैक इंटरफ़ेस) है और अपाचे को पोर्ट 8080 पर सुनने के लिए कॉन्फ़िगर किया गया है, जब आप पोर्ट 8080 पर लोकलहोस्ट का उपयोग करते हैं तो यह डिफ़ॉल्ट वर्चुअलहॉस्ट देता है।


0

इसे सरल बनाते हुए, एक वेब पते के रूप में लोकलहोस्ट आपके स्थानीय मशीन से जुड़ता है, जहां इस मामले में आपने अपाचे को वेब सर्वर के रूप में स्थापित किया है।

दूसरा भाग: 8080, का अर्थ है उस वेब पते के पोर्ट 8080 से कनेक्ट होना। यदि आप इसे निर्दिष्ट नहीं करते हैं, तो आपका वेब ब्राउज़र डिफ़ॉल्ट वेबसर्वर पोर्ट से कनेक्ट होगा, जो कि पोर्ट 80 है।

यदि आप अभी तक आईपी पते में हैं, तो लोकलहोस्ट एक निश्चित डीएनएस लिंक 127.0.0.1 है।

आपको वहां पहुंचना चाहिए ...

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