محمد قتيبة شيخانيأبني. أستكشف. أشارك

09من 20

أساسيات الإنترنت والشبكات

بروتوكولات الإنترنت ونموذج الطبقات: كيف تتفاهم الأجهزة

سطر تغليفٍ مكتوبٌ بأقواسٍ متداخلة: إطار إيثرنت يحوي حزمة IP، وهي تحوي قطعة TCP، وفي داخلها رسالة HTTP وهي المشدَّدة لأنّها ما أرسلتَه فعلًا.

في المقالات السابقة فكّكتُ لك طبقة الويب التي تلمسها مباشرةً: العنوان (URL)، وترجمة الاسم (DNS)، ولغة الطلب (HTTP)، والتشفير (SSL/TLS)، والذاكرة (الكوكيز). لكنّ تحت هذه الطبقة محرّكا يحمل كل تلك الرسائل عبر الشبكة فعلًا. هذا المقال عن ذلك المحرّك: البروتوكولات وكيف تتراكب في «طبقات» تجعل أجهزة مختلفة تمامًا تتفاهم.

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

ما البروتوكول؟ قواعد متّفق عليها

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

وللإنترنت بروتوكولات كثيرة، لكنها ليست فوضى: هي منظَّمة في طبقات، ولكلّ طبقة مهمّة واحدة. وهذه الفكرة، فكرة الطبقات، هي مفتاح فهم الشبكة كلّها.

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

لماذا الطبقات؟

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

وهو أشبه بنظام البريد: من يكتب الرسالة لا يعنيه أَبِالطائرة تُنقَل أم بالشاحنة، ومن يقود الشاحنة لا يعنيه ما في الظرف. كل طبقة تثق بأن التي تحتها ستؤدّي عملها. وثمرة هذا الفصل أن تغيير طبقة لا يمسّ البقية: تبدّل وسيلة النقل دون تغيير الرسائل، وتبدّل صياغة الرسالة دون تغيير وسيلة النقل. هذه «الوحدات القابلة للتبديل» هي ما ستراه في آخر المقال سرَّ بقاء الإنترنت.

النموذج الطبقيّ: أربع طبقات تشغّل الشبكة

النموذج العمليّ الذي يعمل به الإنترنت فعلًا يُسمّى «نموذج TCP/IP»، وفيه أربع طبقات. لنقرأها من الأعلى (الأقرب إليك) إلى الأسفل (الأقرب إلى السلك):[1]

  • طبقة التطبيق (Application): ما يفهمه البرنامج مباشرةً. هنا يعيش HTTP (الويب) وDNS (الأسماء) وSMTP (البريد). كلّ من هذه له مقال مستقلّ في السلسلة؛ المهمّ هنا أنها كلّها سكّان الطبقة العليا.
  • طبقة النقل (Transport): تتكفّل بإيصال البيانات بين برنامجين، وفيها بروتوكولان: TCP الموثوق (يضمن الوصول والترتيب) وUDP السريع (يضحّي بالضمان من أجل السرعة). ولها المقال التالي في السلسلة.
  • طبقة الإنترنت (Internet): وفيها بروتوكول IP الذي يمنح كل جهاز عنوانا ويوجّه الحِزَم بين الشبكات عبر الموجِّهات. هي ما يجعل «شبكة الشبكات» ممكنة.
  • طبقة الوصول إلى الشبكة (Link): النقل الفعليّ على الوسط الماديّ، عبر معايير مثل Ethernet للأسلاك وWi-Fi للّاسلكيّ.

