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

من أرابيكا، الموسوعة الحرة

هذه هي النسخة الحالية من هذه الصفحة، وقام بتعديلها عبود السكاف (نقاش | مساهمات) في 21:22، 11 سبتمبر 2023 (استبدال وسائط مستغى عنها في الاستشهاد). العنوان الحالي (URL) هو وصلة دائمة لهذه النسخة.

(فرق) → نسخة أقدم | نسخة حالية (فرق) | نسخة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث
تغليف مُعطيات بحسب نموذج الإنترنت (TCP/IP). أحجام المُعطيات والترويسات غير مُتناسبة.

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

إنّ عملية التغليف مُعتَمَدة على نطاقٍ واسعٍ في نماذج الشبكات، ويشمل ذلك نموذج الإنترنت (TCP/IP)[2] ونموذج الاتصال المعياري (OSI).[3]

آليّة العمل

التغليف هو مفهوم تجريديّ، يبين آليّة عمل البروتوكولات مع بعضها البعض ضمن إطارٍعامّ هو نموذج الشبكة. حيث يُضاف للمُعطيات ترويسة خاصّة في كل طبقة من طبقات النموذج، فينتج ما يُسمى بوحدات مُعطيات البروتوكول (PDU)، وهي عبارة عن المُعطيات الموجُودة في طبقةٍ ما والترويسة المُضافة في الطبقة، بالإضافة للمُلحق إنّ وُجِد. عند تغليف المُعطيات تقوم كل طبقة بتمرير وحدة مُعطيات البروتوكول إلى الطبقة التاليّة في النموذج. إن ّ لكلّ بروتوكول بُنّية خاصّة لترويسته حيث يستخدمها لحمل عدد من البايتات التي تُمثّل مُعطيات تحكّم خاصة بوظائفه وآليّات عمله.

تفترض عملية التغليف[4] وجود طرفين يعملان وفق نفس النموذج، ويُشغّلان نفس البروتوكولات، هما مُرسل المُعطيات ومُستقبلها، ويُمكن أن يقوم طرفٌ واحدٌ بلعب دور المُرسل والمُستقبل في نفس الوقت. تبدأ العمليّة من أعلى طبقة في النموذج، وهي الطبقة التي تكون على صلّةٍ مُباشرةٍ مع التطبيقات التي تُولّد المُعطيات المُراد إرسالُها عبر الشبكة، يُضيف البروتوكول العامل على هذه الطبقة أوّل ترويسة للمُعطيات ويُنشئ أول وحدة مُعطيات بروتوكول، ثمّ يتمّ تمرير هذه الوحدة إلى الطبقة التاليّة، حيث يعمل أحد البروتوكولات والذي يقوم بإضافة ترويسته ويُنشئ بذلك وحدة مُعطيات البروتوكول الخاصّة بالطبقة، ثم يتمّ تمرير هذه الوحدة إلى الطبقة التاليّة وهكذا وصولاً إلى الطبقة الأخيرة في النموذج، وهي الطبقة التي تربط النموذج مع وسط النقل.

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

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

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

قد تضيف الطبقة مُلحقاً (Trailer) [5] للمُعطيات بالإضافة للترويسة، ومن الطبقات التي تُضيف مُلحقاً كهذا طبقة الربط في نموذج الإنترنت (TCP/IP)، وطبقة ربط المُعطيات في نموذج الاتصال المعياري (OSI)، ويُستخدَم الملحق من أجل كشف الأخطاء الحاصلة عند النقل، وذلك باعتماد خوارزميّات خاصّة مثل خوارزميّة اختبار الفائض الدوريّ (CRC)[6][7] أو خوارزميّة اختبار مُتتاليّة الإطار (FCS).[8]

