الخلاصة

  • أتاحت RFC 2361 الإشارة إلى مرمّزات مسجلة سلفاً في سجلي WAVE وAVI بواسطة audio/vnd.wave;codec=... وvideo/vnd.avi;codec=...؛ وكانت IANA تعيد نشر القيم ولا تمنحها.
  • العثور على قيمة في السجل يثبت هوية اسمية ضمن النسخة التي جرى فحصها، ولا يثبت أن جسم الملف يطابقها أو أن برنامج الفك موجود أو أن جهة الاتصال ما زالت قائمة أو أن التشغيل آمن وناجح.

يصل ملف يحمل video/vnd.avi;codec=CVID. يعثر النظام على CVID في الجدول، ويرى مكوّناً محلياً يحمل اسم Cinepak، فيعلن أن الوسيط قابل للتشغيل. ثم تبقى الشاشة سوداء. لا يلزم أن تكون أي من الملاحظات الثلاث خاطئة؛ المشكلة أنها تصف طبقات مختلفة.

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

هذا هو سياق يونيو 1998 حين نُشرت RFC 2361 بوصفها وثيقة معلوماتية. كان قدر كبير من الصوت والفيديو قد نشأ في بيئات الحاسوب المكتبي خارج بروتوكولات الإنترنت. وكانت WAVE وAVI تملكان قواعد أرقام وأسماء حافظت عليها Microsoft. ولكي تبحث تطبيقات الشبكة هذا المحتوى أو تصفه أو تنقله، احتاجت أولاً إلى طريقة ثابتة لقول أي مرمّز يدّعي الملف استخدامه.

لم تُعد الوثيقة تعريف تدفقات البتات. وضعت مرجعاً إلى السجل الخارجي داخل شجرة الموردين في MIME. يحدد audio/vnd.wave فضاء WAVE، ثم يختار معامل codec الإلزامي WAVE Format ID. ويحدد video/vnd.avi فضاء AVI، ثم يختار المعامل نفسه AVI Codec ID.

ظل توزيع السلطة ظاهراً. السجل الذي حافظت عليه Microsoft هو الذي أعطى القيم وسعى إلى منع التضارب. قدّم MIME صيغة يمكن حملها في رسائل الإنترنت. ونشرت RFC قاعدة الربط. وتقول صفحة IANA الحالية صراحة: IANA does not assign. Republication of values. وجود القيمة على سطح IANA لا يعني أن IANA أنشأتها أو راجعتها أمنياً أو أوصت بتنفيذها.

في WAVE كانت هناك دقة عددية يسهل فقدها. رقم التسجيل سداسي عشري، وتُنقل أرقامه إلى المعامل من دون السابقة 0x. لذلك يظهر الرقم 0x0055 الخاص بـ MP3 على صورة codec=55. لم يتحول إلى العدد العشري 55. إذا فسّر برنامج السلسلة عشرياً ثم أعاد ترميزها، فقد يصل إلى قيد آخر مع أن سجله الحسابي يبدو منضبطاً.

أما AVI فاستخدم FourCC: أربعة محارف ASCII، أي 32 بت، مع حساسية لحالة الأحرف. ليست CVID وcvid متساويتين لمجرد تشابه العرض. تغيير الحالة أو تطبيق تطبيع نصي أو حذف محرف ليس تحسيناً شكلياً؛ قد يكون تغييراً للهوية.

وصفت RFC أيضاً تحويل WAVE ID وFourCC إلى GUID. يوضع الرقم أو قيمة المحارف في أول 32 بت من قالب ثابت. وفي المثال تتحول H260 إلى 30363248 في العرض السداسي، لأن ترتيب بايتات DWORD يجعل المحارف تبدو معكوسة. يتيح الحساب الحتمي لبرنامجين التأكد من أنهما يشيران إلى الهوية نفسها.

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

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

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

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

جاءت RFC 6381 لاحقاً بمعامل codecs الجمعي لأنواع حاويات أخرى، وقالت إن الجسم هو المرجع الحاسم عند التعارض. وأقرت بأن بعض المسارات المعلنة قد لا تكون ضرورية لنتيجة جزئية. لم تستبدل تلك الوثيقة صيغة RFC 2361 المفردة، لكنها أبرزت استمرار الحد بين الإعلان والمحتوى المفحوص.

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

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

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

تحفظ السلسلة القابلة للتدقيق Content-Type الخام، ونسخة السجل، وقاعدة التفسير السداسي أو FourCC، وترتيب البايتات، ونتيجة فحص الحاوية، وأي تعارض، وبرنامج الفك ومصدره، وسياسة العزل، ومحاولة الفك، والمسارات الناتجة، والعرض المرصود. يمكن أن تنجح حلقة وتظل التالية غير مثبتة.

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