العربية  

books slicing at the network layer

If you do not find what you're looking for, you can use more accurate words.

View more

التقطيع في طبقة الشبكة (Info)


مُلاحظات

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

التقطيع في الإصدار الرابع من بروتوكول الإنترنت

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

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

ترويسة البروتوكول

تتكون ترويسة الإصدار الرابع من بروتوكول الإنترنت من 14 حقلاً، لا ترتبط جميعها بعملية التقطيع. الحقول المُرتبطة بعملية التقطيع هي حقل مُعرّف القطعة، وحقل الأعلام وحقل الإزاحة، كما تتأثر قيمة حقلي الطول الإجمالي والتحقق الجمعي بعملية التقطيع وتختلف قيمتها في القطع عن قيمتها في الرزمة الأصلية، بعض الخيارات تُنسخ لكل قطعة، وبعضها لا يُنسخ إلا للقطعة الأولى، ويتحدد ذلك بعلم خاص هو علم النسخ (بالإنجليزية: Copied flag)‏ الذي يوجد في بداية كل خيار.

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

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

حقول ترويسة البروتوكول المُستخدمة في عملية التقطيع:

  • حقل مُعرّف القطعة، طوله 16 بت ويحتوي على قيمة فريدة تُعرف رزمة البيانات الأصلية وجميع القطع الناتجة عن تقطيعها، وهو يستخدم في عملية إعادة التجميع لتمييز قطع الرزم الأصلية عن قطع بقية الرزمة.
  • حقل الأعلام، طوله 3 بت مقسم بالشكل التالي:
    • البت 0، محجوز، لا يُستخدم، قيمته دائماً هي 0.
    • البت 1، علم عدم التقطيع (بالإنجليزية: Do not Fragment Flag اختصاراً DF)‏، يستخدم من قبل مصدر الرزمة للإشارة إلى ضرورة عدم تقطيع الرزمة، تقوم الموجهات على كامل مسار الرزمة بالالتزام بذلك، وإذا كانت قيمة هذا البت مساوية للواحد، فلن يتم تقطيع الرزمة أبداً حتى لو أدى ذلك إلى التخلص منها لعدم إمكانية توجيهها.
    • البت 2، علم المزيد من القطع (بالإنجليزية: More Fragment Flag اختصاراً MF)‏ يستخدم لتمييز القطعة الأخيرة، إذا كانت قيمته 1 فهذا يعني أن هناك قطع أخرى نتجت بعد هذه القطعة من عملية تقطيع الرزمة الأصلية، أما إذا كانت قيمته 0، فهذا يعني أن هذه القطعة هي آخر قطعة نتجت عن عملية تقطيع الرزمة.
  • حقل إزاحة القطعة، طوله 13 بت، ويحتوي على قيمة تدل على موقع القطعة النسبي بالنسبة لبقية القطع في الرزمة الأصلية، تكون قيمة الإزاحة مقسومة على ثمانية، اي إذا احتوى الحقل القيمة 1 فإن قيمة الإزاحة الحقيقية هي 8 بايت، وإذا احتوى 2 فإن قيمة الإزاحة الحقيقية هي 16، وأكبر قيمة ممكن للإزاحة في هذا الحقل هي: 213=8192، وتقابل 65536 بايت.

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

خوارزمية التقطيع

وصفت خوارزمية التقطيع في محددات البروتوكول، وهي تتبع المراحل التالية:

  1. تحديد طول الرزمة ومقارنته مع وحدة النقل العظمى الخاصّة بالشبكة التي سيتم توجيه الرزمة إليها:
    1. إذا كان طول الرزمة أكبر من وحدة النقل العظمى، يجب أن يتم تقطيع الرزمة.
    2. إذا كان طول الرزمة أصغر أو يساوي وحدة النقل العظمى يتم إرسال الرزمة كما هي إلى المرحلة التالية من التغليف.
  2. إذا كان علم عدم التقطيع في الرزمة مرفوعاً، يتمّ التخلّص من الرزمة.
  3. يجري تحديد حجم حمولة القطعة بحسب وحدة النقل العظمى وطول ترويسة بروتوكول الإنترنت.
  4. يتم اقتطاع حمولة القطعة من حمولة الرزمة الأصلية.
  5. يتم بناء ترويسة القطعة، ويشمل ذلك:
    1. حساب طول ترويسة القطعة وإضافته إلى الحقل المخصص.
    2. حساب طول القطعة الإجمالي وإضافته إلى الحقل المخصص.
    3. تحديد زمن حياة القطعة.
    4. ضبط قيمة مُعرّف القطعة إلى قيمة مُعرّف الرزمة الأصلية.
    5. تحديد قيمة الإزاحة، وإضافتها إلى الحقل المخصص.
    6. تحديد قيمة العلمين. وإضافتهما إلى الحقل المخصص.
    7. حساب قيمة حقل التحقق الجمعي.
  6. توليد الرزمة الجديدة من خلال تغليف قطعة البيانات بالترويسة.
  7. تحديد فيما إذا كانت الرزمة الناتجة هي الرزمة الأخيرة بقراءة قيمة علم المزيد من القطع:
    1. إذا كانت الرزمة الناتجة هي الرزمة الأخيرة، يتم إرسالها إلى المرحلة التالية من التغليف.
    2. إذا لم تكن الرزمة الناتجة هي الرزمة الأخيرة، يتم إعادة تنفيذ الخوارزمية بدءاً من الخطوة الثالثة، مع اعتبار أن حجم حمولة الرزمة الأصلية هو الحجم المتبقي من عملية الاقتطاع السابقة.

