मूल रूप से: ब्राउज़र में HTTP अनुरोध में डोमेन नाम शामिल है, इसलिए वेबसर्वर जानता है कि किस डोमेन से अनुरोध किया गया था और वह उसी के अनुसार प्रतिक्रिया दे सकता है।
HTTP अनुरोध
यहां बताया गया है कि आपका विशिष्ट HTTP अनुरोध कैसे होता है:
उपयोगकर्ता प्रपत्र में एक URL प्रदान करता है http://host:port/path
।
ब्राउज़र URL के होस्ट (डोमेन) भाग को निकालता है और इसे आईपी पते में अनुवाद करता है, यदि आवश्यक हो, तो नाम रिज़ॉल्यूशन के रूप में जाना जाता है । यह अनुवाद DNS के माध्यम से हो सकता है, लेकिन इसके लिए (उदाहरण के लिए, hosts
सामान्य OS पर स्थानीय फ़ाइल DNS को बायपास नहीं करता है)।
ब्राउज़र उस आईपी पते पर निर्दिष्ट पोर्ट के लिए एक टीसीपी कनेक्शन या पोर्ट 80 पर डिफॉल्ट को खोलता है।
ब्राउज़र एक HTTP अनुरोध भेजता है। HTTP / 1.1 के लिए, यह इस तरह दिखता है:
GET /path HTTP/1.1
Host: example.com
( Host
हेडर मानक और HTTP / 1.1 में आवश्यक है। यह HTTP / 1.0 कल्पना में निर्दिष्ट नहीं किया गया था, लेकिन कुछ सर्वर इसे वैसे भी समर्थन करते हैं।)
यहां से, वेबसर्वर के पास जानकारी के कई टुकड़े होते हैं जो यह तय करने के लिए उपयोग कर सकते हैं कि प्रतिक्रिया क्या होनी चाहिए। ध्यान दें कि एकल वेबसर्वर के लिए कई आईपी पतों से बंधना संभव है।
- अनुरोधित आईपी पता, टीसीपी सॉकेट से
- क्लाइंट का आईपी पता भी उपलब्ध है, लेकिन इसका उपयोग शायद ही कभी किया जाता है - कभी-कभी अवरुद्ध / फ़िल्टर करने के लिए
- अनुरोधित पोर्ट, टीसीपी सॉकेट से
- अनुरोधित होस्टनाम, जैसा
Host
कि HTTP अनुरोध में ब्राउज़र द्वारा हेडर में निर्दिष्ट है ।
- अनुरोधित मार्ग
- कोई अन्य हेडर (कुकीज़, आदि)
जैसा कि आपने देखा है, इन दिनों सबसे आम साझा होस्टिंग सेटअप एक ही आईपी पते पर कई वेबसाइटों को डालता है: पोर्ट संयोजन, बस Host
वेबसाइटों के बीच अंतर करने के लिए छोड़ देता है ।
यह अपाचे-भूमि में एक नाम-आधारित वर्चुअल होस्ट के रूप में जाना जाता है , जबकि निग्नेक्स उन्हें सर्वर ब्लॉक में सर्वर नाम देता है और IIS वर्चुअल सर्वर को पसंद करता है ।
HTTPS के बारे में क्या?
HTTPS थोड़ा अलग है। टीसीपी कनेक्शन की स्थापना के लिए सब कुछ समान है, लेकिन इसके बाद एक एन्क्रिप्टेड टीएलएस सुरंग स्थापित की जानी चाहिए। लक्ष्य के बारे में किसी भी जानकारी को लीक नहीं करना है।
यह सत्यापित करने के लिए कि सर्वर वास्तव में इस डोमेन का मालिक है, सर्वर को एक विश्वसनीय तृतीय पक्ष द्वारा हस्ताक्षरित प्रमाणपत्र भेजना होगा। ब्राउज़र तब इस प्रमाणपत्र की उस डोमेन से तुलना करेगा जो उसने अनुरोध किया था।
यह एक समस्या प्रस्तुत करता है। सर्वर को कैसे पता चलता है कि होस्ट (वेबसाइट) के सर्टिफिकेट को भेजना है, अगर उसे HTTP रिक्वेस्ट मिलने से पहले ऐसा करने की जरूरत है?
परंपरागत रूप से, यह HTTPS की आवश्यकता वाली प्रत्येक वेबसाइट के लिए एक समर्पित IP पता (या पोर्ट) होने से हल किया गया था। जाहिर है, यह समस्याग्रस्त हो जाता है क्योंकि हम IPv4 पतों से बाहर निकलने लगते हैं।
एसएनआई (सर्वर नाम संकेत) दर्ज करें । ब्राउज़र अब TLS वार्ता के दौरान hostname पास करता है, इसलिए सर्वर के पास यह जानकारी पर्याप्त है कि वह सही प्रमाण पत्र भेज सके। सर्वर साइड पर, कॉन्फ़िगरेशन बहुत समान है कि HTTP वर्चुअल होस्ट कैसे कॉन्फ़िगर किया गया है।
नकारात्मक पक्ष यह है कि होस्टनाम अब एन्क्रिप्शन से पहले सादे पाठ के रूप में पारित किया गया है, और अनिवार्य रूप से लीक की गई जानकारी है। यह आमतौर पर एक स्वीकार्य ट्रेडऑफ़ माना जाता है, होस्टनाम पर विचार करना सामान्यतः DNS क्वेरी में वैसे भी उजागर होता है।
क्या होगा यदि आप केवल आईपी पते द्वारा साइट का अनुरोध करते हैं?
जब सर्वर यह नहीं जानता कि आपके द्वारा अनुरोधित विशिष्ट होस्ट सर्वर कार्यान्वयन और कॉन्फ़िगरेशन पर निर्भर करता है। आमतौर पर, एक "डिफ़ॉल्ट", "कैटचेल" या "फॉलबैक" साइट है जो निर्दिष्ट है कि सभी अनुरोधों पर प्रतिक्रिया प्रदान करेगा जो स्पष्ट रूप से एक मेजबान निर्दिष्ट नहीं करते हैं।
यह डिफ़ॉल्ट साइट अपनी स्वतंत्र साइट हो सकती है (अक्सर एक त्रुटि संदेश दिखाती है), या यह सर्वर पर अन्य साइटों में से कोई भी हो सकता है, जो कि सर्वर व्यवस्थापक की पसंद पर निर्भर करता है।
Host:
हेडर के भीतर एक डोमेन नहीं होगा । साझा होस्टिंग के मामले में, वेब सर्वर को प्रदाता द्वारा इसे अलग-अलग तरीकों से संभालने के लिए कॉन्फ़िगर किया जा सकता है (जैसे कि एक डिफ़ॉल्ट, प्रदाता को पुनर्निर्देशित करना)।