क्या वेब सर्वर केवल एक वेबसाइट को पकड़ते हैं?
जब आप पहली बार सीखना शुरू करते हैं कि डोमेन नाम, आईपी पते, वेब सर्वर और वेबसाइट सभी कैसे फिट होते हैं और एक साथ काम करते हैं, तो यह कई बार थोड़ा भ्रमित या भारी हो सकता है। यह सब इतनी आसानी से काम करने के लिए कैसे निर्धारित किया गया है? आज के SuperUser Q & A पोस्ट में एक जिज्ञासु पाठक के सवालों के जवाब हैं.
आज का प्रश्न और उत्तर सत्र सुपरयूज़र के सौजन्य से आता है-स्टैक एक्सचेंज का एक उपखंड, क्यू एंड ए वेब साइटों का एक समुदाय-संचालित समूह है।.
रोसमेरी वोग्टली (फ़्लिकर) की फोटो शिष्टाचार.
प्रश्न
SuperUser पाठक user3407319 जानना चाहता है कि क्या वेब सर्वर केवल एक ही वेबसाइट को पकड़ते हैं:
जिस आधार पर मैं DNS के बारे में समझता हूं और जिस वेब सर्वर पर एक वेबसाइट संग्रहीत की जाती है, उसके आईपी पते के साथ एक डोमेन नाम को जोड़ने का मतलब है कि क्या प्रत्येक वेब सर्वर केवल एक वेबसाइट को पकड़ सकता है? यदि वेब सर्वर एक से अधिक वेबसाइट रखते हैं, तो यह सब कैसे हल हो जाता है ताकि मैं बिना किसी समस्या के वेबसाइट को एक्सेस कर सकूं या मिलावट कर सकूं?
क्या वेब सर्वर केवल एक वेबसाइट को पकड़ते हैं, या वे अधिक पकड़ते हैं?
उत्तर
SuperUser योगदानकर्ता बॉब हमारे लिए जवाब है:
मूल रूप से, ब्राउज़र में HTTP अनुरोध में डोमेन नाम शामिल है, इसलिए वेब सर्वर जानता है कि किस डोमेन से अनुरोध किया गया था और उसके अनुसार प्रतिक्रिया दे सकता है.
HTTP अनुरोध
यहां बताया गया है कि आपका विशिष्ट HTTP अनुरोध कैसे होता है:
1. उपयोगकर्ता http: // होस्ट: पोर्ट / पथ के रूप में एक URL प्रदान करता है.
2. ब्राउज़र URL के होस्ट (डोमेन) हिस्से को निकालता है और नाम रिज़ॉल्यूशन नामक एक प्रक्रिया में आईपी पते (यदि आवश्यक हो) में अनुवाद करता है। यह अनुवाद DNS के माध्यम से हो सकता है, लेकिन इसके लिए नहीं है (उदाहरण के लिए, सामान्य ऑपरेटिंग सिस्टम पर स्थानीय होस्ट फ़ाइल DNS को बायपास करती है).
3. ब्राउज़र निर्दिष्ट पोर्ट पर एक टीसीपी कनेक्शन खोलता है, या उस आईपी पते पर 80 पोर्ट के लिए डिफॉल्ट करता है.
4. ब्राउज़र एक HTTP अनुरोध भेजता है। HTTP / 1.1 के लिए, यह इस तरह दिखता है:
HTTP / 1.1 में होस्ट हेडर मानक और आवश्यक है। यह HTTP / 1.0 युक्ति में निर्दिष्ट नहीं था, लेकिन कुछ सर्वर इसे वैसे भी समर्थन करते हैं.
यहां से, वेब सर्वर के पास जानकारी के कई टुकड़े हैं जो यह तय करने के लिए उपयोग कर सकते हैं कि प्रतिक्रिया क्या होनी चाहिए। ध्यान दें कि एकल वेब सर्वर के लिए कई आईपी पतों से बंधना संभव है.
- टीसीपी सॉकेट (क्लाइंट का आईपी पता भी उपलब्ध है) से अनुरोधित आईपी पता, लेकिन यह शायद ही कभी उपयोग किया जाता है, और कभी-कभी अवरुद्ध / फ़िल्टर करने के लिए)
- अनुरोधित पोर्ट, टीसीपी सॉकेट से
- अनुरोधित होस्ट नाम, जैसा कि HTTP अनुरोध में ब्राउज़र द्वारा होस्ट हेडर में निर्दिष्ट है
- अनुरोधित मार्ग
- कोई अन्य हेडर (कुकीज़, आदि)
जैसा कि आपने देखा है, इन दिनों सबसे आम साझा होस्टिंग सेटअप एक ही आईपी पते पर कई वेबसाइटें डालता है: पोर्ट संयोजन, वेबसाइटों के बीच अंतर करने के लिए सिर्फ होस्ट को छोड़.
यह अपाचे-भूमि में एक नाम-आधारित वर्चुअल होस्ट के रूप में जाना जाता है, जबकि नग्नेक्स उन्हें सर्वर ब्लॉक में सर्वर नाम देता है, और IIS वर्चुअल सर्वर को पसंद करता है.
HTTPS के बारे में क्या?
HTTPS थोड़ा अलग है। टीसीपी कनेक्शन की स्थापना के लिए सब कुछ समान है, लेकिन उसके बाद एक एन्क्रिप्टेड टीएलएस सुरंग स्थापित की जानी चाहिए। लक्ष्य के बारे में किसी भी जानकारी को लीक नहीं करना है.
यह सत्यापित करने के लिए कि वेब सर्वर वास्तव में इस डोमेन का मालिक है, वेब सर्वर को किसी विश्वसनीय तृतीय पक्ष द्वारा हस्ताक्षरित प्रमाणपत्र भेजना होगा। ब्राउज़र तब इस प्रमाणपत्र की उस डोमेन के साथ तुलना करेगा जो उसने अनुरोध किया था.
यह एक समस्या प्रस्तुत करता है। वेब सर्वर को कैसे पता चलता है कि HTTP अनुरोध प्राप्त होने से पहले उसे कौन सा होस्ट / वेबसाइट का प्रमाण पत्र भेजना है?
परंपरागत रूप से, यह HTTPS की आवश्यकता वाली हर वेबसाइट के लिए एक समर्पित IP पता (या पोर्ट) होने से हल किया गया था। जाहिर है, यह समस्याग्रस्त हो गया है क्योंकि हम IPv4 पते से बाहर चल रहे हैं.
एसएनआई (सर्वर नाम संकेत) दर्ज करें। ब्राउज़र अब TLS वार्ताओं के दौरान होस्ट नाम से गुजरता है, इसलिए वेब सर्वर के पास यह जानकारी पर्याप्त है कि वह सही प्रमाण पत्र भेज सके। वेब सर्वर साइड पर, कॉन्फ़िगरेशन बहुत समान है कि कैसे HTTP वर्चुअल होस्ट कॉन्फ़िगर किया गया है.
नकारात्मक पक्ष यह है कि होस्ट नाम अब एन्क्रिप्शन से पहले सादे पाठ के रूप में पारित किया गया है, और अनिवार्य रूप से लीक की गई जानकारी है। यह आमतौर पर स्वीकार्य ट्रेड-ऑफ माना जाता है, हालांकि होस्ट नाम पर विचार करना डीएनएस क्वेरी में वैसे भी आम तौर पर उजागर होता है.
क्या होगा यदि आप केवल आईपी पते द्वारा एक वेबसाइट का अनुरोध करते हैं?
वेब सर्वर क्या करता है जब यह नहीं पता होता है कि आपके द्वारा अनुरोधित कौन सा विशिष्ट होस्ट वेब सर्वर के कार्यान्वयन और कॉन्फ़िगरेशन पर निर्भर करता है। आमतौर पर, एक "डिफ़ॉल्ट", "कैच-ऑल", या "फ़ॉल बैक" वेबसाइट निर्दिष्ट है जो सभी अनुरोधों पर प्रतिक्रिया प्रदान करेगा जो स्पष्ट रूप से एक मेजबान निर्दिष्ट नहीं करते हैं.
यह डिफ़ॉल्ट वेबसाइट अपनी स्वतंत्र वेबसाइट हो सकती है (अक्सर एक त्रुटि संदेश दिखाती है), या यह वेब सर्वर पर अन्य वेबसाइटों में से कोई भी हो सकती है जो वेब सर्वर व्यवस्थापक की प्राथमिकताओं के आधार पर होती है।.
स्पष्टीकरण में कुछ जोड़ना है? टिप्पणियों में विचार व्यक्त करो। अन्य टेक-सेवी स्टैक एक्सचेंज उपयोगकर्ताओं से अधिक उत्तर पढ़ना चाहते हैं? पूरी चर्चा धागा यहाँ देखें.