الخلاصة

  • يطلب العميل DATE قبل تنفيذ NEWNEWS ويحفظ النتيجة مؤقتاً، لكنه يجري البحث من الطابع الزمني المثبت في الجلسة السابقة.
  • يتداخل نطاقا البحث عمداً. يمكن أن يظهر Message-ID مرة أخرى ويُدمج، بينما قد تختفي المقالة الواقعة بين نقطتين متباعدتين من دون دليل على أنها فُقدت.
  • تعكس القائمة وقت الوصول إلى خادم بعينه والمجموعات المختارة وقدرة متاحة؛ فهي ليست تسليماً للنصوص ولا سجلاً كونياً كاملاً.

ثماني ثوان بلا شاهد

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

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

يعكس RFC 3977 ترتيب الخطوات. في بداية الجلسة يطلب العميل DATE ويضع القيمة في تخزين مؤقت. ثم ينفذ NEWNEWS باستخدام الوقت المحفوظ من الجلسة السابقة. بعد استلام القائمة وقبولها، يستبدل النقطة القديمة بالقيمة التي التقطها قبل بدء الاستعلام. وبذلك تغطي الجولة التالية زمناً سبق أن مر أثناء بناء الرد الحالي.

فهرس للعثور، لا قناة لتسليم المقالات

عرّف RFC 977 الأمر NEWNEWS عام 1986. يحدد العميل مجموعات أخبار وتاريخاً ووقتاً، فيعيد الخادم Message-ID لكل مقالة نُشرت أو استُقبلت منذ ذلك الحد. توسّع الأنماط النطاق، ويستبعد التعجب في البداية فرعاً، وتظل القائمة الخالية جواباً صحيحاً.

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

احتوت الصيغة الأولى على وسيط اختياري للتوزيع. سجّل RFC 2980 أن التطبيقات فسّرته بطرق غير متطابقة، كما ذكر أن المسؤولين كانوا يعطلون NEWNEWS كثيراً. وجود الأمر في معيار لا يثبت أنه متاح على كل خادم.

الوصول محلي حتى لو كانت الهوية عالمية

يميّز RFC 3977 بين ثلاثة مفاتيح. يسعى Message-ID إلى تعريف المقالة عالمياً. أما اسم المجموعة مع رقم المقالة فيخص موضعاً على خادم معين. ويسجل طابع الوصول اللحظة التي وصلت فيها المقالة إلى ذلك الخادم. يعتمد NEWNEWS على المفتاح الثالث.

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

ينبغي أن يأتي الحد الزمني من صاحب هذه الشهادة. قدّم RFC 2980 الأمر DATE بوصفه وقت UTC من منظور الخادم. ويشترط RFC 3977 أن تستخدم إجابته الساعة نفسها التي تحدد أوقات وصول المقالات وإنشاء المجموعات. لا يحل الأمر محل NTP؛ إنه يضع سؤال العميل على المسطرة الزمنية التي سيستخدمها الخادم للحكم.

التكرار كمساحة للتعافي

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

يسمح RFC 3977 أيضاً بإرجاع الوقت دقيقتين أو ثلاثاً لمعالجة أخطاء صغيرة. ويعرض مثاله Message-ID واحداً في ردين متتاليين. الظهور الثاني ليس فساداً؛ إنه أثر مرئي لهامش الحذر.

ولا تحمل مواقع الأسطر معنى زمنياً. ترتيب القائمة غير محدد وقد يتغير في الجلسة نفسها، ويمكن أن يتكرر Message-ID داخل الرد الواحد، ويكون تكراره مساوياً لظهور واحد. يجب أن يتعامل العميل مع مجموعة هويات قابلة للمطابقة، لا مع طابور مرتب.

حدود لا يصلحها التداخل

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

يسجل سجل IANA لمعاملات NNTP NEWNEWS كقدرة تعني أن الأمر متاح. يثبت السجل اسماً ومرجعاً موحدين، ولا يضمن تفعيل خدمة محددة أو اكتمال أرشيفها.

قوة التصميم محددة: يختار نوع الفشل الذي يخلّف دليلاً. تحمل النسخة المكررة Message-ID ويمكن عدّها ومقارنتها وضمها. أما ما تجاوزه مؤشر متقدم أكثر من اللازم فلا يترك حتى تعريفاً لما ينبغي البحث عنه.

نقطة الاستئناف تصريح عن الماضي

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

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

المصادر