एचटीटीपी 1.0 बनाम 1.1


263

क्या कोई मुझे HTTP 1.0 और HTTP 1.1 के बीच अंतर का संक्षिप्त विवरण दे सकता है? मैंने दोनों RFC के साथ कुछ समय बिताया है, लेकिन उन दोनों के बीच बहुत अंतर नहीं कर पाया। विकिपीडिया यह कहता है:

HTTP / 1.1 (1997-1999)

वर्तमान संस्करण; लगातार कनेक्शन डिफ़ॉल्ट रूप से सक्षम है और प्रॉक्सी के साथ अच्छी तरह से काम करता है। साथ ही अनुरोध पाइपलाइनिंग का समर्थन करता है, एक ही समय में कई अनुरोधों को भेजने की अनुमति देता है, जिससे सर्वर को कार्यभार के लिए तैयार करने की अनुमति मिलती है और संभावित रूप से अनुरोधित संसाधनों को क्लाइंट को अधिक तेज़ी से स्थानांतरित किया जाता है।

लेकिन यह मेरे लिए बहुत मायने नहीं रखता है। मुझे लगता है कि यह कुछ जटिल विषय है, इसलिए मुझे पूर्ण उत्तर की उम्मीद नहीं है, लेकिन क्या कोई मुझे कुछ निचले स्तर पर मतभेदों का संक्षिप्त विवरण दे सकता है?
इसके द्वारा मेरा मतलब है कि मैं उस जानकारी की तलाश कर रहा हूँ जिसे मुझे HTTP सर्वर या एप्लिकेशन को लागू करने के लिए जानना होगा। मैं ज्यादातर सही दिशा में एक कुहनी की तलाश कर रहा हूं ताकि मैं इसे अपने आप समझ सकूं।


यह महत्वपूर्ण अंतर का काफी अच्छा सारांश है: http://www.research.att.com/~bala/papers/h0vh1.html
केव

3
स्रोत पर जाने के लिए आप पर अच्छा है। ऐसा लगता है कि आप सामान्य रूप से नेटवर्किंग के बारे में जानते नहीं हैं, अगर आप उस सारांश को नहीं समझते हैं। शायद आपको उन शर्तों पर भी शोध करना चाहिए।
मार्सिन

4
हालांकि मैं अभी भी एक नौसिखिया हूँ जब यह इस सामान की बात आती है, मेरा प्राथमिक मुद्दा यह है कि सारांश मुझे "व्हाट्स" के बजाय "व्हाट्स" देता है।
जेसन बेकर


जवाबों:


363

प्रॉक्सी समर्थन और मेजबान क्षेत्र:

HTTP 1.1 में युक्ति द्वारा एक आवश्यक होस्ट हेडर है।

HTTP 1.0 को आधिकारिक तौर पर एक होस्ट हेडर की आवश्यकता नहीं है, लेकिन यह एक को जोड़ने के लिए चोट नहीं करता है, और कई एप्लिकेशन (प्रॉक्सी) प्रोटोकॉल वर्जन की परवाह किए बिना होस्ट हेडर को देखने की उम्मीद करते हैं।

उदाहरण:

GET / HTTP/1.1
Host: www.blahblahblahblah.com

यह शीर्षलेख उपयोगी है क्योंकि यह आपको प्रॉक्सी सर्वर के माध्यम से संदेश भेजने की अनुमति देता है, और यह भी क्योंकि आपका वेब सर्वर एक ही सर्वर पर विभिन्न साइटों के बीच अंतर कर सकता है।

तो इसका मतलब है अगर आपके पास blahblahlbah.com और helohelohelo.com दोनों एक ही आईपी की ओर इशारा करते हैं। आपका वेब सर्वर क्लाइंट मशीन को किस साइट को अलग करना है, यह जानने के लिए होस्ट फ़ील्ड का उपयोग कर सकता है।

लगातार कनेक्शन:

HTTP 1.1 आपको लगातार कनेक्शन देने की अनुमति देता है जिसका अर्थ है कि आप एक ही HTTP कनेक्शन पर एक से अधिक अनुरोध / प्रतिक्रिया दे सकते हैं।