إنّ عمليّتي التغليف وفكّ التغليف هي نتيجةُ العمل المُشترك بين طبقات النموذج مع بعضها البعض، تُوصف [9] علاقة الطبقات التي تُمرر وحدة مُعطيات البروتوكول (PDU) بشكلٍ مُباشر فيما بينها ضمن نفس الطرف بأنّها علاقة بين الطبقات المُتجاورة (Adjacent-Layer interconnection)، أمّا العلاقة التي تربط بين الطبقة التي تضيف وحدة مُعطيات بروتوكول ما في الطرف المُرسل، والطبقة التي تتخلّص من نفس الوحدة في الطرف المُستقبل فتُوصف بأنّها على علاقة بين طبقتين مُتماثلتين (Same-Layer interconnection).

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

في حالات خاصة، تبدأ عملية التغليف في طبقة مُغايّرة لأعلى طبقة في الكدسة، وتستمر نُزولاً في طبقات النموذج. من الأمّثلة على ذلك تغليف رسائل [10] بروتوكول رسائل التحكّم في شبكة الإنترنت (ICMP) بحسب نموذج الإنترنت (TCP/IP)، حيث تبدأ العملية في طبقة الإنترنت، عندما يُولّد البروتوكول إحدى رسائله، ثمّ يقوم بروتوكول الإنترنت (IP) بتغليف الرسالة وتوليد رزمة المُعطيات، ثمّ يجري تمرير الرزمة إلى الطبقة التاليّة لتستمر عملية التغليف بعدها بشكل اعتيادي.

إنّ التغليف المُتكرر (Recursive Encapsulation) هو شكلٌ خاصٌّ من أشكال التغليف،[11] وفيه تتمّ عملية إعادة تغليف وحدة مُعطيات بروتوكول (PDU) في طبقةٍ ما مُجدداً من البداية، حيّث تُعامل وكأنّها مُعطيات في طبقة التطبيق، ولهذا النوع من التغليف استخداماتٌ خاصّةً في البروتوكولات النفقيّة.

أمثلة

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

مثال عن التغليف في نموذج الإنترنت

إطار المُعطيات بعد إنجاز عملية التغليف بحسب نموذج الإنترنت (TCP/IP).

يتكون نموذج الإنترنت (TCP/IP) من كدّسة من الطبقات عددُها أربعة، تهتمّ الطبقة العُليّا، وهي طبقة التطبيق، بكيفيّة التعامل مع المُعطيات التي تولدّها التطبيقات، أمّا طبقة النقل، فتكون مُسؤوليّتها الأساسيّة هي تهيئة قنوات الاتصال وتصنيف خدمات الشبكة . تُؤمّن طبقة الإنترنت آليّاتٍ لعنونةٍ عامّةٍ للمُضيفين ولتوجيه الرزم، وأخيراً طبقة الربط، التي تُشكّل واجهة النموذج مع الشبكة المحليّة.

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

  1. يبدأ التغليف في طبقة التطبيق، حيث يستقبل بروتوكول نقل النص الفائق (HTTP)[12] المُعطيات من التطبيق ويضيف الترويسة الخاصّة به، والتي تتضمن معلومات تتعلّق بشكل مباشر بعملية التصفّح والتطبيق الذي ولّد المُعطيات، ثم تُمرر الترويسة والمُعطيات إلى طبقة النقل.
  2. في طبقة النقل، ينشط بروتوكول التحكّم بالنقل (TCP)،[13] الذي يكون قد أسس وبشكل مُسبق قناةً للاتصال مع الجهة البعيدة، يتعامل البروتوكول مع ما ورد من طبقة التطبيق على أنّه مُعطيات فقط، أيّ أنّه لا يُميّز وجود ترويسة طبقة التطبيق، ويقوم بإضافة ترويسته، التي تتضمّن مُعلوماتٍ عن قناة الاتصال وأرقام المنافذ، وفي هذه الحالة سيكون رقم منفذ الوجهة هو (80)،[14] وهو الرقم المُميّز الخاص بخدمة تصفح الويب، بالإضافة لمعلوماتٍ تخصّ وظائف البروتوكول الأُخرى. ثُمّ يتمّ تمرير وحدة مُعطيات البروتوكول (PDU)، والذي يُسمى قطعة المُعطيات، إلى طبقة الإنترنت.
  3. تتعامل طبقة الإنترنت مع ما وردها على أنّه مُعطيات، ثمّ يتمّ إضافة الترويسة الخاصّة بالبروتوكول العامل على هذه الطبقة، وغالباً ما يكون الإصدار الرابع من بروتكول الانترنت (IPv4)[15] أو السادس (IPv6).[16] وتتضمّن الترويسة معلومات خاصّة بالعنونة ووظائف البروتوكول الأخرى، ثمّ يجري تمرير وحدة معطيات البروتوكول (PDU) إلى طبقة الربط.
  4. تضيف طبقة الربط ترويسة ومُلحقاً، تتضمّن الترويسة معلومات تتعلّق ببروتوكول الطبقة، الذي قد يكون الإيثرنت (Ethernet)،[17][18] أو أيّ ببروتوكول آخر يعمل في هذه الطبقة، أمّا اللاحقة فتُخصص لآليّات التحقق من وجود الأخطاء التي تتعلّق بالنقل، وكما في الطبقات السابقة، تعامل بروتوكولات طبقة الربط ما وردها على أنه مُعطيات وتُضيف إليها الترويسة والمُلحق. وبعد هذه المرحلة تتشكل بنية مُعطيات خاصّة تسمى الإطار ، وهي تضمّ المُعطيات والترويسات المُضافة خلال عملية التغليف وهو الشكل النهائي الذي سيُرسل عبر الشبكة.

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

