في بعض من طبقات نموذج الربط البيني للأنظمة المفتوحة لشبكات البيانات، التقطيع (بالإنجليزية: Fragmentation) أو (بالإنجليزية: Segmentation) هو تقسيم الحمولة في وحدة بيانات بــروتوكول إلى قسمين أو أكثر بأطوال أصغر من طول الحمولة الأصلية. يحصل التقطيع عندما يتجاوز طول حمولة وحدة بيانات البــروتوكول عتبة مُحددة يحددها بــروتوكول الطبقة.
التقطيع هو وظيفة أساسية لبــروتوكولات طبقة الشبكة، ولـكنه قد يحصل في طبقة النقل أو في طبقة ربط البيانات أو في الطبقة المادية. يهدف التقطيع بشكل الأساسي إلى توليد وحدات بيانات بــروتوكول بأطوال أقل، لـكنّه قد يُستخــدم كجزء من آلية التقطيع والتوزيع في طبقة الربط (LFI)، أو لتحسين الوصُــول إلى الوسط المادي في الطبقة المادية.
نظرة عــامة
التقطيع بحسب حزمة بــروتوكولات الإنترنت (TCP/IP) إذا حصل التقطيع في كل طبقة بدءًا من طبقة النقل، ولـكن هذه ليست حالة إلزامية، فذلـك مرتبط بالحجم الأقصى لوحدة بيانات البــروتوكول المسموح به في كل طبقة.
أنماط التقطيع: (أ) التقطيع المرئي بالنسبة للبــروتوكول، وفيه يمكن للبــروتوكول إعــادة تجميع القطع وبناء الحمولة الأصلية في عقدة ما على المسار بين المصدر والوجهة. (ب) التقطيع غير المرئي بالنسبة للبــروتوكول، وفيه لا يمكن للبــروتوكول إعــادة تجميع القطع إلا في الوجهة النهائية.
موقع ترويسة بــروتوكول التحكم بالنقل عند تقطيع رزمة بيانات لبــروتوكول الإنترنت، توجد الترويسة في القطعة الأولى فقط، ويسبب ذلـك ثغرة أمنية يمكن استخــدامها لإطلاق هجوم التقطيع عبــر بــروتوكول الإنترنت.
بحسب نموذج الاتصال المـعياري، تتكون وحدة بيانات البــروتوكول في كل طبقة من حمولة وترويسة، والتقطيع هو تقسيم الحمولة في بعض طبقات النموذج، إلى قطعتين أو أكثر بحيث تُشكّل كل قطعة حمولة لوحدة بيانات بــروتوكول أصغر من وحدة البيانات الأصلية التي تمّ تقطيعُها. يحصل التقطيع في الطبقات الرابعة والثالثة والثانية والأولى من النموذج، وتحدد البــروتوكولات التي تعمل في هذه الطبقات قيمًا مُميزة لـكل طبقة، تُستخــدم كعتبة لتحديد متى يحصل التقطيع، فإذا كان طول وحدة بيانات البــروتوكول أكبــر من قيمة العتبة كان التقطيع إلزاميًّا.
إذا كان بــروتوكول النقل المستعمل يدعم التقطيع، فإنّ التقطيع في طبقة النقل لا يحصل إلا في المُضيف المصدر فقط، وهو يهدف إلى إنشاء وحدات بيانات بــروتوكول ذات طول أقصر من طول الوحدة الأصلية. لإنجاز التقطيع في هذه الطبقة، يتمّ اعتبار كل ما ورد من الطبقة الأعلى حمولة، ويجري تقسيمها إلى قطع، ثُم تُغلّف القطع بترويسة البــروتوكول لتُنتج وحدات بيانات بــروتوكول طبقة النقل. يدعم بــروتوكول التحكم بالنقل عملية التقطيع، وتسمى وحدة بيانات البــروتوكول الناتجة عن تغليف أقسام الحمولة السابقة بترويسات البــروتوكول قطعة (بالإنجليزية: Segment)، أمّا بــروتوكول حزم بيانات المستخــدم فهو لا يدعم التقطيع، ويُغلّف الحمولة بإضافة ترويسته لها كما وردت، دون تقطيعها، وتسمى وحدة بيانات البــروتوكول الناتجة حزمة البيانات (بالإنجليزية: Datagram). وفي الحالتين يتم تمرير وحدات بيانات البــروتوكول الناتجة إلى طبقة الشبكة.
التقطيع هو وظيفة أساسية لبــروتوكولات الشبكة، وهو يحصل بعد اتخاذ قرار التوجيه لوحدة بيانات البــروتوكول، والتي تُسمى رزمة بيانات في هذه الطبقة، وقد يكون في المُضيف المصدر الذي ولد الحزمة أو في أحد المُوجّهات على المسار، أو في كليهما. تتحدد عملية تقطيع رزمة البيانات بمقارنة طول الحزمة مـع وحدة النقل العظمى لطبقة الشبكة، يحصل التقطيع إذا كان طول الحزمة أكبــر من قيمة وحدة النقل العظمى، وهو يهدف إلى إنشاء رزم بيانات ذات طول أصغر من الحزمة الأصلية. يُمكن أن يحصل التقطيع أكثر من مرة على طول المسار لحين وصُــول الحزمة إلى وجهتها، ويُسمّى حينها بالتقطيع المُتعدد. لا يتمّ تجميع قطع الحزمة إلا في المُضيف الوجهة، والسبب في ذلـك أن القطع قد لا تسلـك نفس المسار، وبالتالي لن تمر عبــر نفس المُوجّهات في طريقها للمضيف الوجهة. تمرر طبقة الشبكة رزم البيانات إلى طبقة ربط البيانات.
يُمكن أن يحصل التقطيع في طبقة ربط البيانات، إما لإنتاج أطر بيانات ذات طول أصغر، أو كجزء من آلية التقطيع والتوزيع في طبقة الربط (بالإنجليزية: Link Fragmentation and Interleaving اختصاراً LFI). يحصل التقطيع إذا كانت طول وحدة بيانات البــروتوكول في طبقة ربط البيانات، ويسمى إطار البيانات، أكبــر من قيمة وحدة النقل العظمى للطبقة. بعض بــروتوكولات الربط لا يقوم بالتقطيع في هذه الطبقة، مثل الإيثرنت، ولـكنه يحدد قيمة لوحدة النقل العظمى، ويجب على بــروتوكول الشبكة أن يلتزم بها. تفرض بعض بــروتوكولات الربط قيمة أعظمية محدودة بشكلٍ مُفرط لوحدة النقل العظمى، مثل بــروتوكول الشبكات الشخصية اللاسلـكية منخفضة المُعدّل الذي يُحدد طول إطار البيانات الأعظمي ليكون 127 بايت فقط. وقد يحصل التقطيع في الطبقة المادية، ولا يكون الهدف منه تقسيم وحدة بيانات البــروتوكول إلى قطع أصغر، بل تحسين الوصُــول إلى وسط الاتصال المادي.
يرتبط التقطيع بعملية التغليف بشكلٍ وثيق، ويُسبب التقطيع زيادة في الطول الإجمالي للبيانات، والسبب في هذه الزيادة هو الترويسات المُضافة للقطع أثناء تغليفها، فإذا كانت وحدة بيانات البــروتوكول الأصليّة ذات طول ما مثلًا ( X {\displaystyle {{\text{X}}_{}}}) بايت، ناتج عن حمولة بطول ( Y {\displaystyle {{\text{Y}}_{}}}) بايت وترويسة بطول ( Z {\displaystyle {{\text{Z}}_{}}}) بايت حيث ( X=Y+Z {\displaystyle {{\text{X=Y+Z}}_{}}})، فإنّ تقطيع قسم الحمولة إلى ثلاث قطع أطوالها ( Y1,Y2,Y3 {\displaystyle {{\text{Y1,Y2,Y3}}_{}}}) بايت بالترتيب، وإضافة ترويسة الطبقة بطول ( Z {\displaystyle {{\text{Z}}_{}}}) بايت لـكل قطعة، سيسبب زيادة في الطول الإجمالي للبيانات، لتبيان هذه الزيادة، يُمكن التعبير عن وحدات بيانات البــروتوكول الناتجة عن التقطيع بالثلاثيات ( X1,Y1,Z {\displaystyle {{\text{X1,Y1,Z}}_{}}}) و ( X2,Y2,Z {\displaystyle {{\text{X2,Y2,Z}}_{}}}) و ( X3,Y3,Z {\displaystyle {{\text{X3,Y3,Z}}_{}}}) على الترتيب. ويكون مجموع أطوال الحمولة في القطع مُساويًا لطول الحمولة في القطعة الأصلية، أي:
Y=Y1+Y2+Y3 {\displaystyle {{\text{Y=Y1+Y2+Y3}}_{}}}
أمّا الطول الإجمالي، أي مجموع أطوال كل الترويسات والحمولات، فهو يزداد بمقدار ترويستين أي ( 2Z {\displaystyle {{\text{2Z}}_{}}}) بايت في هذه الحالة، ويُمكن التعبير عن هذه الزيادة بشكلٍ عــام بالطريقة التالية:
X+(n-1)Z=X1+X2+..+Xn {\displaystyle {{\text{X+(n-1)Z=X1+X2+..+Xn}}_{}}}
حيث ( n {\displaystyle {{\text{n}}_{}}}) هي عدد القطع الناتجة عن عملية التقطيع.
بالنسبة للبــروتوكول الذي يقوم بالتقطيع كإحدى وظائف الطبقة، هناك نمطين للتقطيع، بحسب توافر إمكانية تجميع الحزمة الأصلية، الأول هو التقطيع المرئي أو الملحوظ بالنسبة للبــروتوكول (بالإنجليزية: Transparent Fragmentation)، وفيه يدرك البــروتوكول عملية حصُــول التقطيع في أي نقطة في الشبكة، ونتيجة لذلـك، يكون بإمكانه إعــادة تجميع القطع ثم بناء حمولة الوحدة الأصلية، والثاني هو التقطيع غير المرئي أو غير الملحوظ بالنسبة للبــروتوكول (بالإنجليزية: Non-Transparent Fragmentation) وفيه لا يمكن للبــروتوكول أن يعيد تجميع القطع إلا في وجهتها النهائية.
عند استخــدام بــروتوكول التحكم بالنقل كبــروتوكول نقل في الشبكة، فإن فقدان قطعة واحدة من مجموعة القطع التي نتجت عن تقطيع رزمة البيانات الأصليّة سيسبب إعــادة إرسال كل القطع مرة أخرى، والسبب في ذلـك أن المُضيف الوجهة لا يكون قادرًا على تجميع الحزمة ما لم تصل كُل قطعها، وبالتالي لن يقوم بإرسال إشعــار لتأكيد الاستلام. نتيجة لذلـك، في مصدر الحزمة الأصليّة، سيسبب غياب إشعــار الاستلام إعــادة إرسال نسخة من الحزمة الأصلية كاملة، وستمر النسخة بنفس المراحل التي مرت فيها الحزمة الأصلية، أي سيتم تقطيعها وإرسال كل القطع عبــر الشبكة مرة أخرى، على الرغم من أن ما فقد هو قطعة واحدة فقط وليس كامل الحزمة.
في بعض الحالات، قد يسبب استقبال حركة بيانات مكونة من عدد كبير من القطع من رزم بيانات مختلفة لا يمكن تجميعها امتلاء الذاكرة المخصصة لحفظ القطع، وقد يكون ذلـك وسيلة لبدء هجوم ينتمي لعــائلة من الهجمات التي تعتمد على حصُــول التقطيع في الشبكة، وقد تهدف إلى محاولة تجاوز نظام كشف التسلل مثلًا. فالتقطيع في طبقة الشبكة يسبب ثغرة أمنية، لأن ترويسة بــروتوكول طبقة النقل التي تحتوي أرقام المنافذ لن تُوجد إلا في القطعة الأولى فقط، ويمكن أن يعتمد المهاجمون على غياب ترويسة بــروتوكول النقل في باقي القطع لإطلاق هجوم يُعرف باسم بهجوم القطعة الصغيرة (بالإنجليزية: Tiny Segment Attack) أو قد يكون الهجوم شكلًا من أشكال هجوم حجب الخــدمة، من خلال محاولة ملء الذاكرة المخصصة لعملية التجميع أو استهلاك حدة المـعــالجة المركزية بشكلٍ مُفرط.
يسبب الاعتماد على التقطيع العديد من المشاكل في الشبكة، فمثلًا يجب تجميع كل أجزاء الحزمة الأصلية قبل التمكن من استعــادتها، ويسبب هذا إرهاقًا لموارد المُضيف الوجهة، بالإضافة لمشكلة القطعة الأخيرة التي قد تكون ذات حجم صغير، ويسبب إرسالها عبــر الشبكة استهلاكًا غير مرغوب لمورد الشبكة. وأخيرًا، في حال تقطيع رزم أو أطر البيانات فإنّ مـعلومات تخص بــروتوكول الطبقات العليا، مثل أرقام المنافذ في طبقة النقل مثلًا لن تتواجد إلا في قطعة واحدة فقط، ما يعني أن جداران الحماية لا تستطيع أن تفحص هذه الحزم، ما يخلق بدوره ثغرة أمنية.