الخلاصة
- تعني
Subscription-State: terminatedفي RFC 6665 أن الاشتراك لم يعد نشطاً؛ ولا تعني تلقائياً أن المورد المراقَب انتهى أو اختفى. - تقود الأسباب إلى نتائج مختلفة: قد يدل
deactivatedعلى انتقال جهة الإخطار، ويسمحtimeoutباشتراك جديد، ويصفinvariantحالة ثابتة، ولا يصرح بزوال حالة المورد إلاnoresource. - يفصل السجل الجدير بالاعتماد بين دورة الاشتراك، ومتن حالة المورد، ومعاملة NOTIFY، وتفسير حزمة الحدث، والإجراء البشري أو الآلي اللاحق.
خانة حمراء اختزلت آلتي حالة في واحدة
تغري كلمة “terminated” بخطأ لغوي. فعندما تظهر إلى جوار جهاز أو حساب أو مكالمة، يبدو كأنها تصف الاسم المعروض. غير أن الاسم المقصود في ترويسة RFC 6665 هو الاشتراك. وعلى المشترك الذي يتلقى القيمة أن يعد ذلك الاشتراك منتهياً. هذه دلالة ملزمة ومفيدة، لكنها محدودة الموضوع.
للمورد المراقَب آلة حالة أخرى تحددها حزمة الحدث. فالحزمة تقرر هل يحمل المتن حالة كاملة أم جزئية، وما الحالة المحايدة، وكيف تُفهم رسالة بلا متن. ولا يفرض إطار أحداث SIP العام نموذجاً واحداً على الحضور، أو انتظار الرسائل، أو المكالمات، أو موارد التطبيقات المختلفة.
قد تفشل علاقة المراقبة فيما يظل الشيء سليماً. وقد يزول الشيء فيما يبقى الإخطار الأخير في الطريق. وعندما يخزن النظام الحالتين في قيمة واحدة اسمها «انتهى»، فإنه يمحو الفرق بين فقدان الرؤية وتغير الشيء المرئي.
سبعة أسباب لا تقود إلى مستقبل واحد
لأسباب الإنهاء في RFC 6665 آثار تشغيلية متباينة. يطلب deactivated إنشاء اشتراك جديد فوراً، ويعد الانتقال بين عقد جهات الإخطار من أبرز استعمالاته. يؤجل probation إعادة المحاولة. يشير rejected إلى تغير سياسة التفويض وينصح بعدم التكرار. يعني timeout أن الاشتراك لم يُجدَّد قبل انقضائه، لكنه يسمح بإعادة الاشتراك فوراً. أما giveup فيقول إن جهة الإخطار لم تتمكن من الحصول على التفويض في الوقت المناسب.
ويتضح الحد أكثر عند مقارنة noresource وinvariant. الأول يقول إن حالة المورد التي كانت تحت المراقبة لم تعد موجودة. والثاني يقول إن تلك الحالة مضمونة ألا تتغير في المستقبل المنظور. كلاهما لا يشجع على إعادة الاشتراك، لكن أحدهما يصف الغياب والآخر يصف الاستمرار. خانة واحدة باسم «منتهٍ» لا تحفظ المعنيين.
وقد يغيب السبب أو يكون غير معروف. عندئذ يمكن للعميل إعادة الاشتراك مع مراعاة retry-after، لكن الفجوة لا تمنح المراقب حق اختراع noresource. كما أن وسيط expires الملحق بحالة منتهية لا يسدها؛ فالمواصفة تنص على أنه بلا دلالة هناك ويجب تجاهله.
الإخطار الأخير قد لا يحمل القيمة الأخيرة للمورد
يجري إلغاء الاشتراك بطلب SUBSCRIBE يحمل Expires: 0. ويؤدي الإلغاء الناجح إلى NOTIFY أخير، إلا أن RFC 6665 تنبه إلى أن هذا الطلب قد يتضمن معلومات عن حالة المورد أو لا يتضمنها. ويجب أن يكون المشترك مستعداً للصورتين.
إذا غاب المتن، فالمعلوم هو أن العلاقة انتهت، لا القيمة الأخيرة للمورد. وإذا حضر، فلا تزال دلالته محكومة بنوع الوسائط وقواعد الحزمة ومعنى الحالة الكاملة أو الجزئية ومعلومات الإصدار. ولا تستطيع ترويسة الاشتراك أن تمنح متناً تابعاً لمواصفة أخرى معنى إضافياً.
كذلك فإن رد 200 على NOTIFY ذو دلالة محدودة. متى كان الإخطار مقبولاً لدى المشترك، ينبغي الرد عليه، ولا يجوز إبقاء المعاملة مفتوحة انتظاراً لمستخدم. لذلك يثبت 200 أن عنصراً آلياً في SIP عالج الطلب بصورة مقبولة. وهو ليس إيصال قراءة ولا إقرار مشغّل ولا دليلاً على اكتمال مسار لاحق.
تأكيد الإنشاء قد يسبق ترتيب المحادثة الظاهر
أول NOTIFY هو الذي يؤكد إنشاء الاشتراك. تعني إجابة 2xx عن SUBSCRIBE أن الطلب قُبل وأن NOTIFY سيُرسل فوراً، لكن الإخطار قد يصل قبل انتهاء معاملة SUBSCRIBE بسبب إعادة ترتيب الرسائل أو فقدانها أو تفرعها. وحتى وصوله، تُعامل حالة المورد بوصفها الحالة المحايدة التي تحددها حزمة الحدث.
هناك إذاً ثلاث ساعات على الأقل: ساعة المعاملة للطلبات والردود، وساعة الاشتراك للإنشاء والتجديد والانقضاء والإنهاء، وساعة المورد للتغيرات التي تصفها الحزمة. وتضاف ساعة رابعة عند النظام الذي يستقبل الإخطار ويفسره ويعرضه. ترتيب السجلات بزمن الالتقاط وحده ثم تسمية آخرها «الحقيقة» قد يقلب السبب والنتيجة.
يحفظ السجل القابل للتدقيق مفتاح الاشتراك المحلي، وCall-ID والوسوم، وقيمة Event، والهدف، وCSeq الخاص بـNOTIFY، وترويسة الحالة كاملة، والسبب، وفترة الإعادة، ووقت الاستلام، ونتيجة التوثيق، والرد. وفي مجموعة مستقلة يحفظ وجود المتن ونوعه وبصمته، وإصدار الحزمة والمحلل، وصفة الحالة الكاملة أو الجزئية، والقيمة التي استنتجها التطبيق.
قد ينتهي استخدام ويبقى الـdialog قائماً
تعرف RFC 6665 الاشتراك بأنه حالة تطبيق مرتبطة بـdialog. وتشرح RFC 5057 التي كتبها Robert Sparks لماذا لا تعني الرابطة التطابق. فاستخدامات dialog لها دورات حياة مستقلة وإن اشتركت في حالة dialog. وفي سيناريو التحويل قد يجتمع invite usage وsubscription usage في dialog واحد؛ وينتهي الاشتراك فيما يستمر استخدام الدعوة.
أحكمت أعمال لاحقة سطح التحكم. توضح RFC 7621 استعمال GRUU لتوجيه الطلب إلى نسخة وكيل المستخدم المقصودة. وتعالج RFC 7647 التي كتبها Sparks وRoach الاشتراكات الضمنية التي ينشئها REFER ومشكلات إعادة استعمال dialog. يقلل الاستهداف الأدق والبنية الأوضح الشك في أي استخدام ولّد الحدث، لكنه لا يوسع terminated ليصبح حكماً على المورد.
ولهذا فإن عبارة «انتهت الجلسة» ليست بديلاً آمناً. الاشتراك وdialog واستخدام dialog والمكالمة ونسخة جهة الإخطار والمورد الذي تعرفه الحزمة أشياء مترابطة لا مترادفة. لكل منها هوية وحالة لاحقة تخصه.
صاغ Roach إطاراً يحفظ الحدود
صدرت RFC 6665 في يوليو 2012 ضمن Standards Track لتحل محل RFC 3265، وكان Adam Roach المؤلف الوحيد المسمى في الوثيقتين. يسجل ملفه الحالي في IETF مشاركته منذ 1998، وعمله Applications and Real-Time Area Director بين 2017 و2020، ورئاسته السابقة لـXCON وSIPCORE وNETVC. كما يسرد 23 وثيقة RFC ولا يورد دوراً نشطاً في 22 أبريل 2026.
تثبت هذه الوقائع إسهاماً في المعايير، لا سيطرة على نشر بعينه. فربط الأسباب والسياسة الزمنية والعبارة المعروضة مسؤولية المنتج ومشغليه. يمنح اسم Roach الإطار مصدره، لكنه لا يصادق على تنفيذ ولا يحوّل حالة الاشتراك إلى بينة على المورد.
حزمة الأدلة ينبغي أن تجيب عن خمسة أسئلة منفصلة
في الهوية: أي dialog وحزمة وهدف ومفتاح محلي؟ في دورة الحياة: أي حالة وسبب وقاعدة انقضاء ووقت استلام؟ في المورد: هل وجد متن، وأي حزمة فسرته، وما بصمته وإصداره؟ في عهدة النقل: أي جهة إخطار وتوثيق ومعاملة ورد؟ في الإجراء: هل أعاد النظام المحاولة أم انتظر أم انتقل أم أنذر أم أغلق القضية، وبحسب قاعدة من؟
لا يضعف الفصل الأتمتة. يستطيع timeout فتح بلاغ فجوة مراقبة بلا إعلان موت المورد. ويمكن إبقاء deactivated معلقاً حتى يصل أول NOTIFY من الاشتراك اللاحق. ويمكن أن يشترط noresource تأكيداً من التطبيق قبل فعل لا رجعة فيه. أما السبب المفقود فيعرض بأمانة بوصفه مجهولاً.
يحتاج المشغلون إلى حالة مختصرة، وهذا اعتراض صحيح. لكن الاختصار ينبغي أن يقول ما أثبته البروتوكول: انتهى الاشتراك، والسبب معلوم أو مجهول، وبينة المورد موجودة أو غائبة. يبقى اللون الأحمر مفيداً حين تكون دلالته صادقة.
المصادر
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