وإلى جانب هذا النموذج العمليّ، ثمّة نموذج مرجعيّ أقدم وأدقّ تفصيلا يُدرَّس لفهم الشبكات، هو نموذج OSI بطبقاته السبع: الفيزيائية، فربط البيانات، فالشبكة، فالنقل، فالجلسة، فالعرض، فالتطبيق.[3] الفرق أن OSI نموذج تعليميّ مثاليّ، بينما TCP/IP هو ما يعمل في الواقع؛ وتنطبق طبقاته الأربع على سبع OSI بدمج بسيط: طبقة التطبيق عنده تجمع الثلاث العليا في OSI، وطبقة الوصول تجمع الدنيا. فإن سمعتَ «الطبقة السابعة»، فهي طبقة التطبيق في لغة OSI. وكثيرًا ما يُدرَّس نموذج هجين من خمس طبقات يفصل الفيزيائية عن ربط البيانات تبسيطا، فلا تستغرب اختلاف العدد بين مرجع وآخر؛ الجوهر واحد.

ولأن OSI مرجعُ كل من يدرس الشبكات، يفيدك أن تعرف طبقاته السبع باختصار، من الأسفل صعودا:

  • الفيزيائية: الإشارة على الوسط نفسه (كهرباء في النحاس، ضوء في الألياف، موجة في اللاسلكيّ).
  • ربط البيانات: تأطير البِتّات وعنونة الأجهزة محليا بعناوين عتادية تُسمّى MAC.
  • الشبكة: العنونة والتوجيه بين الشبكات (IP).
  • النقل: إيصال البيانات بين برنامجين، بموثوقية (TCP) أو بسرعة (UDP).
  • الجلسة: فتح المحادثات بين التطبيقات وإدارتها وإغلاقها.
  • العرض: صياغة البيانات وترميزها وضغطها وتشفيرها.
  • التطبيق: ما يتعامل معه البرنامج مباشرةً (HTTP وغيره).

وتكشف طبقتان تقسيما أنيقا للعمل. طبقة الإنترنت (IP) تتكفّل بالعنونة فقط، وتعمل بمبدأ «أفضل جهد»: تدفع الحزمة نحو وجهتها دون ضمان أنها ستصل أو تصل بالترتيب. فإن لزم الضمان، وفّرته طبقة النقل فوقها عبر TCP الذي يعيد المفقود ويرتّب الواصل. وحين تكون السرعة أهمّ من الكمال، يُستعمَل UDP الذي يرسل دون ضمان: مكالمات الفيديو والبثّ والألعاب تحتمل فقدان إطار ولا تحتمل تأخّر إعادة إرساله. هذا الفصل بين «التوصيل» و«الضمان» من أذكى قرارات تصميم الإنترنت، وله تفصيل في مقال TCP/IP. وكلّ بروتوكول تطبيق ينتقي ما تحته بحسب حاجته: فالويب (HTTP) يجري فوق TCP لأنه يطلب وصولا كاملا مرتّبا، بينما يجري DNS غالبًا فوق UDP لأنه استعلام صغير سريع يُعاد ببساطة إن ضاع.[4]

التغليف: أظرف داخل أظرف

كيف تتعاون هذه الطبقات على رسالة واحدة؟ بآلية اسمها «التغليف» (Encapsulation). حين ترسل بياناتك، تنزل عبر الطبقات، وتضيف كلُّ طبقة «ترويستها» الخاصّة حول ما جاءها من فوق، كأنها تضعه في ظرف جديد.[2]

تخيّل رسالة تكتبها (بيانات التطبيق). تضعها طبقة النقل في ظرف مكتوب عليه رقم الشقّة (منفذ البرنامج)، فتصير «مقطعا» (Segment). تضع طبقة الإنترنت هذا الظرف في ظرف أكبر مكتوب عليه عنوان الشارع (عنوان IP للوجهة)، فيصير «حزمة» (Packet). تضع طبقة الوصول الحزمةَ في كيس بريد للطريق المحلّي، فتصير «إطارا» (Frame) يسير على السلك أو اللاسلكيّ. هكذا تتداخل الأظرف: المحتوى نفسه، وكل طبقة تضيف ما يلزم طبقتَها المقابلة عند الوصول. وما تكتبه كل طبقة على ظرفها محدّد: ترويسة IP تحمل عنوانَي المصدر والوجهة، وترويسة TCP تحمل رقمَي المنفذ ورقمَ التسلسل الذي يرتّب الحِزَم، وإطار الرابط يحمل عناوين MAC للقفزة المحلّية. وللإطار حدُّ حجم أقصى (نحو 1500 بايت يُسمّى MTU)، فإن كانت البيانات أكبر قُطّعت إلى عدّة حِزَم تُجمَّع عند الوصول.

