Webship ब्लॉग पर वापस

Webship इंजीनियरिंग

Webship: दुनिया का सबसे RFC-अनुकूल वेब सर्वर

Webship RFC आवश्यकताओं को HTTP/1.1, HTTP/2, HTTP/3, QUIC, TLS, कैशिंग, रिवर्स प्रॉक्सी, WebTransport, ACME, और नए QUERY मेथड में स्पष्ट व्यवहार में बदल देता है। पूरी 52-RFC मानक मानचित्र की खोज करें।

वेब सही समझौतों द्वारा एक साथ रखा जाता है। एक कंटेंट-लंबाई फ़ील्ड का हर हॉप पर समान अर्थ होना चाहिए। किसी कैश को ऐसी प्रतिक्रिया को पुन: उपयोग नहीं करना चाहिए जिसमें मान्यता की आवश्यकता हो। एक गलत तरीके से बनाई गई HTTP/3 फ़ील्ड सेक्शन को सही सीमा पर विफल होना चाहिए। एक सुरक्षित विधि को रिवर्स प्रॉक्सी से गुजरने के बाद भी सुरक्षित रहना चाहिए।

Webship 1.3.1 एक नियम के इर्द-गिर्द बना है: गति तभी मायने रखती है जब बाइट्स अपनी अर्थ बनाए रखें।

यही कारण है कि हम Webship को दुनिया का सबसे RFC-अनुकूल सामान्य प्रयोजन वाला वेब सर्वर बताते हैं। यह एक इंजीनियरिंग दावा है जिसके लिए एक स्पष्ट सीमा है, न कि यह दावा कि हर RFC में हर वैकल्पिक फ़ीचर मौजूद है। नीचे का मानचित्र 52 RFCs के नाम दर्शाता है जो Webship के सक्रिय सर्वर व्यवहार या इसके स्वामित्व वाले प्रोटोकॉल मूलभूत ढाँचे को प्रभावित करते हैं। वर्तमान मानक पहले आते हैं। अप्रचलित दस्तावेज़ों को संगतता वंश के रूप में पहचाना जाता है। ड्राफ्ट विनिर्देशों को RFC के रूप में पुनः लेबल नहीं किया जाता।

अनुकूलता व्यवहार है, कोई बैज नहीं

Webship उन स्थानों पर मानक लागू करता है जहाँ उत्पादन सर्वर अक्सर अस्पष्ट हो जाते हैं:

  • HTTP/1.1 फ्रेमिंग विरोधाभासी लंबाई, अवैध ट्रांसफर कोडिंग, अत्यधिक बड़े अनुरोध लक्ष्य, विकृत चंक्स और अनुरोध-समगलिंग रूपों को अस्वीकार करता है।
  • HTTP/2 और HTTP/3 निषिद्ध कनेक्शन फ़ील्ड को अस्वीकार करते हैं, छद्म-फ़ील्ड को मान्य करते हैं, संपीड़ित फ़ील्ड अनुभागों को सीमाबद्ध करते हैं, और स्ट्रीम त्रुटियों को कनेक्शन त्रुटियों से अलग रखते हैं।
  • स्टेटिक फ़ाइलें HEAD सिमांटिक्स, वैलिडेटर्स, प्रीकंडीशन क्रम, बाइट रेंज, रीडायरेक्ट और सामग्री प्रकारों को बनाए रखती हैं।
  • रिवर्स प्रॉक्सी फ्रेमिंग, रद्दीकरण, ट्रेलर्स, अपग्रेड, सुरक्षित पुनः प्रयास, और फॉरवर्डिंग पहचान को संरक्षित करता है जबकि हॉप-बाय-हॉप फ़ील्ड्स को हटा देता है।
  • कैश उम्र, ताजगी, पुनःसत्यापन, Vary, अमान्यता, और पुराने उपयोग के नियमों की गणना करता है बजाय इसके कि कैशिंग को केवल कुंजी-मूल्य शॉर्टकट के रूप में माना जाए।
  • TLS, QUIC, ACME, प्रारंभिक डेटा, और WebTransport सीमित स्थिति और स्पष्ट विफलता नीति का उपयोग करते हैं।