HTTP 1.0 में आपको प्रत्येक अनुरोध / प्रतिक्रिया जोड़ी के लिए एक नया कनेक्शन खोलना था। और प्रत्येक प्रतिक्रिया के बाद कनेक्शन बंद हो जाएगा। यह टीसीपी स्लो स्टार्ट की वजह से कुछ बड़ी दक्षता समस्याओं को जन्म देता है ।

विकल्प विधि:

HTTP / 1.1 विकल्प विधि का परिचय देता है। एक HTTP क्लाइंट HTTP सर्वर की क्षमताओं को निर्धारित करने के लिए इस पद्धति का उपयोग कर सकता है। इसका उपयोग ज्यादातर वेब अनुप्रयोगों में क्रॉस ओरिजिनल रिसोर्स शेयरिंग के लिए किया जाता है।

कैशिंग:

HTTP 1.0 में हेडर के माध्यम से कैशिंग के लिए समर्थन था: यदि-संशोधित-चूंकि।

HTTP 1.1 कैशिंग समर्थन पर 'एंटिटी टैग' नामक किसी चीज़ का उपयोग करके बहुत विस्तार करता है। यदि 2 संसाधन समान हैं, तो उनके पास एक ही इकाई टैग होंगे।

HTTP 1.1 में if-Unmodified-चूंकि, if-Match, if-none-match-सशर्त शीर्ष लेख शामिल हैं।

कैशे-कंट्रोल हेडर की तरह कैशिंग से संबंधित और भी अतिरिक्त हैं।

100 जारी स्थिति:

HTTP / 1.1 100 Continue में एक नया रिटर्न कोड है। यह क्लाइंट को एक बड़ा अनुरोध भेजने से रोकने के लिए है, जब उस क्लाइंट को यह भी सुनिश्चित नहीं है कि सर्वर अनुरोध को संसाधित कर सकता है, या अनुरोध को संसाधित करने के लिए अधिकृत है। इस मामले में ग्राहक केवल हेडर भेजता है, और सर्वर क्लाइंट को 100 जारी रखने के लिए कहेगा, शरीर के साथ आगे बढ़ें।

बहुत अधिक:

  • डाइजेस्ट ऑथेंटिकेशन और प्रॉक्सी ऑथेंटिकेशन
  • अतिरिक्त नई स्थिति कोड
  • चंचल अंतरण एन्कोडिंग
  • कनेक्शन हैडर
  • बढ़ा हुआ संपीड़न समर्थन
  • बहुत अधिक।

15
ध्यान दें कि बहुत सारे सर्वर / प्रॉक्सी जो दावा करते हैं कि वे HTTP / 1.0 चाहते हैं, यदि आप होस्ट हेडर को छोड़ देते हैं तो बहुत परेशान होंगे।
पॉल टॉम्बलिन

2
HTTP-1.0 में सामग्री-एन्कोडिंग हेडर के माध्यम से संपीड़न के लिए समर्थन है। जैसा कि पॉल ने उल्लेख किया है, मैं होस्ट हेडर भेजने के लिए किसी भी HTTP / 1.0 क्लाइंट को निश्चित रूप से सुझाऊंगा, क्योंकि ऐसा करने के लिए कड़ाई से निषिद्ध नहीं है और चीजें अधिक बार काम करेंगी जैसा कि आप उनसे उम्मीद करते हैं। अन्यथा, यह मृत है।
cpm

@ पाओल समाधि: धन्यवाद मैंने इस जानकारी को जोड़ा।
ब्रायन आर। बॉन्डी

2
"यदि आपके पास blahblahlbah.com और helohelohelo.com है, तो दोनों एक ही आईपी की ओर इशारा करते हैं। आपके वेब सर्वर क्लाइंट मशीन को कौन सी साइट को अलग करने के लिए होस्ट फ़ील्ड का उपयोग कर सकते हैं।" तो क्या होता है जब एक HTTP 1.0 क्लाइंट हमें अलग करने के लिए कोई मेजबान क्षेत्र देता है?
पचेरियर