وعند الخادم تنعكس العملية تمامًا («فكّ التغليف»): تقرأ كل طبقة ترويستها وتنزعها، ثمّ تسلّم ما بداخلها إلى الطبقة الأعلى، حتى تصل بيانات التطبيق عارية إلى البرنامج المقصود، كما أرسلتَها بالضبط. الجمال في هذا أن كل طبقة تخاطب نظيرتها على الجهة الأخرى وكأنّ ما بينهما غير موجود: طبقة IP عندك تكلّم طبقة IP هناك، غير عابئة بكل ما تحتها.

ولهذا التغليف ثمن صغير: كل ترويسة تضيف بايتات فوق بياناتك، فرسالة من 100 بايت قد تسير في نحو 140 بعد ترويسات TCP وIP والإطار. ثمن زهيد مقابل ما يمنحه التنظيمُ والموثوقية. وفكرة التغليف تتجاوز هذا أيضًا: حين تستعمل شبكة افتراضية خاصّة (VPN)، تُغلَّف حِزَمك كاملة داخل حِزَم أخرى مشفّرة، فتسير في «نفق» عبر الإنترنت لا يرى الوسطاءُ ما بداخله. أي إن الطبقات تتداخل أعمق حين يلزم، ولشبكات VPN مقال مستقلّ في السلسلة.

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

مسار طلب عبر المكدّس

لنجمع هذا في مثال واحد. حين تفتح موقعا، يُنشئ المتصفّح طلب HTTP في طبقة التطبيق، فتغلّفه طبقة النقل بـTCP لتضمن وصوله، وتعنونه طبقة الإنترنت بـIP نحو الخادم، وترسله طبقة الوصول عبر الواي‑فاي إلى موجِّه بيتك. ثمّ يسافر عبر الشبكة (المسار الذي رأيتَه في «كيف يعمل الإنترنت»)، فيصعد عند الخادم طبقة طبقة حتى يقرأ تطبيقه طلب HTTP، فيردّ، فتعود الاستجابة بالطريقة نفسها.

وكلّ محطّة في هذا المسار لها مقالها: DNS وHTTP وSSL/TLS في طبقة التطبيق، وTCP/IP في الطبقتين تحتها. النموذج الطبقيّ هو الخيط الذي ينظمها جميعا في مكانها.

بروتوكولات في الخلفية: المنافذ والتشخيص

تكمل الصورةَ فكرتان وبروتوكول تستعملها دون أن تنتبه. الأولى «المنافذ»: لأن جهازك يشغّل تطبيقات كثيرة معا، لا يكفي عنوان IP وحده لتحديد الوجهة، بل يلزم «رقم منفذ» يحدّد التطبيق المقصود (المتصفّح، البريد، وغيرهما). واجتماع عنوان IP ورقم المنفذ يُسمّى «مقبسا» (Socket)، وهو الطرف الكامل لأيّ اتصال.

والثاني بروتوكول لا تراه لكنّك تستعمله كثيرًا: ICMP، الذي تتبادل به الأجهزة رسائل الحالة والأخطاء في طبقة الإنترنت. أمر ping يستعمله ليقيس هل الوجهة حيّة وكم يستغرق الوصول إليها، وأمر traceroute يكشف الموجِّهات التي تقفز بينها حزمتك واحدا واحدا. وهما أول ما يلجأ إليه أيّ تقنيّ لتشخيص عطل في الشبكة.

ومن طبقة الإنترنت أيضًا آلية تلمسها كل يوم: «ترجمة عناوين الشبكة» (NAT). فعناوين IPv4 لا تكفي لكل جهاز، فيأخذ موجِّه بيتك عنوانا عامّا واحدا، ويمنح أجهزتك عناوين «خاصّة» داخلية، ويترجم بينها وبين الإنترنت. لهذا تشترك أجهزة بيتك جميعا في العنوان الواحد الذي تراه المواقع.

