الخلاصة
- ميّزت RFC 817 بين طبقة موصوفة للاتصال مع النظراء ووحدة برمجية تنفذ العمل داخل المضيف. يجب أن يبقى العقد الخارجي ثابتاً، بينما يمكن لحد التنفيذ أن يقطع IP وTCP وفق فك تعدد الإرسال والمؤقتات وملكية الحالة.
- توفر العزلة قابلية الاستبدال وإعادة الاستخدام، لكنها قد تضيف حزماً ونسخاً وانتقالات سياق. يجوز لإشارة ضيقة ومؤقتة أن تجمع إقرار TCP وتحديث النافذة وصدى Telnet من دون أن تنقل سلطة النقل إلى التطبيق.
- يبدأ التحسين بقياس المسار المعتاد. يبرر الاختناق المثبت تخصصاً محلياً، ويبرر الحدث الشائع ترتيب البيانات لصالحه؛ أما أناقة الرسم والحالة النادرة فلا تكفيان لتغيير البنية.
تغيير المكان لا يلغي الحد
وضع البروتوكول في عملية عادية يخفف الحاجة إلى تعديل النواة، ويمنح المؤقتات والأفعال المعقدة بيئة تستطيع الانتظار. لكنه يجعل وصول الحزمة معلقاً على المجدول. وإذا كان البرنامج يريد أن يبدو كطرفية أو جهاز محلي، فقد يضطر إلى العودة إلى النواة عبر مسار إضافي، فتظهر في التنفيذ كلفة أخفاها مخطط التنظيم.
أما وضع البروتوكول داخل النواة فيوفر انتقالاً بين العمليات ويتكامل مباشرة مع الأجهزة. لكن أفعال المؤقت المعقدة لا تلائم دائماً مستوى المقاطعة: لا تستطيع الانتظار عادة، وقد تحجب المقاطعات زمناً طويلاً، وقد تستولي حركة كثيفة على الآلة من دون أن يتمكن المجدول من تقييدها. كما أن ضيق ذاكرة النواة وتغير نظام التشغيل يحولان السرعة الفورية إلى عبء صيانة.
يبدو معالج الاتصالات المنفصل حلاً ثالثاً. يمكن أن يشغل نظاماً مخصصاً للبروتوكولات وأن يخدم أكثر من مضيف. غير أن المضيف يحتاج إلى واجهة معه تنقل البيانات، وتضبط التدفق، وتعلن الأحداث، وتتعامل مع الفشل. لهذه الواجهة تأطير وترتيب وحالة؛ أي إنها بروتوكول بطبيعتها. انتقل الحد إلى سلك آخر ولم يختف.
لهذا لم تسأل RFC 817 مجرد سؤال «النواة أم العملية؟». فصلت الوظائف: ما الذي يحتاج قرباً من الجهاز، وما الذي يحتاج إلى الانتظار، وأين تعيش مؤقتات الاتصال، ومن يملك الحالة، ومن يحدد الوجهة النهائية، وكم نسخة أو إيقاظاً يضيف كل عبور.
وظيفة فك تعدد الإرسال شقت IP وTCP
إذا بقي IP في النواة ووُضع TCP كله في عملية واحدة، فلن تعرف النواة أي عملية مستخدم هي الوجهة النهائية قبل قراءة ترويسة TCP. عليها أولاً إيقاظ عملية TCP، ثم يحدد TCP الاتصال، ثم تُوقظ العملية المقصودة. أنتج الحد النظيف بين طبقتين انتقالين تنفيذيين لاتخاذ قرار وظيفي واحد.
اقترحت RFC 817 قطعاً مختلفاً. تبقى في النواة منطقية كافية من IP وTCP لتحديد العملية النهائية، فتصل الرزمة إليها مباشرة. ويكتمل ما تبقى من العمل، بما فيه ما يحتاج إلى مؤقتات أو سياق قادر على الحجب، داخل بيئة تلك العملية. يقطع حد الوحدة طبقتين لأن فك تعدد الإرسال، لا عنوان فصل المواصفة، هو الذي يحدد موضع القرار المكلف.
لا يتغير شيء يراه النظير على الشبكة. تظل بتات TCP والتزاماته كما هي. الذي يتغير هو خريطة المضيف الخاصة: أين توجد الحالة، وأي سياق ينفذ العمل، وكم مرة تنتقل البيانات أو السيطرة.
أفسح هذا التصور مجالاً لنسخة TCP لكل اتصال، بحيث تتخصص إحداها في نقل الملفات والأخرى في التفاعل منخفض التأخير. لكنه يضاعف مواضع الاختبار والإصلاح. قدمت RFC 817 الاحتمال بوصفه تجريبياً وغير مقبول على نطاق عام، لا قاعدة جاهزة. فالتخصص الذي لا يملك خطة صيانة يتحول إلى تفرع في البروتوكول.
حرف واحد جمع التكاليف المتفرقة
عند استقبال حرف في Telnet التفاعلي، يدين TCP بإقرار، وقد يلزم تحديث نافذة الاستقبال، ويجب على Telnet أو التطبيق إعادة صدى الحرف. وقد تضيف محارف التحكم أعمالاً أخرى. إذا أرسلت كل طبقة فور ظهور واجبها، نتجت عدة حزم عن فعل واحد.
لم يكن أي منها مخالفاً للمواصفة. كانت الوحدات الصحيحة تفتقر إلى معرفة أن الجار سيولد بيانات بعد لحظة. ومع كل حزمة يتكرر عبء المقاطعة والجدولة ومسار الإرسال والاستقبال على المضيفين، فضلاً عن تكلفة الاتصال في الشبكات التي كانت تحاسب بحسب الاستخدام.
كان العلاج محدوداً: يستطيع TCP أن يسأل إن كانت الطبقة العليا ستنتج بيانات قريباً، وأن يؤخر الإقرار لبضعة أجزاء من الثانية. في Telnet يمكن عندئذ أن تسافر معلومات الإقرار والنافذة والصدى في مقطع واحد. أما في نقل ملف باتجاه واحد، فقد يؤخر الانتظار الحزمة التالية ويقلل معدل النقل. لا تصبح الإشارة صحيحة إلا مع معرفة نمط الحركة.
حوّلت RFC 1122 المثال لاحقاً إلى سياسة محددة للإقرار المؤخر: لا يتجاوز التأخير نصف ثانية، ويُقَر على الأقل كل مقطعين كاملين. وذكرت إمكان خفض ثلاثة مقاطع إلى واحد في نمط الطرفية، ثم حذرت من أن الإفراط في التأخير يفسد قياس زمن الذهاب والعودة وتوقيت الحزم. تؤثر نية الطبقة العليا في الموعد، لكنها لا تلغي مسؤولية TCP ولا أجلها النهائي.
للعزلة عائد وإيجار
تتيح واجهة الطبقة الواضحة تغيير أحد الجانبين مع قدر من الثقة بأن الآخر سيستمر. يستطيع عدة عملاء استعمال الخدمة ذاتها، ولا يحتاج كل مطور إلى معرفة النظام كله. هذه العزلة هي التي تسمح لعائلة بروتوكولات أن تعيش أطول من آلة أو فريق بعينه.
لكن الواجهة الجامدة تحجب القصد. قد يجبر تدفق بايتات عام نقلاً كتلياً على عمليات لا تناسبه. وقد يؤدي فصل العمليات بلا ذاكرة مشتركة إلى نسخ عبر النواة. وحين تختار كل طبقة لحظتها الخاصة للإرسال، تحمل الشبكة حزماً متعددة كان يمكن أن تتشارك مقطعاً واحداً.
وصفت RFC 817 الحد بين الطبقات بأنه فائدة وعقوبة معاً. لم يكن ذلك دعوة إلى إزالة الواجهات، بل إلى إظهار إيجارها: عدد الحزم والنسخ والإيقاظات والبحث والتأخير وعدد المتغيرات وكلفة إصلاحها. لا يبرر العبور إلا عمل موفر قابل للقياس، ومعلومة قليلة، ومسار يبقى صحيحاً عندما تغيب الإشارة.
جمعت RFC 1958 لاحقاً بين مبدأ أن الوحدات جيدة وضرورة مراعاة الأداء والكلفة، وقدمت خبرة التطبيقات العاملة على الشعارات المعمارية. وربطت RFC 3439 التعقيد بالتوسع والنفقات التشغيلية. لذلك لا تكون النقاوة مجانية، ولا يصبح الاقتران كفاءة لمجرد أنه أقرب.
قياس Multics حصر الاستثناء
كانت بايتات TCP ذات الثماني بتات موزعة على نحو غير ملائم داخل كلمات Multics ذات الستة والثلاثين بتاً. استغرق حساب المجموع الاختباري في نسخة مبكرة قرابة ستة أجزاء من الألف من الثانية لمقطع حجمه 576 بايتاً. خفضت إعادة كتابة دقيقة ومخصوصة للآلة الزمن إلى أقل من جزء واحد من الألف.
سمت RFC 817 الأسلوب قذراً، ولم تقدمه نموذجاً لبقية البرنامج. قُبل لأنه عالج اختناقاً شديداً ومقاساً، ولأن التخصص بقي داخل وظيفة معروفة، ولأن النتيجة أمكن مقارنتها بمسار مرجعي. الاستثناء المحلي الموثق لا يتحول تلقائياً إلى ثقافة برمجية.
جاءت تحسينات أخرى من الانحياز إلى المعتاد. يصل المقطع التالي غالباً بالترتيب المتوقع، فينبغي اختبار هذا الاحتمال أولاً. وتُستخدم قائمة إعادة الإرسال أكثر لحذف العناصر التي وصلت إقراراتها من استخدامها للإرسال من جديد، فينبغي أن تسهّل الحذف. ولا ينبغي نسخ البيانات مرة أخرى لأن حد الوحدة يجعل النسخ مريحاً.
تتوزع خسارة الأداء بين المجموع الاختباري والنسخ والبحث في القوائم والجدولة وتحولات الحالة. قلما يوجد وحش واحد يؤدي قتله إلى إصلاح المكدس كله. الأداء نتيجة عناية بالمسار الكامل قبل أن تتصلب حدود الوحدات.
خريطتان لسلطتين مختلفتين
تجيب خريطة البروتوكول عما اتفق النظراء على تبادله. وتجيب خريطة التنفيذ عن موضع استهلاك الوقت ونقل البايتات وجدولة العمل واحتواء الأعطال داخل مضيف. الخلط بينهما يحول رسماً تعليمياً إلى مجدول لم يخضع للفحص.
أعادت RFC 817 القرار إلى الدليل: قياس الحزم لكل فعل مفيد، وتتبع النسخ، وفصل الحركة المعتادة عن الاستثناء، وتسجيل الإشارة التي تعبر الحد ومالكها وأجلها وما يحدث من دونها. ثم حماية العقد الخارجي كي يظل من حق تطبيق آخر أن يختار خريطة داخلية مختلفة.
الطبقة حقيقية لأنها تحفظ قابلية التشغيل البيني. وكلفتها حقيقية أيضاً. أما الوحدة فمحلية، ولهذا يجب أن تثبت كل قَطْعة عرضية ما توفره، وما تعتمد عليه، وكيف يمكن الرجوع عنها.
المصادر
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
