التغليف هو مفهوم تجريديّ، يبين آليّة عمل البروتوكولات مع بعضها البعض ضمن إطارٍعامّ هو نموذج الشبكة. حيث يُضاف للمُعطياتترويسة خاصّة في كل طبقة من طبقات النموذج، فينتج ما يُسمى بوحدات مُعطيات البروتوكول (PDU)، وهي عبارة عن المُعطيات الموجُودة في طبقةٍ ما والترويسة المُضافة في الطبقة، بالإضافة للمُلحق إنّ وُجِد. عند تغليف المُعطيات تقوم كل طبقة بتمرير وحدة مُعطيات البروتوكول إلى الطبقة التاليّة في النموذج. إن ّ لكلّ بروتوكول بُنّية خاصّة لترويسته حيث يستخدمها لحمل عدد من البايتات التي تُمثّل مُعطيات تحكّم خاصة بوظائفه وآليّات عمله.
تفترض عملية التغليف[5]
وجود طرفين يعملان وفق نفس النموذج، ويُشغّلان نفس البروتوكولات، هما مُرسل المُعطيات ومُستقبلها، ويُمكن أن يقوم طرفٌ واحدٌ بلعب دور المُرسل والمُستقبل في نفس الوقت. تبدأ العمليّة من أعلى طبقة في النموذج، وهي الطبقة التي تكون على صلّةٍ مُباشرةٍ مع التطبيقات التي تُولّد المُعطيات المُراد إرسالُها عبر الشبكة، يُضيف البروتوكول العامل على هذه الطبقة أوّل ترويسةللمُعطيات ويُنشئ أول وحدة مُعطيات بروتوكول، ثمّ يتمّ تمرير هذه الوحدة إلى الطبقة التاليّة، حيث يعمل أحد البروتوكولات والذي يقوم بإضافة ترويسته ويُنشئ بذلك وحدة مُعطيات البروتوكول الخاصّة بالطبقة، ثم يتمّ تمرير هذه الوحدة إلى الطبقة التاليّة وهكذا وصولاً إلى الطبقة الأخيرة في النموذج، وهي الطبقة التي تربط النموذج مع وسط النقل.
يقوم الطرف المُرسل بتغليف المُعطيات بدءاً من أعلى طبقة في النموذج ثمّ نُزُولاً، أمّا في المُستقبل فتحصل عملية فكّ التغليف (Deecapsulation)، بشكلٍ مُعاكسٍ بدءاً من أدنى طبقة فيه، وهي الطبقة التي تستقبل المُعطيات صعوداً إلى أعلى طبقةٍ والتي تكون على اتصالٍ مُباشرٍ مع التطبيق، حيث يقوم البروتوكول العامل على كل طبقة في الطرف المُستقبل بإزالة الترويسة التي أضافها نفس البروتوكول في طرف الإرسال. ولهذا فإنّ العمل وفق نفس النموذج ودعم نفس البروتوكولات هو شرطٌ أساسيٌ لنجاح عمليتي التغليف وفكّ التغليف.
يقوم كل طرف بعمليتي التغليف وفكّ التغليف طالما أنه قادر على تبادل المُعطيات، ويمكن أن تحصل عمليّة تغليف مُعطياتتطبيقٍ ما ثُمّ فكّ تغليفها ضمن نفس الطرف، دون أن يتمّ إرسالُها عبر الشبكة، وفي هذه الحالة يكون التطبيق العامل في ذلك الطرف هو المُرسل والمُستقبل في نفس الوقت، حيث يتمّ إرسال المُعطيات بحسب نموذج الشبكة، ليجري تغليفُها أصُولاً، وفي الطبقة الأخيرة من النموذج يتمّ مُعاملتُها مُعاملةَ المُعطيات الواردة، حيث تعاود الصعود مُجدداً نحو أعلى طبقة حيّثُ يجري فكّ تغليفِها بالتدريج بدون أن تغادر الطرف الذي تمّ توليدها فيه باتجاه الشبكة، ولهذا أهميّة خاصّة في عملية تطوير البرمجيّات.
إنّ عمليّتي التغليف وفكّ التغليف هي نتيجةُ العمل المُشترك بين طبقات النموذج مع بعضها البعض، تُوصف
[10]
علاقة الطبقات التي تُمرر وحدة مُعطيات البروتوكول (PDU) بشكلٍ مُباشر فيما بينها ضمن نفس الطرف بأنّها علاقة بين الطبقات المُتجاورة (Adjacent-Layer interconnection)، أمّا العلاقة التي تربط بين الطبقة التي تضيف وحدة مُعطيات بروتوكول ما في الطرف المُرسل، والطبقة التي تتخلّص من نفس الوحدة في الطرف المُستقبل فتُوصف بأنّها على علاقة بين طبقتين مُتماثلتين (Same-Layer interconnection).
تقوم المُوجّهات أثناء توّجيهالمُعطيات من شبكة إلى أُخرى بفكّ تغليف الإطار واستخراج الرزمة، حيث يتمّ تعديل بعض الحقول فيها لأغراض تتعلق بالتوّجيه ، ثم يُعاد تغليف الرزمة ضمن إطارٍ جديدٍ مناسبٍ للمعيار الفيزيائيّ للشبكة التي سيتمّ توجيه الرزمة إليّها، وهكذا تنتقل الرزمة من شبكةٍ إلى أخرى حيّث تُعاد عمليتي التغليف وفكّ التغليف في كل مُوجّه على طول المسار. لا تقوم المُبدّلات بعملية التغليف أو فكّ التغليف، وتكتفي بتبديل الأطر بين منافذها.
في حالات خاصة، تبدأ عملية التغليف في طبقة مُغايّرة لأعلى طبقة في الكدسة، وتستمر نُزولاً في طبقات النموذج. من الأمّثلة على ذلك تغليف رسائل [11]بروتوكول رسائل التحكّم في شبكة الإنترنت (ICMP) بحسب نموذج الإنترنت (TCP/IP)، حيث تبدأ العملية في طبقة الإنترنت، عندما يُولّد البروتوكول إحدى رسائله، ثمّ يقوم بروتوكول الإنترنت (IP) بتغليف الرسالة وتوليد رزمة المُعطيات، ثمّ يجري تمرير الرزمة إلى الطبقة التاليّة لتستمر عملية التغليف بعدها بشكل اعتيادي.
إنّ التغليف المُتكرر (Recursive Encapsulation) هو شكلٌ خاصٌّ من أشكال التغليف،[12] وفيه تتمّ عملية إعادة تغليف وحدة مُعطيات بروتوكول (PDU) في طبقةٍ ما مُجدداً من البداية، حيّث تُعامل وكأنّها مُعطيات في طبقة التطبيق، ولهذا النوع من التغليف استخداماتٌ خاصّةً في البروتوكولات النفقيّة.
أمثلة
فيما سيأتي، مثالين تطبيقيين لكيفيّة إنجاز عملية التغليف، في المثال الأول يتمّ استعمال نموذج الإنترنت (TCP/IP)، أمّا في المثال الثاني فإن النموذج المُستعمل هو نموذج الاتصال المعياريّ (OSI).
تضيف طبقة الربطترويسة ومُلحقاً، تتضمّن الترويسة معلومات تتعلّق ببروتوكول الطبقة، الذي قد يكون الإيثرنت (Ethernet)،[18][19] أو أيّ ببروتوكول آخر يعمل في هذه الطبقة، أمّا اللاحقة فتُخصص لآليّات التحقق من وجود الأخطاء التي تتعلّق بالنقل، وكما في الطبقات السابقة، تعامل بروتوكولاتطبقة الربط ما وردها على أنه مُعطيات وتُضيف إليها الترويسة والمُلحق. وبعد هذه المرحلة تتشكل بنية مُعطيات خاصّة تسمى الإطار ، وهي تضمّ المُعطياتوالترويسات المُضافة خلال عملية التغليف وهو الشكل النهائي الذي سيُرسل عبر الشبكة.
في الطرف المُستقبل، تحصل عملية فكّ التغليف بشكلٍ مُعاكسٍ لعمليّة التغليف، حيث تُعاد الخُطوات السابقة بدءاً من الطبقة الرابعة ثُمّ الثالثة وهكذا، ولكنّ يتمّ إزالة الترويسة المُرتبطة بالطبقة، بالإضافة للمُلحق في طبقة الربط، ثمّ يُمرر الناتج صُعوداً نحو الأعلى.
بشكلٍ نظريّ، يجب أن يُضيف أحد البروتوكولاتترويسة في كل من طبقتي العرضوالجلسة على الترتيب، ثمّ يتمّ تمرير وحدة مُعطيات البروتكول في الطبقة الخامسة (L5PDU) إلى طبقة النقل، ولكن هذه ليست الحالة المُتبعة دوماً، وقد يتمّ إهمال عملية التغليف في هاتين الطبقتين لعدم وجود بروتوكول عامل فيهما.
في طرف الإستقبال تحصل عملية فكّ التغليف بشكلٍ مُعاكس لعمليّة التغليف، حيّث تبدأ من الطبقة الفيزيائيّة التي تكون على اتصالٍ مُباشر مع وسط النقل وتنتهي بطبقة التطبيق حيث التطبيق الذي يستقبل المُعطيات، وفي كل طبقة يتم إزالة الترويسة، والمُلحق في حال وجوده، اللذان تمّ إضافتهما في نفس الطبقة في طرف الإرسال، ثُمّ تمرير الناتج إلى الطبقة الأعلى.
^Socolofsky, T.; Kale, C. (يناير1991). "RFC 1180, A TCP/IP Tutorial". The Internet Society (بالإنجليزية). Archived from the original on 21 سبتمبر 2019. Retrieved 26 يوليو 2017. {{استشهاد ويب}}: تحقق من التاريخ في: |تاريخ= (help)
^Behrouz A. Forouzan (2009). TCP/IP Protocol Suite (ط. الرابعة). McGraw-Hill Education. ISBN:0073376043.
^Leffler, Samuel J.; Karels, Michael J. (Apr 1984). "RFC 893, Trailer Encapsulations". The Internet Society (بالإنجليزية). Archived from the original on 2016-03-08. Retrieved 2017-07-26.
^Fielding, R.; Gettys, J.; Mogul, J.; Frystyk, H.; Masinter, L.; Leach, P.; Berners-Lee, T. (Jun 1999). "Hypertext Transfer Protocol -- HTTP/1.1". The Internet Society (بالإنجليزية). Archived from the original on 2019-09-21. Retrieved 2017-07-26.