تغليف (شبكات)

التغليف
(بالإنجليزية: Encapsulation) هو طريقة لعمل بروتوكولات الاتصالات مع بعضها البعض لإعداد البيانات التي يُراد نقلُها عبر الشبكة. تُقسّم نماذج الشبكة عملية إعداد البيانات وظيفيّاً إلى عدد من المراحل أو الطبقات، ويتمّ تصنيف بروتوكولات الشبكة بحسب وظيفتها لتتوضع في طبقة معيّنة من النموذج. يُحدد التغليف الطريقة والترتيب الذي تقوم فيه البروتوكولات بإضافة ترويساتها إلى البيانات بدءأ من التطبيق الذي يُولّدها وصُولاً إلى وسط النقل في الشبكة.
إنّ عملية التغليف مُعتَمَدة على نطاقٍ واسعٍ في نماذج الشبكات، ويشمل ذلك نموذج الإنترنت (TCP/IP) ونموذج الاتصال المعياري (OSI).

آليّة العمل

التغليف هو مفهوم تجريديّ ، يبين آليّة عمل البروتوكولات مع بعضها البعض ضمن إطارٍعامّ هو نموذج الشبكة. حيث يُضاف للمُعطيات ترويسة خاصّة في كل طبقة من طبقات النموذج، فينتج ما يُسمى بوحدات مُعطيات البروتوكول (PDU)، وهي عبارة عن المُعطيات الموجُودة في طبقةٍ ما والترويسة المُضافة في الطبقة، بالإضافة للمُلحق إنّ وُجِد. عند تغليف المُعطيات تقوم كل طبقة بتمرير وحدة مُعطيات البروتوكول إلى الطبقة التاليّة في النموذج. إن ّ لكلّ بروتوكول بُنّية خاصّة لترويسته حيث يستخدمها لحمل عدد من البايتات التي تُمثّل مُعطيات تحكّم خاصة بوظائفه وآليّات عمله.
تفترض عملية التغليف
وجود طرفين يعملان وفق نفس النموذج، ويُشغّلان نفس البروتوكولات، هما مُرسل المُعطيات ومُستقبلها، ويُمكن أن يقوم طرفٌ واحدٌ بلعب دور المُرسل والمُستقبل في نفس الوقت. تبدأ العمليّة من أعلى طبقة في النموذج، وهي الطبقة التي تكون على صلّةٍ مُباشرةٍ مع التطبيقات التي تُولّد المُعطيات المُراد إرسالُها عبر الشبكة، يُضيف البروتوكول العامل على هذه الطبقة أوّل ترويسة للمُعطيات ويُنشئ أول وحدة مُعطيات بروتوكول، ثمّ يتمّ تمرير هذه الوحدة إلى الطبقة التاليّة، حيث يعمل أحد البروتوكولات والذي يقوم بإضافة ترويسته ويُنشئ بذلك وحدة مُعطيات البروتوكول الخاصّة بالطبقة، ثم يتمّ تمرير هذه الوحدة إلى الطبقة التاليّة وهكذا وصولاً إلى الطبقة الأخيرة في النموذج، وهي الطبقة التي تربط النموذج مع وسط النقل.
يقوم الطرف المُرسل بتغليف المُعطيات بدءاً من أعلى طبقة في النموذج ثمّ نُزُولاً، أمّا في المُستقبل فتحصل عملية فكّ التغليف (Deecapsulation)، بشكلٍ مُعاكسٍ بدءاً من أدنى طبقة فيه، وهي الطبقة التي تستقبل المُعطيات صعوداً إلى أعلى طبقةٍ والتي تكون على اتصالٍ مُباشرٍ مع التطبيق، حيث يقوم البروتوكول العامل على كل طبقة في الطرف المُستقبل بإزالة الترويسة التي أضافها نفس البروتوكول في طرف الإرسال. ولهذا فإنّ العمل وفق نفس النموذج ودعم نفس البروتوكولات هو شرطٌ أساسيٌ لنجاح عمليتي التغليف وفكّ التغليف.
يقوم كل طرف بعمليتي التغليف وفكّ التغليف طالما أنه قادر على تبادل المُعطيات، ويمكن أن تحصل عمليّة تغليف مُعطيات تطبيقٍ ما ثُمّ فكّ تغليفها ضمن نفس الطرف، دون أن يتمّ إرسالُها عبر الشبكة، وفي هذه الحالة يكون التطبيق العامل في ذلك الطرف هو المُرسل والمُستقبل في نفس الوقت، حيث يتمّ إرسال المُعطيات بحسب نموذج الشبكة، ليجري تغليفُها أصُولاً، وفي الطبقة الأخيرة من النموذج يتمّ مُعاملتُها مُعاملةَ المُعطيات الواردة، حيث تعاود الصعود مُجدداً نحو أعلى طبقة حيّثُ يجري فكّ تغليفِها بالتدريج بدون أن تغادر الطرف الذي تمّ توليدها فيه باتجاه الشبكة، ولهذا أهميّة خاصّة في عملية تطوير البرمجيّات.
قد تضيف الطبقة مُلحقاً (Trailer) للمُعطيات بالإضافة للترويسة، ومن الطبقات التي تُضيف مُلحقاً كهذا طبقة الربط في نموذج الإنترنت (TCP/IP)، وطبقة ربط المُعطيات في نموذج الاتصال المعياري (OSI)، ويُستخدَم الملحق من أجل كشف الأخطاء الحاصلة عند النقل، وذلك باعتماد خوارزميّات خاصّة مثل خوارزميّة اختبار الفائض الدوريّ (CRC) 
أو خوارزميّة اختبار مُتتاليّة الإطار (FCS).
إنّ عمليّتي التغليف وفكّ التغليف هي نتيجةُ العمل المُشترك بين طبقات النموذج مع بعضها البعض، تُوصف 