أما عملية إعادة التجميع، فهي تجري بشكل معاكس، وهناك عدة خوارزميات لإنجازها، جرى مناقشتها في وثيقة طلب التعليقات RFC 815.

قضايا أمنية

طوّر المهاجمون عدد من الهجمات التي تعتمد على التقطيع أو ثغرة أمنية قد تنتج عن استخدامه، من هذه الهجمات:

  • هجوم القطعة الصغيرة (بالإنجليزية: Tiny Fragment Attack)‏ يعتمد هذا الهجوم على حقيقة أن أصغر رزمة بيانات يمكن لأي وحدة تدعم الإصدار الرابع من بروتوكول الإنترنت التعامل معها هي بطول 68 بايت، حيث تكون ترويسة بروتوكول الإنترنت بأقصى طول أعظمي مسموح لها، وهو 60 بايت، في حين تكون الحمولة بطول 8 بايت فقط، لا يكفي هذا الطول لإدراج ترويسة بروتوكول النقل ضمن الرزمة، وقد يحاول المُهاجم تمرير قطعة خبيثة من جدار الحماية، الذي يتفحص عادة أرقام المنافذ في طبقة النقل، على أساس أنها قطعة صغيرة من رزمة بيانات أكبر جرى تقطيعها.
  • هجوم القطع المتراكبة (بالإنجليزية: Overlapping Fragment Attack)‏ يعتمد هذا الهجوم على خوارزمية إعادة التجميع المُتبعة لإعادة تشكيل الرزمة الأصلية، حيث يمكن لأي قطعة تالية أن تتراكب مع قطعة أخرى سابقة، وتحل محلها جزئياً أو كلياً، ويعني ذلك وجود ثغرة أمنية، حيث بالإمكان تمرير القطعة الأولى، التي تحتوي ترويسة بروتوكول الإنترنت من جدار الحماية بشكل شرعي، ثُمّ التلاعب بقيمتها عن طريقة التراكب مع قطعة تالية. على الرغم من التحسينات التي طرأت على خوارزمية إعادة التجميع، إلا أن الوثائق المعيارية للخوارزمية لم تتناول هذا الهجوم.

نُوقشت هذه الهجمات وطريقة التصدي لكل منها بالتفصيل في وثيقة طلب التعليقات RFC 1858.

أمثلة

في هذا المثال، يُفترض أن طول ترويسة الإصدار الرابع من بروتوكول الإنترنت هي 20 بايت، أي لا يوجد أي خيارات إضافية. إنّ قيمة وحدة النقل العظمى الخاصة بطبقة الشبكة هو 1500 بايت، ويجري التقطيع على مرحلة واحدة فقط لرزمة بيانات طولها الإجمالي هو 5140 بايت، أي أنها مكونة من حمولة هي 5120 وترويسة هي 20 بايت وقيمة المُعرّف في ترويسة بروتوكول الإنترنت فيها هو 345.

إنّ حجم الحمولة الأكثر مُلائمة لحجم وحدة النقل العظمى هو 1480 بايت، وهو يسمح بتشكيل رزمة بيانات ذات طول مُطابق تماماً لحجم وحدة النقل العظمى من خلال تغليف الحمولة 1480 بترويسة البروتوكول 20، ليكون طول الرزمة الأولى الإجمالي هو 1500 بايت، وإزاحتها هي 0 لأنّها تحتوي على القطعة الأولى، ويجب أن يضبط علم المزيد من القطع إلى القيمة 1 لأن عملية التقطيع مستمرة، وقيمة المعرف إلى القيمة 345، وهي معرف الرزمة الأصلية نفسه، وعلم عدم التقطيع إلى القيمة 0 لأن المطلوب هو أن يكون التقطيع على مرحلة واحدة فقط. إنّ حجم الحمولة المُتبقية بعد اقتطاع القطعة الأولى هو (3640=1480-5120) بايت.