@ स्पेसर आमतौर पर किसी प्रकार का डिफ़ॉल्ट पृष्ठ होता है; यह सर्वर पर निर्भर करता है।
एंड्रयू लैंबर्ट

14

 HTTP 1.0 (1994)

  • यह अभी भी उपयोग में है
  • क्लाइंट द्वारा उपयोग किया जा सकता है जो chunked (या संपीड़ित) सर्वर उत्तरों से निपट नहीं सकता है

 HTTP 1.1 (1996- 2015)

  • 1.0 संस्करण के लिए कई एक्सटेंशन को औपचारिक बनाता है
  • लगातार और पाइपलाइन कनेक्शन का समर्थन करता है
  • समर्थन किया तबादला, संपीड़न / विघटन
  • आभासी होस्टिंग का समर्थन करता है (एक एकल आईपी पते के साथ एक सर्वर जो कई डोमेन की मेजबानी करता है)
  • कई भाषाओं का समर्थन करता है
  • बाइट-रेंज स्थानांतरण का समर्थन करता है; बाधित डेटा ट्रांसफर को फिर से शुरू करने के लिए उपयोगी है

HTTP 1.1 HTTP 1.0 का संवर्द्धन है। निम्नलिखित चार प्रमुख सुधारों को सूचीबद्ध करता है:

  1. एक ही आईपी पते से कई डोमेन की अनुमति देकर आईपी पते का कुशल उपयोग।

  2. एक वेब ब्राउज़र को एक ही लगातार कनेक्शन पर कई अनुरोध भेजने की अनुमति देकर तेज़ प्रतिक्रिया।

  3. गतिशील रूप से जनरेट किए गए पृष्ठों के लिए तेज़ प्रतिक्रिया, chunked एन्कोडिंग के लिए समर्थन द्वारा, जो इसकी कुल लंबाई ज्ञात होने से पहले प्रतिक्रिया भेजने की अनुमति देता है।
  4. कैश समर्थन को जोड़कर तेज़ प्रतिक्रिया और महान बैंडविड्थ बचत।

9

तुच्छ अनुप्रयोगों के लिए (उदाहरण के लिए छिटपुट रूप से वेब-सक्षम थर्मामीटर से तापमान मान प्राप्त करना) HTTP 1.0 क्लाइंट और सर्वर दोनों के लिए ठीक है। आप कोड की लगभग 20 पंक्तियों में एक नंगे हड्डियों वाले सॉकेट-आधारित HTTP 1.0 क्लाइंट या सर्वर लिख सकते हैं।

अधिक जटिल परिदृश्यों के लिए HTTP 1.1 जाने का रास्ता है। अधिक जटिल HTTP 1.1 प्रोटोकॉल की पेचीदगियों से निपटने के लिए कोड आकार में 3 से 5 गुना वृद्धि की अपेक्षा करें। जटिलता मुख्य रूप से आती है, क्योंकि HTTP 1.1 में आपको विभिन्न हेडर बनाने, पार्स करने और प्रतिक्रिया देने की आवश्यकता होगी। आप क्लाइंट के HTTP लाइब्रेरी का उपयोग करके या वेब एप्लिकेशन सर्वर का उपयोग करके इस जटिलता से अपने आवेदन को ढाल सकते हैं।


7

एक मुख्य संगतता समस्या लगातार कनेक्शन के लिए समर्थन है । मैंने हाल ही में एक सर्वर पर काम किया है जो HTTP / 1.1 का "समर्थन" करता है, फिर भी क्लाइंट द्वारा HTTP / 1.0 अनुरोध भेजे जाने पर कनेक्शन को बंद करने में विफल रहा। HTTP / 1.1 का समर्थन करने वाले सर्वर को लिखते समय, सुनिश्चित करें कि यह HTTP / 1.0-केवल क्लाइंट के साथ भी अच्छा काम करता है।


8
क्या HTTP / 1.1 के लिए हमें HTTP / 1.0 संगत होना चाहिए?
पचेरियर

