الخلاصة

  • قدم كريستوفر ويلز ووالتر ميليكن في RFC 909 الصادرة في يوليو 1984 بروتوكول تطبيق لتحميل البرامج واستخراج الحالة وتصحيح الآلات الهدف عبر الشبكة. تشمل الأمثلة عقد تبديل الرزم والبوابات. وحذرا من أن إيقاف الهدف عند نقطة توقف حتى تأتي تعليمات جديدة من المضيف البعيد يمنعه من تلبية متطلبات عمله في الزمن الحقيقي.
  • قسمت الوثيقة قدرات الهدف إلى ثلاثة مستويات تراكمية: تحميل واستخراج بسيط، وتصحيح أساسي، وتصحيح كامل. في المستوى الأخير تُخزن قوائم أوامر مشروطة داخل الهدف وتنفذ عند وقوع الحدث. ينخفض انتظار رحلة الشبكة في اللحظة الحرجة، بينما ترتفع كلفة الذاكرة والحساب على الآلة الجاري فحصها.

الأداة التي تشبه العطل

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

أطلق المؤلفان على اقتراحهما اسم Loader Debugger Protocol، أو LDP. يدير المضيف البعيد جلسة مع آلة هدف من نوع عقدة تبديل أو PAD أو بوابة. ويشمل البروتوكول قراءة الذاكرة وكتابتها ونقل البيانات وبدء التنفيذ والتعامل مع الاستثناءات. فصلت المواصفة أكثر من أربعين أمراً في فئات للبروتوكول ونقل البيانات والإدارة والتحكم ونقاط التوقف. ليست هذه نافذة تعرض السجلات فحسب؛ إنها سطح سيطرة واسع داخل جهاز ينتظر منه الآخرون مواصلة العمل.

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

ضع القرار قرب الحدث

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

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

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

مضيف ميت يحجز الباب الوحيد

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

أوصى RFC 909 باستخدام Reliable Data Protocol الوارد في RFC 908 للنقل، وذكر TCP بديلاً أعلى كلفة على الموارد بحسب تحليله. ينبغي للنقل إيصال رسائل موثوقة مرتبة والتمييز بين الاتصالات. قد تضم رسالة نقل عدة أوامر LDP، لكن يجب أن يقع كل أمر بكامله داخل رسالة واحدة. تنقل هذه القواعد التعليمات؛ أما مقدار التوقف وسلوك المضيف الغائب فيبقيان مسألتي تصحيح وتشغيل.

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

المصادر الأصلية