फास्ट पाथ पर वही नियम लागू होते हैं। Webship एक “सही” पथ और एक अलग बेंचमार्क पथ तय नहीं करता है।

HTTP सेमांटिक्स, फ्रेमिंग, कैशिंग, और प्रॉक्सीइंग

  • RFC 3986 — यूनिफ़ॉर्म रिसोर्स आइडेंटिफ़ायर (URI): सामान्य व्याकरण. Webship कैश अमान्यकरण निर्णयों से पहले डॉट सेगमेंट्स सहित सापेक्ष Location और Content-Location संदर्भों को सामान्य करता है।
  • RFC 6455 — वेबसॉकेट प्रोटोकॉल. रिवर्स-प्रॉक्सी अपग्रेड्स वेबसॉकेट की, स्वीकार मान, सबप्रोटोकॉल, एक्सटेंशन्स, और टनल ट्रांज़िशन को मान्य करते हैं।
  • RFC 6585 — अतिरिक्त HTTP स्थिति कोड. अत्यधिक बड़े अनुरोध फ़ील्ड्स के लिए परिभाषित 431 प्रतिक्रिया का उपयोग किया जाता है जहाँ HTTP प्रतिक्रिया अभी भी संभव है।
  • RFC 6797 — HTTP स्ट्रिक्ट ट्रांसपोर्ट सिक्योरिटी. स्ट्रिक्ट-ट्रांसपोर्ट-सिक्योरिटी केवल सुरक्षित ट्रांसपोर्ट पर ही भेजा जाता है और कभी भी ट्रांसपोर्ट-न्यूट्रल कैश एंट्री से स्पष्ट पाठ HTTP पर नहीं लीक होता।
  • RFC 7235 — HTTP/1.1 प्रमाणीकरण. प्रमाणीकरण योजना टोकन केस-असंवेदी रूप में पार्स किए जाते हैं, जिसमें संरक्षित MCP नियंत्रण सतह शामिल है। इसका सामान्य HTTP अर्थशास्त्र अब RFC 9110 में रहता है।
  • [RFC 7239 — अग्रेषित HTTP एक्सटेंशन] (https://www.rfc-editor.org/rfc/rfc7239.html). ऑपरेटर एक मानक-आधारित अग्रेषित फ़ील्ड, लीगेसी X-अग्रेषित फ़ील्ड, दोनों, या न तो का चयन कर सकते हैं; अविश्वसनीय इनबाउंड पहचान फ़ील्ड पहले हटा दिए जाते हैं.
  • RFC 7540 — HTTP/2। इसे HTTP/2 संगतता विरासत के रूप में रखा गया है; सक्रिय HTTP/2 अनुबंध इसका उत्तराधिकारी है, RFC 9113।
  • RFC 7541 — HPACK: HTTP/2 के लिए हेडर संपीड़न. Webship के स्वामित्व वाले HTTP/2 स्टैक बाउंड्स डिकोडर की स्थिति और एन्कोडर तालिकाओं को HPACK वायर फॉर्मेट और हफ़मैन कोडिंग को संरक्षित करते हुए प्रबंधित करता है।
  • RFC 7838 — HTTP वैकल्पिक सेवाएँ. Alt-Svc HTTP/3 एंडपॉइंट का विज्ञापन करता है बिना URL द्वारा प्रदर्शित मूल को बदले।
  • RFC 8441 — HTTP/2 के साथ WebSockets बूटस्ट्रैपिंग। Webship डाउनस्ट्रीम विस्तारित-CONNECT नेगोशिएशन फाउंडेशन का समर्थन करता है। यह यह नहीं दिखावा करता कि कोई HTTP/1.1 अपस्ट्रीम HTTP/2 विस्तारित CONNECT लागू करता है; असमर्थित अपस्ट्रीम संयोजन स्पष्ट रूप से असफल हो जाते हैं।
  • RFC 8470 — HTTP में प्रारंभिक डेटा का उपयोग. प्रारंभिक अनुरोध जिन्हें Webship संसाधित नहीं करेगा, उन्हें असुरक्षित पुन:प्रदर्शन अनुमानों के साथ प्रबंधित करने के बजाय 425 Too Early प्राप्त होता है।
  • RFC 8941 — HTTP के लिए संरचित फ़ील्ड मान. HTTP प्राथमिकता मान संरचित-फील्ड शब्दकोश पार्सिंग का उपयोग करते हैं; खराब स्वरूपित ऐच्छिक फ़ील्ड को पूरी तरह से अनदेखा किया जाता है।
  • RFC 9110 — HTTP अर्थशास्त्र. मेथड्स, स्थिति कोड, फील्ड, वैलिडेटर्स, प्रीकंडीशंस, रीडायरेक्ट्स, कंटेंट मेटाडेटा, HEAD, CONNECT, OPTIONS, और रेंज अर्थशास्त्र सभी प्रोटोकॉल संस्करणों में एक ही वर्तमान अनुबंध साझा करते हैं।
  • RFC 9111 — HTTP Caching. Webship संशोधित आयु, स्पष्ट ताजगी, Vary, केवल-यदि-कैश्ड, must-revalidate, proxy-revalidate, सुरक्षित अव्यवस्थित उपयोग, और प्रभावी और संबंधित URIs की अमान्यकरण को लागू करता है।
  • RFC 9112 — HTTP/1.1. अनुरोध-पंक्ति, क्षेत्र, बॉडी-लंबाई, ट्रांसफर-कोडिंग, चंक, ट्रेलर, स्थायित्व, और क्लोज-सीमांक नियम एप्लिकेशन डिस्पैच से पहले लागू किए जाते हैं।
  • RFC 9113 — HTTP/2. छद्म-फ़ील्ड क्रम, प्राधिकरण, निषिद्ध कनेक्शन फ़ील्ड, TE प्रतिबंध, स्ट्रीम जीवनचक्र, प्रवाह नियंत्रण, GOAWAY, और त्रुटि दायरा Webship के स्वामित्व वाले H2 पथ द्वारा संभाले जाते हैं।
  • RFC 9114 — HTTP/3. Webship अपने अनुरोध, नियंत्रण-स्ट्रीम, SETTINGS, महत्वपूर्ण-स्ट्रीम, रद्दीकरण, और स्ट्रीम-के-विपरीत-संयोजन त्रुटि पथों का स्वामित्व रखता है जो इसके HTTP/3 सर्वर द्वारा उपयोग किए जाते हैं।
  • RFC 9204 — QPACK: HTTP/3 के लिए फील्ड कंप्रेशन. डायनमिक-टेबल की क्षमता विज्ञापित सीमा द्वारा सीमित होती है, इंस्ट्रक्शन स्ट्रीम शून्य क्षमता पर भी पार्स करने योग्य रहती हैं, और अवैध स्थिति आवश्यक QPACK त्रुटि बन जाती है।
  • RFC 9218 — HTTP के लिए विस्तारणीय प्राथमिकता योजना. अति आवश्यकता और क्रमिक वितरण मार्गदर्शन HTTP/3 शेड्यूलिंग जबकि अज्ञात प्राथमिकता पैरामीटर विस्तारणीय रहते हैं।
  • RFC 9220 — HTTP/3 के साथ वेब सॉकेट्स को बूटस्ट्रैप करना. Webship आधुनिक टनेल प्रोटोकॉल द्वारा उपयोग किए जाने वाले HTTP/3 विस्तारित-CONNECT SETTINGS आधार को लागू करता है; इसका मतलब यह नहीं है कि हर संभव CONNECT प्रोटोकॉल स्वीकार किया गया है।
  • RFC 9297 — HTTP Datagram और कैप्सूल प्रोटोकॉल. WebTransport सत्र सीमित कैप्सूल डिकोडिंग और HTTP Datagram संघ का उपयोग करते हैं, अज्ञात कैप्सूल को पार्सर विफलताओं के बजाय एक्सटेंशन पॉइंट के रूप में संभाला जाता है।
  • RFC 9421 — HTTP संदेश हस्ताक्षर. वैकल्पिक Ed25519 प्रतिक्रिया मूल स्रोत Webship रिलीज़ और कॉन्फ़िगरेशन पहचान को कवर कर सकता है बिना TLS या एप्लिकेशन प्रमाणीकरण को प्रतिस्थापित किए।
  • RFC 10008 — HTTP QUERY Method. Webship QUERY को सुरक्षित और एकरूपी (idempotent) मानता है, प्रॉक्सी के माध्यम से इसके बॉडी को संरक्षित करता है, कैश पहचान में बॉडी और प्रतिनिधित्व मेटाडेटा शामिल करता है, अनुमानित ताजगी को निषेध करता है, सशर्त और रेंज व्यवहार का समर्थन करता है, और केवल इसलिए कि QUERY का उपयोग किया गया था, कभी भी कैश को अमान्य नहीं करता।

QUIC ट्रांसपोर्ट और कंजेशन नियंत्रण

टीएलएस, प्रमाणपत्र, और स्वचालित प्रमाणपत्र प्रबंधन

WebTransport: किस चीज़ को मानकीकृत किया गया है, इसके बारे में सटीक

WebTransport पर HTTP/3 को पचासवें RFC के रूप में नहीं गिना जाता है। Webship 1.3.1 तक, इसका वायर मैपिंग ड्राफ्ट-ietf-webtrans-http3-16 ही बनी रहती है। Webship उस ड्राफ्ट को मानकीकृत HTTP/3, विस्तारित CONNECT, QUIC DATAGRAM, HTTP Datagram, और ऊपर नामित कैप्सूल लेयर्स के ऊपर लागू करता है। यह भी आवश्यक नेगोशियेटेड RESET_STREAM_AT एक्सटेंशन को लागू करता है ताकि जब WebTransport स्ट्रीम को रीसेट किया जाता है तो विश्वसनीय सत्र पहचाने जाने वाले प्रीफिक्स को बनाए रखा जा सके।

वह अंतर महत्वपूर्ण है। किसी ड्राफ्ट को RFC कहने से मानकों की संगतता सुधरती नहीं है। इसे स्पष्ट रूप से ड्राफ्ट को ट्रैक करके, इसे सामान्य HTTP पथों से अलग करके, हर विस्तार पर मंथन करके, हर सत्र संसाधन को सीमित करके और रद्द करने और विफलता व्यवहार का परीक्षण करके सुधारा जाता है।

उत्पादन में यह व्यापकता क्यों महत्वपूर्ण है

एक स्टैंडर्ड बग शायद ही कभी अलग होता है। गलत HSTS हैंडलिंग कैश सीमा को पार कर सकती है। एक खराब QPACK निर्देश अप्रासंगिक अनुरोधों को समाप्त कर सकता है। एक असुरक्षित प्रारंभिक-डेटा अनुमान किसी ऑपरेशन को दोहरा सकता है। एक QUERY कैश कुंजी जो अनुरोध बॉडी को छोड़ देती है, एक अलग क्वेरी का परिणाम वापस कर सकती है। एक प्रॉक्सी जो ट्रेलरों को हटाता है या रद्द करने को गलत हैंडल करता है, मौन रूप से एक एप्लिकेशन प्रोटोकॉल को बदल सकता है।

Webship की वास्तुकला इन सभी को जुड़े हुए मामलों के रूप में मानती है। पार्सर सीमाएं, सुरक्षा निरीक्षण, कैशिंग, रिवर्स प्रॉक्सीइंग, ट्रांसपोर्ट स्टेट, और इंस्ट्रूमेंटेशन स्पष्ट अनुबंध साझा करते हैं। परिणामस्वरूप, एक ऐसा सर्वर बनता है जो HTTP/1.1, HTTP/2, HTTP/3, स्थैतिक वितरण, रिवर्स प्रॉक्सीइंग, स्ट्रीमिंग, और WebTransport के बीच बिना प्रत्येक मोड को अलग शुद्धता की परिभाषा दिए, आसानी से स्थानांतरित हो सकता है।

दावे की पुष्टि करें

विश्वास पर किसी सर्वोच्चता को न लें। [Webship 1.3.1 डॉक्यूमेंटेशन](/docs/1.3.1) पढ़ें, कॉन्फ़िगरेशन और प्रोटोकॉल सीमाओं का निरीक्षण करें, और प्रकाशित व्यवहार को पुन: उत्पन्न करें। फिर [Webship डाउनलोड करें](/downloads) और उन किनारे मामलों का परीक्षण करें जो आपके सिस्टम के लिए महत्वपूर्ण हैं।