وتفسّر الطبقاتُ اختلاف أجهزة الشبكة نفسها: «المبدّل» (Switch) يعمل في طبقة ربط البيانات، فيوزّع الإطارات داخل الشبكة المحلّية بعناوين MAC؛ أما «الموجِّه» (Router) فيعمل في طبقة الإنترنت، فيوجّه الحِزَم بين الشبكات بعناوين IP. فحين تسمع أن جهازا يعمل في «الطبقة الثانية» أو «الثالثة»، فهذا ما يُقصَد. وكذلك جُدُر الحماية (Firewalls): منها ما يحجب بحسب المنفذ وعنوان IP في الطبقتين الثالثة والرابعة، ومنها ما يفحص المحتوى في طبقة التطبيق؛ فمعرفة الطبقة تعرّفك أين يجري الترشيح.

لماذا غيّر هذا التصميم كل شيء

لأن الطبقات مستقلّة، تطوّرت كلّ منها وحدها دون أن تكسر البقية. ارتقى الويب من HTTP/1.1 إلى HTTP/3 في طبقة التطبيق دون أن يتغيّر IP تحته. وانتقلت العنونة من IPv4 إلى IPv6 في طبقة الإنترنت دون أن يتغيّر HTTP فوقها. وتبدّل الوسط الماديّ من النحاس إلى الألياف إلى اللاسلكيّ في الطبقة الدنيا دون أن يشعر ما فوقها بشيء.

وثمّة صورة بديعة لهذا التصميم تُسمّى «الساعة الرملية»: في وسطها الضيّق بروتوكول واحد هو IP، وفوقه تتعدّد التطبيقات بلا حصر (ويب، وبريد، وبثّ، وألعاب)، وتحته تتعدّد الأوساط بلا حصر (ألياف، ونحاس، ولاسلكيّ، وأقمار). كل شيء يجري «فوق IP»، وIP يجري «فوق كل شيء». هذا الخصر الضيّق هو ما وحّد إنترنتا شديد التنوّع: يكفي أن يتكلّم أيّ جهاز وأيّ وسط لغة IP ليدخل الشبكة كلّها، دون أن يحتاج أحد إلى إذن. وهذا المبدأ مكتوب في الوثيقة التي دوّنت فلسفة الإنترنت المعماريّة: الهدف هو الوصل، والأداة هي بروتوكول الإنترنت، والغاية أن يكون في مستوى الإنترنت بروتوكول واحد لا أكثر.[6]

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

ولضيق الخصر سبب معماريّ يستحقّ أن يُسمّى باسمه: «مبدأ الطرف إلى الطرف». فالوثيقة نفسها تُكمل عبارتها: الهدف هو الوصل، والأداة هي بروتوكول الإنترنت، والذكاء في الأطراف لا مخبوءا في الشبكة.[6] ومعناه أنّ الشبكة في وسطها تُترَك غبيّة بالقصد: مهمّتها أن تنقل الحزمة وتسكت. أمّا ما يحتاج فهما، كإعادة إرسال ما ضاع وترتيب ما وصل مبعثرا وتشفير ما يجب كتمه، فمتروك للطرفين. وتقول الوثيقة إنّ وظائفَ بعينها لا يؤدّيها أداء صحيحا إلا الطرفان نفساهما، وتذكر سلامة النقل والأمن مثالين.[6]

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

ولتقدّر قيمة هذا، تخيّل الضدّ: لو كان الإنترنت بروتوكولا واحدا متشابكا، لكان إضافة التشفير أو الانتقال إلى الألياف يفرض إعادة كتابة المنظومة كلّها وتنسيقا عالميا شبه مستحيل. الطبقات هي ما جعلت التطوّر ممكنا قطعة قطعة، وهي الدرس المعماريّ الأعمق في الإنترنت: افصل المهامّ في وحدات مستقلّة بواجهات واضحة بينها، تَبْنِ نظاما يدوم ويتطوّر دون أن ينهار. وهو درس يتجاوز الشبكات إلى كل تصميم هندسيّ كبير.

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

