فهم نموذج التواصل بين المضيفين في الشبكات
قطعنا شوطًا طويلًا في تطوير الاتصالات الشبكيّة؛ ما بدأ كنموذج (model) احتكاري (proprietary) تُعرِّف فيه الشركاتُ تقنياتها والعتاد والبرمجيات التي تعمل فقط على منتجاتها، أصبح نموذجًا مفتوحًا للاتصال والدمج بين الأنظمة، بناءً على معاييرٍ تسمح لعدِّة مصنِّعين بالاستفادة من الشبكة، وبناء تطبيقاتٍ تعمل على بيئات شبكيّة من عدِّة مصنِّعين؛ وحتى الإدارة أصبحت مفتوحة، يمكنك التفكير في برامج الإدارة التي تجري عملية صيانة إدارية وتوفِّر وظائف لعناصر الشبكة التي تأتي من عدِّة شركات مُصنِّعة؛ سنحتاج في هذه الظروف إلى تقسيم عناصر ومكونات الشبكة إلى طبقات؛ وربما كانت أول طبقتين تفصلان التطبيقات عن بنية الشبكة؛ لكن الآن نجد طبقاتٍ متعدِّدة ضمن الشبكة لتحديد وظائف العناصر الشبكيّة.
نموذج الشبكة الطبقي (OSI Model)
أدت طريقة التفكير السابقة إلى إنشاء معايير قياسيّة مثل نموذج OSI، الذي هو اختصار للعبارة «open systems interconnection»؛ يُقسِّم هذا النموذج (الذي أنشَأته المنظمة العالمية للمعايير القياسية في عام 1994) مهمة التواصل الشبكي إلى عدِّة طبقات (layers)؛ وبينما كان الهدف الأوليّ للنموذج هو توفير مجموعة من المعايير للشركات كي تطوِّر تقنياتها الخاصة، والتفكير في شبكة مفتوحة تحقِّق قدرًا كبيرًا من التوافقية (compatibility)، فإن النتيجة النهائية وفَّرت عدِّة فوائد. يتم تخفيف التعقيد بتقسيم الوظائف المختلفة إلى طبقات مستقلة، وكل ما بقي فعله هو توفير واجهة موحّدة للتواصل بين الطبقات؛ وهذا ما تم إنجازه عبر نموذج OSI، سامحًا للمصنعين ببناء مكوناتٍ خاصةٍ بهم ثم استخدام واجهات معياريّة للتواصل مع بقيّة مكونات الشبكة.
هذا النموذج مُقسمٌ إلى وحدات؛ مما يضمن التوافقية عند الالتزام بها؛ وهو أداةٌ رائعةٌ للتدريس وللتعلم عن الشبكات وعن مختلف مكوِّنات الشبكات وكيف تتفاعل مع بعضها بعضًا؛ من المهم أن نقول أن هذا النوع من النماذج يمثِّل «ماذا» يمكن فعله في الشبكة، لكن ليس «كيف» يتم ذلك؛ تتحكم الشركات التي تُصنِّع التقنيات المبنية على هذا المعيار بالطريقة التي تعمل بها أجهزتها، لكن المعايير تعرِّف ماذا يجب أن يُفعَل؛ وقد تَتَّبع الشركات هذا المعيار أو لا تَتَّبِعُه؛ لكن كلما أتبعت الشركاتُ المعاييرَ، فستزداد التوافقية بين مختلف مكونات الشبكة.
نموذج OSI
7 التطبيق (Application)
6 العرض (Presentation)
5 الجلسة (Session)
4 النقل (Transport)
3 الشبكة (Network)
2 وصل البيانات (Data Link)
1 الفيزيائية (Physical)
بعد أن تتصل الأجهزة داخليًّا في نفس طبقة وصل البيانات، فإن الخطوة التالية هي التعامل مع الشبكات العامة وطرق الاتصال مع شبكة الإنترنت؛ وهذه هي مهمة «طبقة الشبكة»: توجيه (route) رزم البيانات عبر الشبكات إلى عدِّة وجهات بعيدة (remote destinations). ومن بين مسؤوليات هذه الطبقة هو تعريف العناوين المنطقية (logical addressing) أو تعريف الأجهزة بهيكليّة من الشبكات، وتحدِّد أيضًا كيفية التعامل مع طرق متوازية لاختيار أفضل طريق لتوصيل البيانات.
يقدِّم نموذج OSI سبع طبقات لتقسيم مهمة التواصل؛ يستخدم بعض الأشخاص طرقًا غريبة لفهم وتذكر تلك الطبقات؛ لديك طبقة فيزيائية للاتصال الشبكي، وجلسة النقل، والعرض، والتطبيق؛ تلك الطبقات مرقمةٌ أيضًا.
والطبقة الأولى هي الطبقة الفيزيائية التي تتعلق بنقل البيانات والمرتبطة بالمواصفات الكهربائية والميكانيكية والإجرائية (procedural) لتفعيل (activating) الوصلة الفيزيائية والحفاظ عليها (maintaining) وتعطيلها (deactivating)؛ وربما تجد أنواعًا مختلفة من وسائط (media) النقل مثل تقنيات الألياف الضوئية (fiber)، والأكبال المحورية (coaxial)، وحتى عبر التقنيات اللاسلكية (wireless)؛ وحتى ستجد فيها الواصلات (connectors) والمكوِّنات المطلوبة لوصل الأجهزة إلى الوسائط الفيزيائية.
الطبقة الثانية هي طبقة وصل البيانات، التي تعرِّف طرقًا للوصول إلى الوسائط، وقد خُطِّطَ لها لكي تكون آلية الوصول إلى الوسائط مستقلةً تمامًا عن الوسائط التي تستخدمها؛ بروتوكول إيثرنت (Ethernet) هو مثال على بروتوكول في طبقة وصل البيانات؛ حيث تستطيع استخدامه على أكبال الألياف الزجاجية أو الأكبال المحورية أو الأكبال المجدولة. تُعرِّف هذه الطبقة ما الذي يجب فعله عند محاولة عدِّة أجهزة الوصول إلى نفس الوسيط (media)، وهي مسؤولةٌ أيضًا عن تعريف تلك الأجهزة في هذه الطبقة أو هذه المرحلة. عنوان MAC في بيئات إيثرنت هو مثالٌ عن طريقة تعريف الأجهزة في شبكة إيثرنت؛ لأنَّ هذه الطبقة تتفاعل مع عمليات النقل بين الأجهزة في نفس الوسيط (media)، وبالتالي يجب أن توفِّر درجةً ما من إمكانية اكتشاف الأخطاء ومحاولة تصحيحها.
أما الطبقة الرابعة ( طبقة النقل) فهي آخر طبقةٍ تتعامل مع النقل الفعلي للبيانات من مضيفٍ إلى آخر، حيث تتعامل الطبقات العليا (التي هي طبقة التطبيقات والعرض والجلسة) مع التطبيقات المُستخدَمة في الشبكة، أما طبقة النقل فتمثِّل حدًا فاصلًا بين تلك التطبيقات والشبكة نفسها؛ بكلماتٍ أخرى، إحدى مهامها هي إخفاء تعقيدات الشبكة من الطبقات العليا ومن التطبيقات، وفي هذا السّياق، سيتم التّعامل مع طرقٍ متعدّدة والتي تتعامل بدورها مع طبقة الشبكة وذلك بإنشاء الاتصالات والحفاظ عليها، من أجل ضمان وثوقيّة نقل البيانات؛ وأيضًا إعادة تجميع المحادثات التي يمكن أن تُرسَل على شكل عدّة رزم من البيانات عبر الشّبكة، وبشكل عام، فإنّ القرار بإعطاء الوثوقيّة أو عدمها متروكٌ للطبقات العليا (Upper layer).
الطبقات العليا التي هي الطبقة الخامسة والسادسة والسابعة، هي أقرب للمستخدمين والتطبيقات، أي بكلامٍ آخر، تتعامل طبقة «الجلسة» (session) مع إنشاء وإدارة وإنهاء الجلسات، لكن هذا مختلفٌ عن طريقة إنشاء وإدارة وإنهاء طبقة النقل (transport) للاتصالات؛ تتعلق هذه الجلسات بجلسات المستخدم، التي يمكن أن تكون مقسمةً إلى عدِّة اتصالاتٍ في طبقة النقل؛ فعلى سبيل المثال، ربما يتصل أكثر من مستخدم إلى خادم الويب، لذا ستكون مهمة طبقة الجلسة التمييز بين جلسات هؤلاء المستخدمين، وأن توفِّر لهم وصولًا إلى التطبيق؛ وفي نفس الوقت التعامل مع عدِّة اتصالات شبكيّة أنشأها كل مستخدم إلى خادم الويب.
تتعامل طبقة العرض مع تنسيق المعلومات، ستجد شبهًا بينها وبين اللغات المحكية، حيث يمكن ترجمة المعلومات إلى الإنكليزية أو الإسبانية على سبيل المثال، أو يمكنك الحصول على صيغٍ (formats) مختلفةٍ بناءً على الفوائد الوظيفية (functional benefits) لكل صيغة؛ على سبيل المثال، البيانات المكتوبة والبيانات المحكية.
تتعلق الصيغ أيضًا بطبيعة المعلومات، فمثلًا، يمكن أن تختلف صيغة الفيديو باستخدام مواصفات مختلفة، ويمكن تنسيق النصوص باستخدام مواصفات مختلفة أيضًا، مثل ASCI؛ وكذلك الأمر للصور، فيمكن تنسيقها على هيئة bitmaps، أو JPEG، أو غيرها من الصيغ.
في النهاية، تكون طبقة التطبيقات هي أقرب الطبقات إلى المستخدم، حيث تُعرِّف تجربة المستخدم عبر الخدمات التي تقدِّمها، ووظيفة تلك الخدمات، وعبر أشياء مثل استيثاق المستخدم (user authentication)، والتفاعل مع الخدمات نفسها؛ بعض الأمثلة هي: البريد الإلكتروني، ونقل الملفات، ومحاكاة الطرفية (terminal emulation)، وحتى تطبيقات نقل الصوت أو الاتصال الهاتفي، وتستطيع تصنفيها إلى فئات مثل فئة التسلية، أو الأعمال، أو الإنتاجية ...إلخ.
المعلومات التي تُنقَل عبر الشبكة يجب أن تكون على شكل «رزم» (packets)، الرزمة هي الوحدة الأساسية (basic unit) للمعلومات المعروفة للشبكات والأجهزة، وهي مثل الكلمات في اللغة الإنكليزية؛ وتسمى عملية «تحزيم» تلك المعلومات بالمصطلح «التغليف» (encapsulation)، تضيف هذه العملية معلومات التحكم اللازمة والبروتوكول الملائم إلى البيانات كي تُفهَم فهمًا سليمًا في الجهاز المُستقبِل.
أثناء مرور البيانات رأسيًا (vertically) خلال طبقات OSI، فستضيف كل طبقة ترويسةً (header) تحتوي على المعلومات التي تتطلبها تلك الطبقة.
حتى ولو كانت عملية تغليف الرزمة رأسيةً، لكن تُستخدَم معلومات الترويسة أفقيًا (horizontally)؛ لذا يمكن للمُستقبِل أن يقرأ ويُفسِّر كل ترويسة؛ أمثلة عن المعلومات المُغلَّفة هي: الصيغة (format) في طبقة العرض، وصيغة البيانات المُرسَلة (فيديو، أو نصوص ...إلخ.)، أو ربما يُضاف في طبقة الشبكة عنوان IP الفريد الذي يُعرِّف المُرسِل والمستقبل؛ تشبه هذه العمليةُ آليةَ إرسال الطرود والحروف عبر خدمة البريد العادي. في بيئة الأعمال، يمكن أن يكتب أحدهم رسالةً في ظرف الرسالة (envelope) معنونةً بالترويسة «إلى خالد في قسم المحاسبة»، وإذا كان قسم المحاسبة موجودٌ في مكانٍ مختلف، فسيضع أحد الأشخاص في الشركة المغلفَ الصغير في مغلفٍ أكبر ويرسله إلى العنوان الحقيقي لقسم المحاسبة عبر خدمة البريد.
تُنشِئ عملية التغليف رزمةً فيها البيانات الأصلية والترويسات المُضافَة من كل طبقة، وفي الواقع تُضيف بعض الطبقات تذييلًا (trailer)، مثل سلسلة التحقق من الإطارات (frame check sequence) المُضافة من طبقة وصل البيانات. تبدأ عملية إزالة التغليف (decapsulation) في المُستقبِل من قِبل كل طبقة، التي تقرأ الترويسة الملائمة لها وتستخدم المعلومات الموجودة فيها لاتخاذ قرارات متناغمة؛ مثالٌ عن ذلك سيكون عن أرقام المنافذ في طبقة النقل؛ إذا كان يشغِّل المُستقبِل -على سبيل المثال- عدِّة تطبيقات مثل خدمات FTP والويب، فسيكون رقم المنفذ في طبقة النقل هو مُعرِّف فريد لكل تطبيق ويمكن أن يُستخدَم من برمجيات طبقة النقل لإرسال بقية الرزمة إلى التطبيق الملائم؛ أي أن العملية الأفقية هي فهم المُستقبِل للمُرسِل عبر إضافة معلومات التحكم إلى الترويسة، لكن عملية التغليف وإزالة التغليف هي عمليةٌ رأسية؛ وبهذا تكتمل عملية التواصل.
أي أن عملية التغليف وإزالة التغليف تُعرِّف التفاعل الأفقي المنطقي والاتصال بين الطبقات، وفي الوقت نفسه تستثمر ميزة التفاعل الرأسي بين الطبقات؛ المعلومات المُضافة المطلوبة من أجل التفاعل الرأسي ستُضاف إلى الرزم. الرزم هي مصطلح عام يُستخدم عادةً لتعريف وحدات المعلومات (information units) التي تنتقل عبر الشبكة؛ لكن إذا نظرت بعمق إلى كل طبقة، فهنالك مُعرِّفات (identifiers) ومصطلحات تُستخدم لتعريف وحدات المعلومات التي تتعلق بطبقة معيّنة؛ تذكر أننا نتكلم عن اتصالات الند-للند (peer-to-peer)، ولطالما بقيت طبقتَي النقل في المُرسِل والمستقبل تتفاعلان مع بعضهما بعضًا، فلن تكون لديهم معلومات عن الطبقات الأخرى؛ فمثلًا، المصطلح المُستخدم في طبقة النقل هو «القطع» (segments)؛ وفي طبقة الشبكة، فإن مكونَيّ الشبكة سيتعاملان مع الرزم الفعلية، لذا فإن «الرزمة» هو مصطلحٌ تابع لطبقة الشبكة، لكنه مصطلحٌ عامٌ أيضًا؛ تَستخدم طبقة وصل البيانات المصطلح «إطارات» (frames)، وهذه هي الطريقة التي تتفاهم بها مكونات وصل البيانات بين الخادم والمُستقبِل. تَستخدم الطبقة الفيزيائية البتات (bits) كوحدة للمعلومات. المصطلح العام لتعريف وحدات المعلومات في كل طبقة هو PDU أو «وحدة بيانات البروتوكول» (Protocol Date Unit).
تجميعة البروتوكول (protocol stack) هي دمجٌ للمكونات التي تتبع لنموذج طبقي (layered model)، البروتوكول هو طريقة تطبيق وظيفة صُمِّمَت طبقةٌ معينة لفعلها. صُمِّمت وطوِّرت تجميعة البروتوكول TCP/IP في نفس فترة تطوير نموذج OSI، لكن بوضع بروتوكول IP بعين الاعتبار؛ وحتى لو كان اسم التجميعة هو «TCP/IP» الذي يشير فقط إلى بروتوكولين يشكِّلان التجميعة، لكن يُطلق في بعض الأحيان على تلك التجميعة اسم «تجميعة بروتوكول IP» (IP protocol stack) فقط؛ لكن توجد عدِّة بروتوكولات مشاركة في التجميعة، وتعرَف بالطبقات الأربع، ووظيفتها مشابهة لنموذج OSI، لكن TCP/IP أصبح المعيار القياسي للوصل بالإنترنت وللاتصالات عمومًا؛ طبقة «الوصول للشبكة» (network access) تتعامل مع الوصول الفيزيائي إلى الوسائط بالإضافة إلى طريقة الوصول إلى تلك الوسائط؛ أما طبقة الإنترنت فإنها تتعامل مع التوجيه واختيار الطريق، وعلى الرغم من أن طبقة النقل شبيهة بطبقة النقل في نموذج OSI في أنها توفِّر اتصالاتٍ شبكيّة ذات وثوقية للتطبيقات في الطبقات العليا؛ فإن طبقة التطبيقات في هذا النموذج تدمج الطبقات من 5 إلى 7 في نموذج OSI في طبقةٍ واحد.