कोई यह देखना चाहता है कि क्लाइंट टनल से क्या भेजते हैं, दस्तावेज़ों में कनेक्ट हुक पाता है, और ऐसी स्क्रिप्ट लिखना शुरू करता है जिसे कभी एक भी पैकेट नहीं मिलेगा। हुक असली और उपयोगी है, पर उसकी कार्य इकाई सत्र है, बाइट नहीं। सही घटक चुनना उन तीन जगहों की तुलना है जहाँ काम हो सकता है, और निर्णायक प्रश्न यह है कि हर एक वास्तव में कौन-सी इकाई देख सकता है।

हुक क्या पाता है, और क्या कभी नहीं पाता

क्लाइंट-कनेक्ट हुक एक बार चलता है जब प्रमाणित क्लाइंट सत्र स्थापित करता है, सर्वर की प्रक्रिया संदर्भ में, दस्तावेज़ीकृत आर्ग्युमेंट और सामान्य नाम तथा आवंटित पता जैसे पर्यावरण मानों के साथ। यह प्रति-क्लाइंट कॉन्फ़िगरेशन लिख सकता है, प्रवेश निर्णय ले सकता है, बाहरी संसाधन आवंटित कर सकता है, या दर्ज कर सकता है कि कनेक्शन हुआ। जो यह नहीं कर सकता वह ट्रैफ़िक देखना है, क्योंकि जब पहला पैकेट टनल पार करता है तब हुक लौट चुका होता है।

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

फिर से जुड़ना भी मायने रखता है। जो क्लाइंट टूटकर दोबारा जुड़ता है वह नया सत्र है, इसलिए हुक जो कुछ आवंटित करता है वह निष्क्रिय-पुनरावृत्त होना चाहिए या सफ़ाई करने वाली डिस्कनेक्ट घटना के साथ जुड़ा होना चाहिए। हर पुनः कनेक्शन पर रिसने वाली स्थिति हुक आधारित डिज़ाइन की सामान्य पहली बग है।

सत्र नीति हुक में ही रहती है

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

कॉन्फ़िगरेशन आवंटन उसी आकार में फ़िट बैठता है। हुक क्लाइंट का पता चुन सकता है, उस पहचान के अनुरूप विकल्प भेज सकता है, या ऐसा खंड लिख सकता है जिसे सर्वर इस क्लाइंट के लिए पढ़ता है। चूँकि निर्णय प्रति सत्र है, जब कुछ गलत होता है और किसी को समझाना पड़ता है कि किसी विशेष क्लाइंट को विशेष पता क्यों मिला, तब यह समझने योग्य बना रहता है।

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

पैकेट का काम पैकेट पथ पर है

अगर आवश्यकता उड़ते बाइट देखने या बदलने की है, तो घटक को अग्रेषण पथ पर होना चाहिए: क्यू वाला फ़ायरवॉल नियम, ट्रैफ़िक नियंत्रण हुक, या उपयोगकर्ता अंतरिक्ष का अग्रेषक। वे तंत्र पैकेट देखते हैं, और उनकी अपनी स्थिति, अपने विफलता मोड और अपनी प्रदर्शन प्रोफ़ाइल है।

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

इंटरफ़ेस कैप्चर इस श्रेणी का सबसे सस्ता उपकरण है, और यह संपादक नहीं, अवलोकन है। लोग दोनों को मिला देते हैं क्योंकि दोनों को ट्रैफ़िक देखना कहा जाता है, पर कैप्चर फ़ाइल बनाता है और पैकेट पथ निर्णय बनाता है।

एप्लिकेशन परिवर्तन एप्लिकेशन में ही होते हैं

जब लक्ष्य यह बदलना हो कि अनुरोध में क्या है या प्रतिक्रिया कैसे बनती है, तब सही जगह सेवा स्वयं या ऐसा प्रॉक्सी है जो प्रोटोकॉल जानबूझकर समाप्त करता है। वे घटक अनुरोध, प्रतिक्रिया और वह प्रमाणीकरण पहले से समझते हैं जो एप्लिकेशन अपेक्षा करता है, और वही संदर्भ पैकेट फ़िल्टर के पास नहीं है।

पता अनुवाद इस सूची के नीचे किसी कारण से है। यह पते और पोर्ट फिर से लिखता है और पेलोड को अछूता छोड़ता है, इसलिए यह सामग्री का उपकरण नहीं है, चाहे वह ऐसी विधि में कितनी भी बार आए जो सामग्री का भी उल्लेख करती हो।

इन सीमाओं को अलग रखना ही डिज़ाइन को समझाने योग्य बनाता है। हुक में सत्र नीति, पैकेट पथ पर पैकेट प्रबंधन, और जहाँ प्रोटोकॉल जानबूझकर समाप्त होता है वहाँ एप्लिकेशन परिवर्तन: तीन वाक्य जो समीक्षा के चेकलिस्ट का काम भी करते हैं।

जहाँ TLS अब भी बातचीत समाप्त करता है

ऊपर की सब बातों में से एक चीज़ बची रहती है: टनल के भीतर का जो ट्रैफ़िक HTTPS ले जाता है वह अपना परिवहन एन्क्रिप्शन रखता है। VPN की कुंजियाँ रखने से आपको भीतरी IP पैकेट मिलता है और दूसरे छोर की वेबसाइट की सत्र कुंजियाँ नहीं मिलतीं।

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

संबंधित लेख