من يضع هذه البروتوكولات؟

لا تملك هذه البروتوكولاتِ شركة، بل تطوّرها هيئات مفتوحة، أبرزها فريق هندسة الإنترنت (IETF) الذي ينشرها وثائقَ تُسمّى RFC، تصير بعد المراجعة معاييرَ يتبعها الجميع. وقد شهدت الثمانينيات «حرب بروتوكولات» بين نموذج OSI الذي رعته هيئات التقييس الرسمية، ونموذج TCP/IP الأبسط الذي وُلد في الجامعات ومراكز الأبحاث؛ وانتصر TCP/IP لأنه كان يعمل فعلًا، ومجّانًا، ومفتوحا، فبقي OSI نموذجا تعليميا يُدرَّس لا يُشغَّل. وهذا صدى ما رأيتَه في تاريخ الإنترنت: المعيار المفتوح يغلب المغلق.

والبروتوكولات لا تقف عند الويب. في طبقة التطبيق نفسها يعيش SSH للدخول الآمن إلى الخوادم، وبروتوكولات الصوت والفيديو للمكالمات، وFTP لنقل الملفّات، وعشرات غيرها؛ كلّها تتكلّم فوق المحرّك نفسه (TCP/IP)، فمن فهم النموذج الطبقيّ فهم كيف تعمل هذه كلّها، لا الويب وحده. وما زالت بروتوكولات جديدة تُولد فوق النموذج نفسه، مثل QUIC للنقل الأسرع وWebSocket للاتصال الحيّ المستمرّ، دون أن يتغيّر ما تحتها، وهذا عين ما تتيحه الطبقات.

على أنّ QUIC مثال أدقّ ممّا يبدو، ويستحقّ أن يُقرأ على وجهه الآخر. فلماذا وُضع QUIC داخل UDP، وهو بروتوكول نقل كامل، بدل أن يأخذ مكانه إلى جانب TCP في طبقة النقل؟ لأنّ طبقة النقل صارت متعذّرة التغيير عمليًّا. فالأجهزة الوسيطة في الطريق تقرأ ترويسات TCP وتبني قراراتها عليها، فإذا رأت فيها ما لا تعرفه أفسدته أو أسقطته. وقد قال معيار IETF هذا صريحا: متى راقب جهاز في الشبكة ترويسةَ نقل واعتمد عليها، تحجّر استعمال ذلك الحقل، فامتنع نشر إصدارات وآليّات جديدة.[5]

والأمثلة معروفة بأسمائها: TLS 1.3 اضطرّ أن يتشبّه بـTLS 1.2 لتقبله تلك الأجهزة، وMPTCP اصطدم بما يسمّى «مسوّيات TCP» التي تقطع الاتصال إذا خرج سلوك النافذة عمّا تتوقّعه، وTCP Fast Open أسقطته أجهزة لم تعرف الخيار الذي يحمله.[5] فسلك مصمّمو QUIC طريقا آخر: أجروا النقل كلّه داخل UDP، وشفّروا ترويساته ووثّقوها، فلم يبقَ في الطريق ما تراه تلك الأجهزة فتحجّره.[5] والدرس أدقّ ممّا يبدو في الجملة السابقة: الطبقات أتاحت للأطراف أن تتطوّر بحرّيّة، والطبقة الوحيدة التي صار الوسطاء يراقبونها هي التي تجمّدت. الخصر بقي ضيّقا، والنقل فوقه تكلّس.

جرّبه بنفسك: شخّص عطلا طبقة طبقة

نموذج الطبقات أداةُ تشخيص يستعملها المحترفون كلّ يوم، وخمسة أوامر تكفيك لتجرّبها الآن. افتح الطرفيّة (Terminal أو Command Prompt)، ونفّذ كلّ أمر في موضعه من المكدّس، صاعدا من الأسفل إلى الأعلى.