علاقة الطبقات التي تُمرر وحدة مُعطيات البروتوكول (PDU) بشكلٍ مُباشر فيما بينها ضمن نفس الطرف بأنّها علاقة بين الطبقات المُتجاورة (Adjacent-Layer interconnection)، أمّا العلاقة التي تربط بين الطبقة التي تضيف وحدة مُعطيات بروتوكول ما في الطرف المُرسل، والطبقة التي تتخلّص من نفس الوحدة في الطرف المُستقبل فتُوصف بأنّها على علاقة بين طبقتين مُتماثلتين (Same-Layer interconnection).
تقوم المُوجّهات أثناء توّجيه المُعطيات من شبكة إلى أُخرى بفكّ تغليف الإطار واستخراج الرزمة، حيث يتمّ تعديل بعض الحقول فيها لأغراض تتعلق بالتوّجيه ، ثم يُعاد تغليف الرزمة ضمن إطارٍ جديدٍ مناسبٍ للمعيار الفيزيائيّ للشبكة التي سيتمّ توجيه الرزمة إليّها،وهكذا تنتقل الرزمة من شبكةٍ إلى أخرى حيّث تُعاد عمليتي التغليف وفكّ التغليف في كل مُوجّه على طول المسار. لا تقوم المُبدّلات بعملية التغليف أو فكّ التغليف، وتكتفي بتبديل الأطر بين منافذها.
في حالات خاصة، تبدأ عملية التغليف في طبقة مُغايّرة لأعلى طبقة في الكدسة، وتستمر نُزولاً في طبقات النموذج. من الأمّثلة على ذلك تغليف رسائل  بروتوكول رسائل التحكّم في شبكة الإنترنت (ICMP) بحسب نموذج الإنترنت (TCP/IP)، حيث تبدأ العملية في طبقة الإنترنت، عندما يُولّد البروتوكول إحدى رسائله، ثمّ يقوم بروتوكول الإنترنت (IP) بتغليف الرسالة وتوليد رزمة المُعطيات، ثمّ يجري تمرير الرزمة إلى الطبقة التاليّة لتستمر عملية التغليف بعدها بشكل اعتيادي.
إنّ التغليف المُتكرر (Recursive Encapsulation) هو شكلٌ خاصٌّ من أشكال التغليف، وفيه تتمّ عملية إعادة تغليف وحدة مُعطيات بروتوكول (PDU) في طبقةٍ ما مُجدداً من البداية، حيّث تُعامل وكأنّها مُعطيات في طبقة التطبيق، ولهذا النوع من التغليف استخداماتٌ خاصّةً في البروتوكولات النفقيّة.

أمثلة

فيما سيأتي، مثالين تطبيقيين لكيفيّة إنجاز عملية التغليف، في المثال الأول يتمّ استعمال نموذج الإنترنت (TCP/IP)، أمّا في المثال الثاني فإن النموذج المُستعمل هو نموذج الاتصال المعياريّ (OSI).