مثال عن التغليف في نموذج الاتصال المعياريّ (OSI)

عملية التغليف وفك التعليف في نموذج الاتصال المعياريّ (OSI).

تتألّف كدسةُ الطبقات في نموذج الاتصال المعياريّ (OSI) من سبع طبقاتٍ مُرقّمة الأدنى إلى الأعلى، وهي بالترتيب: الطبقة الفيزيائيّة وطبقة طبقة ربط المُعطيات وطبقة الشبكة وطبقة النقل وطبقة الجلسة وطبقة العرض وطبقة التطبيق، تكون طبقة التطبيق على اتصال مُباشر مع التطبيقات أمّا الطبقة الفيزيائيّة فتكون على اتصال مباشر مع الوسط الناقل في الشبكة.

في هذا المثال[19]، يُفترض وجود طرفين يتبادلان المُعطيات بشكل مباشر وفق نموذج الاتصال المعياريّ ، لن يتمّ تحديد بروتوكولات بعينِها، للإبقاء على المثال عامّاً. تحصل عملية التعليف كما يلي:

  1. يقوم أحد التطبيقات بتوليد المُعطيات التي يجب إرسالُها عبر الشبكة في الطرف الأول، في طبقة التطبيق يقوم أحد البروتوكولات بإضافة ترويسته وتشكيل وحدة مُعطيات البروتوكول الخاصة بالطبقة السابعة (L7PDU). تُمرر هذه الوحدة إلى طبقة العرض.
  2. بشكلٍ نظريّ، يجب أن يُضيف أحد البروتوكولات ترويسة في كل من طبقتي العرض والجلسة على الترتيب، ثمّ يتمّ تمرير وحدة مُعطيات البروتكول في الطبقة الخامسة (L5PDU) إلى طبقة النقل، ولكن هذه ليست الحالة المُتبعة دوماً، وقد يتمّ إهمال عملية التغليف في هاتين الطبقتين لعدم وجود بروتوكول عامل فيهما.
  3. في طبقة النقل، يُضيف أحد البروتوكولات ترويسته فتنتج وحدة مُعطيات البروتوكول (PDU) الخاصّة بالطبقة، والتي قد تُسمّى قطعة مُعطيات (Segment) إذا كان البروتوكول المُستخدم هو بروتوكول التحكّم بالنقل (TCP) أو حزمة مُعطيات (Datagram) إذا كان البروتوكول المُستخدم هو بروتوكول حزم المُستخدم (UDP)،[20] في نهاية المطاف يتمّ إنتاج وحدة مُعطيات بروتوكول خاصة بالطبقة الرابعة (L4PDU) وتُمَرر هذه الوحدة إلى طبقة الشبكة.
  4. تستقبل طبقة الشبكة وحدة المُعطيات القادمة من الطبقة الرابعة، ويُضيف البروتوكول العامل على هذه الطبقة ترويسته، فتنتج وحدة مُعطيات بروتوكول الطبقة الثالثة (L3PDU)، والتي تُسمىّ رزمة المُعطيات (Packet)، تُمرر الرزمة إلى طبقة ربط المُعطيات .
  5. في الغالب الأعمّ، تحتوي طبقة ربط المُعطيات على بروتكول يُضيف ترويسة ومُلحقاً للرزمة، وينتج بذلك إطار المُعطيات، وهو وحدة مُعطيات البروتوكول الخاصّة بالطبقة الثانية، أهم البروتوكولات العاملة على هذه الطبقة هي بروتوكول الإيثرنت وبروتوكول التحكّم عاليّ المُستوى في ارتباط البيانات (HDLC)،[21] يُمرر الإطار إلى الطبقة الفيزيائيّة.
  6. لا تُضيف الطبقة الفيزيائيّة أي ترويسة أو مُلحقاً للإطار، لكنّها تحوّل الإطار إلى شكلٍ ماديّ في وسط النقل، هذا الشكل هو البت، وهو وحدة مُعطيات البروتوكول في الطبقة الأولى (L1PDU)، ويختلف الشكل الماديّ للبت باختلاف وسط النقل، فقد يكون إشارة كهربائيّة، إذا كانت الشبكة تتكون من أسلاك معدنيّة ، أو إشارة ضوئيّة إذا كان وسط النقل أليافاً بصريّة أو أمواج كهرومغناطيسيّة إذا كانت الشبكة لاسلكيّة.

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