ابدأ من الأسفل بسؤال واحد: هل لجهازك عنوان على الشبكة أصلًا؟ نفّذ ipconfig في ويندوز، أو ip addr في لينكس، أو ifconfig في ماك. فإن لم تجد عنوانا غير 127.0.0.1، فالعطل في طبقة الرابط أو في خادم DHCP، ولا فائدة من بقيّة الأوامر قبل إصلاحه.

ثمّ اصعد إلى طبقة الإنترنت: نفّذ ping 1.1.1.1. فإن جاءك جواب، فعنوانك يعمل والتوجيه سليم، وقد تجاوزت الطبقتين الدنيتين معا. وإن لم يأتِ جواب، فالعطل تحتك لا فوقك، في الرابط أو في العنونة، ولا معنى لأن تفتح المتصفّح وتفحصه.

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

ثمّ طبقة التطبيق: نفّذ curl -I https://example.com. فإن ردّ بسطر فيه رمز حالة، فالمكدّس سليم من الرابط إلى التطبيق، والعطل في الموقع الذي تقصده وحده. وبين المحطّتين، إن أردت أن ترى الطريق نفسه، نفّذ traceroute example.com (أو tracert في ويندوز) لتقرأ القفزات واحدة واحدة وتعرف عند أيّها توقّف السير.

وهذا ما يكسبه لك النموذج عمليًّا: أربع محطّات مرتّبة تعزل العطل، بدل تخمين يبدأ بإعادة التشغيل وينتهي بإعادة التشغيل.

إلى قلب المحرّك

بهذا صار في يدك نموذج ينظّم كل ما تعلّمته: ما تراه (الويب، والبريد) في الأعلى، وما يحمله ويضمن وصوله (TCP/UDP) تحته، وما يعنونه ويوجّهه بين الشبكات (IP) أعمق، وما ينقله فعلًا على السلك أو الموجة في القاع. لم تعد البروتوكولات أسماء متناثرة، بل طبقات يعرف كلّ منها موضعه ودوره وعلاقته بجارتيه. وهذا النموذج هو ما يحوّل عبارة غامضة مثل «الموقع لا يفتح» إلى سؤال دقيق: في أيّ طبقة تعطّل الأمر؟

عرفتَ الآن كيف تتراكب البروتوكولات، وكيف تنزل الرسالة وتصعد عبر الطبقات. بقيت الطبقتان اللتان تقومان بأثقل العمل في القلب: العنونة والتوجيه (IP)، وضمان الوصول والترتيب (TCP). وهما معا «العمود الفقريّ» الذي تتّكئ عليه طبقة التطبيق كلّها، وموضوع المقال التالي: «TCP/IP: المحرّك الذي يشغّل الإنترنت».

المصادر

  1. IETF: RFC 1122: Requirements for Internet Hosts. النموذج الطبقيّ لـTCP/IP بطبقاته.
  2. Wikipedia: Internet protocol suite. حزمة TCP/IP، والتغليف، ووحدات البيانات (مقطع/حزمة/إطار).
  3. Wikipedia: OSI model. النموذج المرجعيّ بطبقاته السبع.
  4. MDN Web Docs: An overview of HTTP. HTTP بوصفه بروتوكول طبقة تطبيق يجري فوق TCP.
  5. IETF: RFC 9065: Considerations around Transport Header Confidentiality. تحجّر طبقة النقل حين تعتمد الأجهزة الوسيطة على ترويساتها، وأمثلة TLS 1.3 وMPTCP وTCP Fast Open، ولماذا جرى QUIC داخل UDP بترويسات مشفّرة موثّقة.
  6. IETF: RFC 1958: Architectural Principles of the Internet. الفصل 2.1: الهدف هو الوصل والأداة هي بروتوكول الإنترنت. والفصل 2.2: بروتوكول واحد لا أكثر في مستوى الإنترنت.

اترك تعليقاً

الحقول المميّزة بـ مطلوبة