2008-10-29 18 views
210

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

HTTP/1,1 (1997-1999)

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

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

+2

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

+3

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

+0

यह महत्वपूर्ण अंतरों का एक अच्छा सारांश है: [http://www.research.att.com/~bala/papers/h0vh1.html ](http://www.research.att.com/~bala/ कागजात/h0vh1.html) – Kev

उत्तर

287

प्रॉक्सी समर्थन और होस्ट क्षेत्र:

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 में आपको प्रत्येक अनुरोध/प्रतिक्रिया जोड़ी के लिए एक नया कनेक्शन खोलना पड़ा। और प्रत्येक प्रतिक्रिया के बाद कनेक्शन बंद हो जाएगा। इससे TCP Slow Start की वजह से कुछ बड़ी दक्षता समस्याओं का कारण बनता है।

विकल्प विधि:

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

कैशिंग:

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

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

HTTP 1.1 भी if-Unmodified-since, if-match, if-None-match सशर्त हेडर जोड़ता है।

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

100 स्थिति जारी रखें:

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

बहुत अधिक:

  • डाइजेस्ट प्रमाणीकरण और प्रॉक्सी प्रमाणीकरण
  • अतिरिक्त नई स्थिति कोड
  • chunked स्थानांतरण एन्कोडिंग
  • कनेक्शन हैडर
  • बढ़ी संपीड़न समर्थन
  • बहुत भी बहुत कुछ ।
+10

ध्यान दें कि बहुत सारे सर्वर/प्रॉक्सी जो दावा करते हैं कि वे HTTP/1.0 चाहते हैं, अगर आप चूक जाते हैं तो बहुत परेशान हो जाएंगे होस्ट हेडर। –

+2

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

+0

धन्यवाद, अद्यतन संपीड़न नोट –

5

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

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

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

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

+1

मेथिंक जेसन पहले ही जीईटी और पोस्ट के बीच का अंतर जानता है अगर वह जमीन से अपना स्वयं का HTTP सर्वर/ऐप बनाने पर विचार कर रहा है। :) – Kev

+1

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

7

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

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

+3

कोड की 20 लाइनें? – Pacerier

+1

के बारे में: http://www.cs.rpi.edu/~moorthy/Courses/os98/Pgms/socket.html – Benxamin

6

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

+7

क्या HTTP/1.1 हमें HTTP/1.0 संगत होने की आवश्यकता है? – Pacerier

+0

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

10
+10

लागू करता है, जबकि यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, [यह बेहतर होगा] (// meta.stackoverflow.com/q/8259) यहां उत्तर के आवश्यक हिस्सों को शामिल करने के लिए, और प्रदान करें संदर्भ के लिए लिंक। – Tim

+1

गंभीरता से, बस यहां कुछ और जोड़ें - यह अधिक जानकारी जोड़ने के लिए चोट पहुंचाने वाला नहीं है! – Tim

6

 HTTP 1,0 (1994)

  • यह
  • एक ग्राहक है कि chunked (या संकुचित) सर्वर के साथ सौदा नहीं कर सकते द्वारा इस्तेमाल किया जा सकता भी उपयोग में है उत्तर

 HTTP 1.1 (1 996-2015)

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

HTTP 1.1 HTTP 1.0 का एक वृद्धि है। निम्न सूची चार प्रमुख सुधार:

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

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

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

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

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

0

1.0 की तुलना में, 1.1 वेब ट्रैफ़िक

संबंधित मुद्दे