الخلاصة
- يشترط RFC 7112 أن يحمل جزء IPv6 ذي
Fragment Offsetالمساوي للصفر سلسلة الرؤوس كاملة، من رأس IPv6 الأساسي حتى أول رأس للطبقة العليا. وبذلك يرى المرشح عديم الحالة نوع البروتوكول والمنفذ المتاح قبل اتخاذ القرار. - لا يعني اكتمال السلسلة في الجزء الأول اكتمال رزمة البيانات كلها. يجب فصل دليل إنشاء المصدر وMTU المسار وإعداد الجهاز ورسالة ICMPv6 من النوع 4 والرمز 3 والأجزاء اللاحقة والتداخل والمهلة وإعادة التجميع ونتيجة الخدمة.
سياسة تنتظر حقلاً لم يصل
لا تقفز رزمة IPv6 مباشرة من الرأس الأساسي إلى TCP دائماً. قد تمر عبر عدة رؤوس امتداد، ويشير كل حقل Next Header إلى الرأس التالي. إذا طالت السلسلة أو صغر الجزء الأول، قد يقع القطع قبل رأس النقل.
بالنسبة إلى جدار ناري يسمح بمنفذ ويحظر آخر، لا يعد ذلك تفصيلاً شكلياً. إذا مرر القطعة الأولى فقد يقبل حركة كان سيرفضها لو رأى المنفذ. وإذا أسقطها احتياطاً فقد يحجب حركة مسموحة. المشكلة أن القرار مطلوب قبل ظهور الدليل الذي صيغت القاعدة على أساسه.
كان من الممكن مطالبة كل جهاز وسيط بإعادة التجميع، لكن ذلك يضيف حالة وذاكرة ومؤقتات وسطحاً لهجمات الحرمان من الخدمة إلى الطريق كله. اختار RFC 7112 إصلاحاً أضيق: على المضيف الذي يجزئ مخطط IPv6 أن يضع سلسلة الرؤوس كلها في الجزء الأول.
هكذا لا تفرض المواصفة سياسة موحدة على الشبكات. إنها تضمن فقط ألا تختبئ هوية البروتوكول في قطعة لاحقة حين يحتاج جهاز إلى قراءتها لتنفيذ سياسته المحلية.
أين ينتهي معنى «كاملة»
تبدأ السلسلة برأس IPv6 الأول، ثم تمر بصفر أو أكثر من رؤوس الامتداد، وتنتهي عند أول رأس للطبقة العليا. غالباً يكون TCP أو UDP أو ICMPv6. وإذا كان IPv6 مغلفاً داخل IPv6، فيعامل الرأس الثاني بوصفه رأس الطبقة العليا في هذا التعريف. وينهي ESP السلسلة بالطريقة نفسها، أو تنتهي عند No Next Header إذا لم يوجد بروتوكول لاحق.
لا تدخل حمولة الطبقة العليا في السلسلة. يجب أن يظهر رأس TCP، لا أن يظهر كل ما يحمله TCP. لذلك لا يمنع RFC 7112 الحمولات الكبيرة ولا يلغي التجزئة. إنه يضع حدود القطع بعد المقدمة البروتوكولية اللازمة، بشرط أن تتسع داخل MTU المسار.
لهذا الحد أثر على لغة الأمن. ظهور المنفذ يكفي لتقييم قاعدة منفذ. لا يثبت محتوى البيانات التالية، ولا يثبت أن عنوان المصدر أصيل، ولا أن المرسل مخول. الامتثال لبنية الرأس ليس وثيقة هوية.
يجيب الاختبار عن سؤال واحد: هل ظهر الحقل الذي تحتاجه هذه المعالجة؟ لا يجوز تحويل الإجابة إلى حكم على الرزمة كلها.
الصفر موضع لا توقيع
يعرّف RFC 7112 الجزء الأول بأنه جزء IPv6 ذي إزاحة تساوي صفراً. تستطيع كل آلة قراءة الشرط بحساب محلي من دون سجل مركزي أو انتظار اكتمال التجميع.
لكن المهاجم يستطيع أيضاً وضع صفر، كما يستطيع إنشاء سلسلة صحيحة نحوياً. ولا يصبح عنوان IPv6 الظاهر إثباتاً مشفراً لمصدر بشري أو مؤسسي. يحدد الحقل موضع القطعة في البناء، لا شرعية صاحبها.
تبقى المعالجة محلية. قد تسمح شبكة بمنفذ وترفضه أخرى. قد يفعل جدار ناري إسقاط السلسلة الناقصة، وقد يبقي آخر وضع توافق لمصدر قديم. ويطبق المضيف الوجهة سلوك استقبال مستقل.
تلك هي فائدة القاعدة الرفيعة: تتشارك الأنظمة شرطاً يمكن فحصه، ولا تسلم قرارها لمؤلف المواصفة أو للمؤسسة التي نشرتها.
الأفعال المعيارية توزع المسؤولية
على المصدر الذي ينشئ التجزئة أن يضم السلسلة كاملة؛ هذه صيغة إلزامية. أما المضيف الذي يتلقى جزءاً أول ناقصاً فينبغي له إسقاطه وينبغي له إرسال خطأ ICMPv6 وفق القواعد العامة. ويمكن للتطبيق أن يقدم خيار قبول للتوافق مع السلوك القديم.
للنظام الوسيط مساحة مختلفة. يجوز له الإسقاط ويجوز له إرسال الخطأ. وإذا كان قادراً على الإسقاط، فينبغي أن يدعم إعداد تمكينه أو تعطيله. لا تقول المواصفة إن كل موجه في العالم يجب أن يتخذ القرار نفسه.
لذلك لا تكفي عبارة «أسقط RFC 7112 الرزمة». يجب ذكر الجهاز والواجهة وإصدار البرنامج ونسخة القاعدة وحالة التوافق ونقطة الرصد. كما يجب معرفة هل وصلت القطعة إلى الوجهة وما الذي فعلته الوجهة.
الفعل المعياري يحدد نطاق الاختيار. السجل التشغيلي يحدد من اختار فعلاً.
الرمز 3 إيصال قد لا يعود
إذا أسقط مضيف أو نظام وسيط الجزء لهذا السبب واختار إرسال تشخيص، تكون الرسالة ICMPv6 Parameter Problem من النوع 4 والرمز 3، ويضبط حقل Pointer على الصفر. وسجلت IANA الوصف باعتباره سلسلة رؤوس IPv6 ناقصة في الجزء الأول.
يعطي الرمز اسماً محدداً للعطل. يستطيع مطور ربط الرسالة بالرزمة المقتبسة. ويمكن لفريق تشغيل مقارنة ارتفاع العدد بتحديث نظام تشغيل أو تعديل نفق أو ظهور ترتيب جديد لرؤوس الامتداد.
لكن غياب الرسالة لا يثبت المرور. إرسال النظام الوسيط اختياري، وقد تمنع قواعد ICMPv6 الإنشاء أو تحده، وقد يحجب مسار العودة الرسالة. ومع تزوير عنوان المصدر قد يصل التشخيص إلى طرف لم يرسل الحركة.
ولا تحدد الرسالة وحدها الجهاز الذي أنشأها. يصبح الإيصال مفيداً عند ربطه بالتوقيت والواجهة ونقطة الالتقاط والجزء المقتبس وعداد الإسقاط وإصدار الإعداد.
ثمانية سجلات بدل علم واحد
السجل الأول لشكل الرزمة: المصدر والوجهة ومعرّف التجزئة والإزاحة وعلم M وتسلسل رؤوس الامتداد وأول رأس علوي وصل إليه المحلل وطول السلسلة. والثاني لموضع الالتقاط، لأن التغليف قد يغير ما تراه نقاط مختلفة.
الثالث لحالة MTU. تؤدي القاعدة إلى وجوب اتساع سلسلة الرؤوس في MTU الطريق. وإذا لم يكتشف المضيف MTU، يفرض RFC 7112 حداً يبلغ 1280 بايت. قد يحول نفق جديد أو ذاكرة MTU قديمة أو سلسلة امتداد شاذة بناءً كان يعمل إلى جزء غير مطابق.
الرابع لتطبيق المصدر وإصداره. والخامس للجهاز الذي عالج القطعة وواجهته ونسخة المحلل والقاعدة ووضع التوافق والحكم. والسادس لإنشاء Code 3 وتحديد معدله ومشاهدته. والسابع لإزاحات الأجزاء الأخرى وأطوالها وتكرارها وتداخلها وانتهاء مهلتها. والثامن لنتيجة TCP أو التطبيق.
قد تنجح قطعة وتفشل أخرى من السلسلة التشغيلية. قد يستمر الإسقاط وتختفي رسالة ICMPv6 فقط. وقد يكون الجزء الأول سليماً ولا تصل القطعة الأخيرة. العلم الوحيد «fragment blocked» يمحو موضع الإصلاح.
القبول ليس إعادة التجميع
أدخل RFC 8200 شرط RFC 7112 في مواصفة IPv6 الأساسية. يميز بين الرؤوس التي ترافق كل جزء، ورأس Fragment، ورؤوس الامتداد ورأس الطبقة العليا الموجودين في القطعة الأولى، والبيانات التي توزع لاحقاً.
تبدأ إعادة التجميع في الوجهة بعد ذلك. تجمع القطع بحسب عنواني المصدر والوجهة ومعرّف التجزئة، وتحدد مواقعها بالإزاحات والأطوال. إذا لم تكتمل خلال 60 ثانية تتخلى الوجهة عنها. وإذا تداخلت القطع يجب إسقاط رزمة البيانات كلها. ويمكن اكتشاف النسخ المتطابقة وإهمالها مع الإبقاء على البقية.
اجتياز فحص الرأس لا يضمن وصول القطعة الأخيرة، ولا يمنع التداخل، ولا يثبت نجاح التطبيق. وإعادة التجميع الناجحة نفسها لا تعني أن الخدمة حققت الغرض.
وقد يسقط جدار ناري القطعة الأولى ويمرر قطعاً لاحقة. لا تستطيع الوجهة إعادة البناء من دون offset صفر، ولذلك لا ينبغي عد تمرير القطع اللاحقة دليلاً على قبول رزمة البيانات.
تحتاج الحادثة إلى ثلاث نتائج مستقلة: اكتمال سلسلة الجزء الأول، وحالة إعادة التجميع، ونتيجة الخدمة.
الجزء الذري حالة أخرى
يعالج RFC 6946، الذي ألّفه Fernando Gont، جزءاً يحمل رأس Fragment مع إزاحة صفر وعلم M يساوي صفراً. هذه رزمة ذرية كاملة لا تنتظر قطعة أخرى.
كانت بعض التطبيقات تضعها رغم ذلك في طابور إعادة التجميع مع أجزاء تحمل مجموعة المصدر والوجهة والمعرّف نفسها. أتاح الخلط مجالاً للهجوم، فجعل RFC 6946 معالجة الجزء الذري مستقلة عن الأجزاء الأخرى، وأدرج RFC 8200 هذا السلوك.
لا يحل ذلك محل RFC 7112. الجزء الأول الناقص، والجزء الذري الكامل، والأجزاء المتداخلة حالات منفصلة. لكل منها انتقال وعلاج مختلفان.
إذا احتفظت المنصة فقط بعبارة «يحتوي رأس Fragment»، تفقد الفروق التي يوفرها البروتوكول أصلاً في offset وM والمعرّف ونهاية السلسلة.
من تحديث إلى نص IPv6 الأساسي
حدّث RFC 7112 مواصفة RFC 2460 في 2014. ثم أبطل RFC 8200 النص القديم في 2017 وأدرج شرط وجود رؤوس الامتداد التالية ورأس الطبقة العليا في الجزء الأول. كما أوصى بإسقاط القطعة الناقصة وإرسال Code 3.
حوّل RFC 9099 ذلك إلى نصيحة أمنية تشغيلية: ينبغي للجدران النارية وأجهزة الحماية وعقد الوجهة إسقاط الأجزاء الأولى التي لا تضم السلسلة كلها، بما في ذلك رأس النقل، لأن الطرف المعادي قد يتجاوز الترشيح عديم الحالة من دونها.
يثبت التسلسل تغير المواصفة، لا تغير كل جهاز منشور. قد يبقى مفتاح توافق قديم، أو يقصر محلل العتاد عن سلسلة طويلة، أو تختلف رسائل ICMPv6 بين الأنظمة.
الاختبار المصمم والالتقاط والعداد والإعداد المؤرخ ونتيجة الخدمة هي إثبات التبني. تحدد الوثيقة ما ينبغي قياسه، ويبين الكود العامل ما حدث.
دور Fernando Gont الموثق
يشترك Fernando Gont مع Vishwas Manral وRon Bonica في تأليف RFC 7112. وتعكس صفة Standards Track مراجعة IETF وإجماعه، لا اختراعاً فردياً ولا سلطة للمؤلف على شبكات الآخرين.
يوفر RFC 6946 وملف Gont في IETF سبباً موضوعياً لاختياره عدسة شخصية. يسرد الملف أربعين RFC، ويظهر مساراً في أمن البروتوكولات. وفي وثيقتي التجزئة تبرز طريقة واحدة: فصل حالات خلطتها التطبيقات، ثم إعطاء المشغل شرطاً يمكن التحقق منه.
في RFC 7112 يجب أن يكشف الجزء الأول الحد البروتوكولي اللازم للحكم. وفي RFC 6946 يجب ألا يدخل الجزء الذري طابوراً لا يحتاجه. تحدد المواصفة الوظيفة، ويطبق الجهاز السياسة، وتعيد الوجهة التجميع، ويثبت التطبيق النتيجة.
لا يحتاج الجزء الأول إلى رواية القصة كلها. يكفي أن يعرّف بما يأتي بعده كي تعرف الآلة التالية السؤال الذي تستطيع الإجابة عنه.
المصادر
- https://www.rfc-editor.org/rfc/rfc7112.html
- https://www.rfc-editor.org/rfc/rfc8200.html
- https://www.rfc-editor.org/rfc/rfc6946.html
- https://www.rfc-editor.org/rfc/rfc9099.html
- https://www.ietf.org/lib/dt/media/photo/fgont-square_LD9VupS.jpg
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
- https://heng.lu/minimum-initial-specification-localized-future-decision-voluntary-adoption-internet-coordination-system/
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