بشكلٍ مُشابه لإنتاج الرزمة الأولى، يتم اقتطاع 1480 بايت من الحمولة المُتبقية، ويتمّ تغليفها بترويسة البروتوكول المناسبة التي تكون قيم حقولها الخاصة بالتقطيع مُشابهة لحقول ترويسة الرزمة الأولى باستثناء قيمة حقل الإزاحة الذي يتمّ ضبطه إلى القيمة (185=1480/8). وتكون الحمولة المُتبقية بعد إنشاء القطعة اقتطاع الثانية هي (2160=1480-3640). ثُمّ، وبشكلٍ مُشابه يتم اقتطاع القطعة الثالثة، ويجري تغليفها بترويسة البروتوكول المُناسبة التي تكون قيم حقولها الخاصّة بالتقطيع مُشابهة لحقول ترويسة الرزمة الأولى باستثناء قيمة حقل الإزاحة الذي يتم ضبطه إلى القيمة (370=8/(1480+1480)) وتكون الحمولة المتبقية بعد إنشاء القطعة اقتطاع الثالثة هي (680=1480-2160) بايت.

تُشكّل الحمولة المُتبقية القطعة الأخيرة، وتُغلّف بترويسة بروتوكول الإنترنت ليصبح الطول الإجمالي للرزمة الناتجة 700 بايت، ويجب أن يتم ضبط علم المزيد من القطع إلى القيمة 0 لأنّها القطعة الأخيرة، وحقل الإزاحة إلى القيمة (555=8/(1480+1480+1480))، بينما تكون قيم بقية الحقول الخاصة بالتقطيع في الترويسة مُطابقة للقيم في ترويسات الرزم السابقة.

إنّ مجموع أطوال الرزم الناتجة عن عملية التقطيع هو 5200 بايت، وهو أكبر من طول الرزمة الأصلية بمقدار 60 بايتاً أو 1.15%، وهي حمولة إضافية تنتج عن إضافة الترويسات للقطع الناجمة عن عملية التقطيع.

التقطيع في الإصدار السادس من بروتوكول الإنترنت

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

ترويسة القطعة

لا تحتوي ترويسة البروتوكول الأساسية على حقول خاصة بعملية التقطيع، ولكن هناك ترويسة أخرى خاصة بالتقطيع تسمى ترويسة القطعة (بالإنجليزية: Fragment Header)‏ يقوم البروتوكول بإضافتها في حال تقطيع الرزمة، إذا أضيفت هذه الترويسة بعد الترويسة الأساسية، يحب أن تكون قيمة حقل "الترويسة التالية" في ترويسة البروتوكول الأصلية مضبوطة إلى القيمة 44.

يبلغ طول ترويسة القطعة 8 بايت، وتتألف من 6 حقول، هي بحسب ترتيب وردوها:

  • حقل الترويسة التالية 8 بت، ويضبط بشكل مشابه لحقل الترويسة التالية في ترويسة البروتوكول الأصلية.
  • حقل محجوز 8 بت، يضبط إلى القيمة 0 عند الإرسال.
  • حقل إزاحة القطعة 13 بت، يحتوي على موقع حمولة القطعة النسبي ضمن حمولة الرزمة الأصلية، وتعبر قيمة الرقم الموجود عن الإزاحة بواحدة هي 8 بايت، فإذا كانت قيمة هذا الحقل مثلاً هي 2، فإن إزاحة القطعة الحقيقية هي 16 بايت.
  • حقل محجوز 2 بت، يُضبط إلى القيمة 0 عند الإرسال.
  • علم المزيد من القطع 1 بت، ويستخدم للدلالة على القطعة الأخيرة، إذا كانت قيمته 1، فهذا يعني أن هناك قطع لاحقة نتجت عن عملية التقطيع، أما إذا كانت قيمته 0 فذلك يعني بأن هذه القطعة هي القطعة الأخيرة.
  • حقل مُعرّف القطعة 32 بت، وهي يحتوي قيمة فريدة تميّز الرزمة الأصلية وجميع القطع التي نتجت عن تقطيعها. هناك عدة خوارزميات لاختيار قيمة المعرّف بحيث يكون فريداً وآمناً، وهي موصوفة في وثيقة طلب التعليقات RFC 7739.

خوارزمية التقطيع

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

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

بشكلٍ عام تنتج عن عملية التقطيع ثلاث حالات مختلفة:

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

قضايا أمنية

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

يقبل مُضيف الإصدار السادس من بروتوكول الإنترنت أن تحتوي رزمة البيانات على ترويسة القطعة بدون تكون القطعة ناتجة عن عملية تقطيع، وتسمى هذه القطع بالقطع الذرية (بالإنجليزية: Atomic Fragment)‏ وهي تنتج في حالات خاصة ناقشها المعيار الأصلي للبروتوكول، على الرغم من أن هذه القطع تكون وحداناً، أي لا يجب أن يتم تجميعها مع أي قطع أخرى، فإنّ المُضيف الوجهة يعاملها مُعاملة القطع التي تنتظر التجميع، ما يُسبب ثغرة أمنية، فقد يقوم المهاجم بإرسال قطعة خبيثة مع قيم مُناسبة في ترويسة القطعة، بحيث تكون قطعة ذرية تقبل التجميع مع قطع أخرى خبيثة تُرسل لاحقاً، ناقشت الوثيقة RFC 6946 كيفية معالجة القطع الذرية لتلافي هذا النوع من الهجمات.

Source: wikipedia.org