انظر أيضاً

مراجع

  1. ^ "معنى كلمة encapsulation في قاموس ومعجم المعاني الجامِع". موقع المعاني. مؤرشف من الأصل في 2019-12-15. اطلع عليه بتاريخ 26 يوليو/تموز 2017. {{استشهاد ويب}}: تحقق من التاريخ في: |تاريخ الوصول= (مساعدة)
  2. ^ Socolofsky, T.; Kale, C. (يناير1991). "RFC 1180, A TCP/IP Tutorial". The Internet Society (بEnglish). Archived from the original on 21 سبتمبر 2019. Retrieved 26 يوليو 2017. {{استشهاد ويب}}: تحقق من التاريخ في: |تاريخ= (help)
  3. ^ "ISO/IEC 7498-1:1994, Information technology -- Open Systems Interconnection -- Basic Reference Model: The Basic Model". International Organization for Standardization (ISO) (بEnglish). 1994. Archived from the original on 2018-12-30. Retrieved 2017-07-26.{{استشهاد ويب}}: صيانة الاستشهاد: التاريخ والسنة (link)
  4. ^ Behrouz A. Forouzan (2009). TCP/IP Protocol Suite (ط. الرابعة). McGraw-Hill Education. ISBN:0073376043.
  5. ^ Leffler, Samuel J.; Karels, Michael J. (Apr 1984). "RFC 893, Trailer Encapsulations". The Internet Society (بEnglish). Archived from the original on 2016-03-08. Retrieved 2017-07-26.
  6. ^ "System Administration Guide, Volume 3, Information technology, Data Encapsulation and the TCP/IP Protocol Stack". Oracle (بEnglish). Archived from the original on 2014-12-24. Retrieved 2017-07-26.
  7. ^ W. Peterson، W. (يناير 1961). "Cyclic Codes for Error Detection". IEEE. ج. 49: 228-235. DOI:10.1109/JRPROC.1961.287814. ISSN:0096-8390. {{استشهاد بدورية محكمة}}: الاستشهاد بدورية محكمة يطلب |دورية محكمة= (مساعدة)
  8. ^ Simpson, W. (Jul 1994). "RFC 1662, PPP in HDLC-like Framing". Internet Society (بEnglish). Archived from the original on 2019-03-28. Retrieved 2017-07-26.
  9. ^ Wendell Odom (2013). CCENT/CCNA ICND1 100-101 Official Cert Guide (بEnglish) (الأولى ed.). Cisco Press. ISBN:978-1-58714-385-4.
  10. ^ Behrouz A. Forouzan (2007). Data Communications and Networking (بEnglish) (الرابعة ed.). McGraw-Hill. p. p.621-630. ISBN:0-07-296775-7. {{استشهاد بكتاب}}: |صفحة= يحتوي على نص زائد (help)
  11. ^ Perkins, C. (أوكتوبر 1996). "RFC 2003, IP Encapsulation within IP". The Internet Society (بEnglish). Archived from the original on 15 ديسمبر 2019. Retrieved 25 يوليو 2017. {{استشهاد ويب}}: تحقق من التاريخ في: |تاريخ= (help)
  12. ^ 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 (بEnglish). Archived from the original on 2019-09-21. Retrieved 2017-07-26.
  13. ^ Postal, J. (Sep 1981). "RFC 793, Transmission control protocol, DARPA internet program,protocol specification". The Internet Society (بEnglish). Archived from the original on 2019-08-25. Retrieved 2017-07-26.
  14. ^ "Service Name and Transport Protocol Port Number Registry". IANA (بEnglish). Archived from the original on 2018-06-14. Retrieved 2017-07-26.
  15. ^ Postel, J. (سبتمبر 1981). "RFC 791, Internet Protocol, DARPA Internet Program Protocol Specification". The Internet Society (بEnglish). Archived from the original on 18 سبتمبر 2019. Retrieved 26 يوليو2017. {{استشهاد ويب}}: تحقق من التاريخ في: |تاريخ الوصول= (help)
  16. ^ Deering, S.; Hinden, R. (Dec 1998). "RFC 2460, Network Working Group: version 6 of the Internet Protocol (IPv6)". The Internet Society (بEnglish). Archived from the original on 2019-09-18. Retrieved 2017-07-26.
  17. ^ Horing, Charles (Apr 1984). "RFC 894, A Standard for the Transmission of IP Datagrams over Ethernet Networks". The Internet Society (بEnglish). Archived from the original on 2019-03-28. Retrieved 2017-07-22.
  18. ^ "IEEE 802.3-2015, IEEE Standard for Ethernet". Institute of Electrical and Electronics Engineers (IEEE) (بEnglish). 2015. Archived from the original on 2017-09-08. Retrieved 2017-07-26.
  19. ^ "Internetworking Basics, OSI Model Layers and Information Exchange". Cisco (بEnglish). Archived from the original on 2017-07-31. Retrieved 2017-07-26.
  20. ^ Postal, J. (Aug 1980). "RFC 768, User Datagram Protocol". The Internet Society (بEnglish). Archived from the original on 2018-10-31. Retrieved 2017-07-26.
  21. ^ "ISO/IEC 13239:2002, Information technology -- Telecommunications and information exchange between systems -- High-level data link control (HDLC) procedures". International Organization for Standardization (ISO) (بEnglish). 2002. Archived from the original on 23 مارس 2019. Retrieved 22 يوليو 2017. {{استشهاد ويب}}: تحقق من التاريخ في: |سنة= / |تاريخ= mismatch (help)