@ ट्रॉय - क्या यह HTTP 1.1 अनुरोध की प्रतिक्रिया भेजने के लिए वैध है और तुरंत बाद कनेक्शन (सॉकेट जो सर्वर पर अनुरोध पढ़ा गया था) को बंद कर देता है? व्यावहारिक रूप से इसका अर्थ है कि सर्वर HTTP 1.0
गाइ अवराम

5

पहले अंतर में से एक जिसे मैं अपने सिर के ऊपर से याद कर सकता हूं, एक ही सर्वर में कई डोमेन चल रहे हैं, आंशिक संसाधन पुनर्प्राप्ति, यह आपको संसाधन के डाउनलोड को पुनः प्राप्त करने और गति प्रदान करने की अनुमति देता है (यह वही है जो लगभग हर डाउनलोड त्वरक करता है)।

यदि आप एक वेबसाइट या इसी तरह की तरह एक आवेदन विकसित करना चाहते हैं, तो आप मतभेदों के बारे में बहुत ज्यादा चिंता की जरूरत नहीं है, लेकिन आप चाहिए बीच का अंतर जानना GETऔर POSTकम से कम क्रियाओं।

अब यदि आप एक ब्राउज़र विकसित करना चाहते हैं तो हाँ, आपको पूरा प्रोटोकॉल जानना होगा और साथ ही यदि आप एक HTTP सर्वर विकसित करने का प्रयास कर रहे हैं।

यदि आप केवल HTTP प्रोटोकॉल को जानने के इच्छुक हैं, तो मैं आपको 1.0 के बजाय HTTP / 1.1 से शुरू करने की सलाह दूंगा।


1
मेथिंक्स जेसन पहले से ही GET और POST के बीच अंतर को जानता है अगर वह जमीन से अपना HTTP सर्वर / ऐप बनाने पर विचार कर रहा है। :)
केव

1
मैंने वास्तव में एक वेबसर्वर के साथ कुछ काम किया है जो वर्तमान में केवल HTTP 1.0 का समर्थन करता है, मैं बस सोच रहा था कि 1.1 समर्थन को जोड़ने में क्या शामिल है।
जेसन बेकर

2

HTTP 1.1 हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल का नवीनतम संस्करण है, जो वर्ल्ड वाइड वेब एप्लिकेशन प्रोटोकॉल है जो इंटरनेट के टीसीपी / आईपी सूट प्रोटोकॉल के शीर्ष पर चलता है। HTTP 1.0 की तुलना में, HTTP 1.1 मूल HTTP की तुलना में वेब पृष्ठों का तेजी से वितरण प्रदान करता है और वेब ट्रैफ़िक को कम करता है।

वेब ट्रैफ़िक उदाहरण: उदाहरण के लिए, यदि आप किसी सर्वर तक पहुंच बना रहे हैं। उसी समय इतने सारे उपयोगकर्ता डेटा के लिए सर्वर का उपयोग कर रहे हैं, फिर सर्वर को हैंग करने का मौका है। यह वेब ट्रैफिक है।


1

HTTP 1.1 अपने विनिर्देश में होस्ट हेडर के साथ आता है जबकि HTTP 1.0 में आधिकारिक तौर पर होस्ट हेडर नहीं है, लेकिन यह एक को जोड़ने से इनकार नहीं करता है।

होस्ट हेडर उपयोगी है क्योंकि यह क्लाइंट को पूरे प्रॉक्सी सर्वर पर एक संदेश भेजने की अनुमति देता है, और 1.0 और 1.1 संस्करणों के बीच प्रमुख अंतर हैं:

  1. HTTP 1.1 लगातार कनेक्शन के साथ आता है जो परिभाषित करता है कि हम एक ही HTTP कनेक्शन पर एक से अधिक अनुरोध या प्रतिक्रिया दे सकते हैं।
  2. जबकि HTTP 1.0 में आपको प्रत्येक अनुरोध और प्रतिक्रिया के लिए एक नया कनेक्शन खोलना होगा
  3. एचटीटीपी 1.0 में इसका प्रैग्मेंट होता है जबकि एचटीटी 1.1 में कैशे-कंट्रोल होता है यह प्रैग्म के समान है

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