يريد أحدهم فحص ما يرسله العملاء عبر النفق، فيجد خطاف الاتصال في الوثائق، ويبدأ في كتابة نص برمجي لن يتلقى حزمة واحدة أبدا. الخطاف حقيقي ومفيد، لكن وحدة عمله جلسة لا بايت. واختيار المكون الصحيح مقارنة بين ثلاثة مواضع يمكن أن يحدث فيها العمل، والسؤال الفاصل هو أي وحدة يستطيع كل منها أن يراها فعلا.

ما يتلقاه الخطاف، وما لا يتلقاه أبدا

يعمل خطاف اتصال العميل مرة واحدة عندما ينشئ عميل موثق جلسة، في سياق عملية الخادم، بوسائط موثقة وقيم بيئة مثل الاسم الشائع والعنوان المخصص. ويستطيع كتابة إعدادات خاصة بكل عميل، أو اتخاذ قرار قبول، أو تخصيص مورد خارجي، أو تسجيل أن الاتصال قد حدث. أما ما لا يستطيع فعله فهو رصد حركة المرور، لأنه بحلول اللحظة التي تعبر فيها أول حزمة النفق يكون الخطاف قد عاد بالفعل.

وهذا ليس قيدا يلتف عليه. فدالة رد نداء للجلسة تحاول معالجة تدفق كان عليها أن تعمل طوال عمر الاتصال، وعقد البرمجة النصية للخادم الخفي ليس مبنيا على هذا الشكل. اسأل عما وضع الخطاف من أجله قبل أن تقرر أنه يعترض طريقك.

إعادة الاتصال مهمة أيضا. فالعميل الذي ينقطع ثم يتصل من جديد هو جلسة جديدة، لذلك يجب أن يكون كل ما يخصصه الخطاف متكرر الأثر بأمان، أو مقترنا بحدث قطع اتصال ينظف بعده. والحالة التي تتسرب عند كل إعادة اتصال هي الخطأ الأول المعتاد في أي تصميم قائم على الخطاف.

سياسة الجلسة مكانها الخطاف

القبول هو عمل الخطاف الطبيعي. أنت تعرف من اتصل، ومن أين، وبأي شهادة، ويمكنك أن تقرر هل تمضي هذه الجلسة أو ترفض. ذلك القرار رخيص، ويحدث مرة واحدة، ولا يتطلب النظر إلى بايت واحد من الحمولة.

إسناد الإعدادات يناسب الشكل نفسه. يستطيع الخطاف اختيار عنوان العميل، أو دفع خيارات تلائم تلك الهوية، أو كتابة جزء يقرأه الخادم لهذا العميل. ولأن القرار لكل جلسة، يبقى مفهوما عندما يحدث خطأ ما ويضطر أحدهم إلى تفسير سبب حصول عميل معين على عنوان معين.

التسجيل هو الملاءمة الثالثة. فقيد تدقيق يقول إن جلسة قبلت، مع هويتها ووقتها، مكانه هنا بالضبط. وهو ليس سجل حركة مرور ولا ينبغي أن يدعي ذلك. وإذا سأل أحدهم لاحقا عما فعله عميل داخل النفق، فالجواب يجب أن يأتي من مكان آخر.

عمل الحزم مكانه مسار الحزم

إذا كان المطلوب رؤية البايتات أثناء عبورها أو تعديلها، فيجب أن يكون المكون في مسار التمرير: قاعدة جدار ناري مع طابور، أو خطاف تحكم في الحركة، أو ممرر في فضاء المستخدم. تلك الآليات ترى الحزم، ولها حالتها وأنماط فشلها وأدائها.

تعديل الحمولة في تلك الطبقة أصعب من قراءتها. تغيير بايت واحد قد يبطل حقل طول أو مجموع تحقق أو آلة حالة بروتوكول، والنفق من الطبقة الثالثة لا يحميك من أي من ذلك. كل ما يعنيه أنه ليست الترويسات الخارجية هي التي تعدلها. احسب لتلك الأعمال التصحيحية قبل أن تعد أحدا بإعادة كتابة المحتوى.

التقاط الواجهة هو أرخص أداة في هذه الفئة، وهو رصد لا تحرير. يخلط الناس بينهما لأن كليهما يوصف بأنه رؤية حركة المرور، لكن الالتقاط ينتج ملفا ومسار الحزم ينتج قرارا.

تغييرات التطبيق مكانها التطبيق

حين يكون الهدف تغيير ما يحتويه طلب أو كيفية تشكيل استجابة، فالمكان الصحيح هو الخدمة نفسها أو وكيل ينهي البروتوكول عن قصد. تلك المكونات تفهم أصلا الطلبات والاستجابات والمصادقة التي يتوقعها التطبيق، وهي بالضبط السياق الذي ينقص مرشح الحزم.

ترجمة العناوين في أسفل هذه القائمة لسبب. فهي تعيد كتابة العناوين والمنافذ وتترك الحمولة كما هي، لذلك ليست أداة محتوى مهما تكرر ظهورها في وصفة تذكر المحتوى أيضا.

الفصل بين هذه الحدود هو ما يجعل التصميم قابلا للشرح. سياسة الجلسة في الخطاف، ومعالجة الحزم على مسار الحزم، وتغيير التطبيق حيث ينهى البروتوكول عن قصد: ثلاث جمل تصلح أيضا قائمة تحقق للمراجعة.

حيث لا يزال TLS ينهي المحادثة

يبقى شيء واحد بعد كل ما سبق: الحركة داخل النفق التي تحمل HTTPS تحتفظ بتشفير النقل الخاص بها. فحيازة مفاتيح VPN تعطيك حزمة IP الداخلية، ولا تعطيك مفاتيح جلسة الموقع في الطرف الآخر.

لهذا لا يستطيع الخطاف فحص المحتوى حتى من حيث المبدأ، ولهذا يرى مسار الحزم نصا مشفرا ما لم يكن النشر ينهي TLS الداخلي عن قصد. عقد البرمجة النصية يصف ما يعطاه الخطاف؛ ولا يقول شيئا عن الحمولة لأنه لا توجد حمولة تعطى.

مقالات ذات صلة