المرحلة 00 — المحادثة المستحيلة
النبذة
كل ما ستتعلّمه في هذا المنهج — الـ OSI، الـ IP، الـ TCP، الـ ports، كل شيء — هو تراكمٌ من الحلول لمشكلةٍ واحدة سخيفة في بساطتها، مستحيلة في تفاصيلها:
حاسبان، لا يعرف أحدهما الآخر، يريدان تبادل المعنى.
لن نبدأ بالحلول. سنبدأ بالألم. لأنك إن لم تشعر بالمشكلة، فكل حلٍّ سيبدو لك قاعدة تُحفَظ بدل أن يكون فكرةً تُفهَم.
عندك حاسبان: A و B. لا واي-فاي، لا إنترنت، لا راوتر. شيء واحد فقط: سلك نحاس واحد لحمتَه بين منفذ في A ومنفذ في B. A يريد أن يُرسل النص hi إلى B، وأن يستقبله B ويعرف أنه hi.
السلك يستطيع شيئاً واحداً: أن يحمل فولتية (مثلاً 0 فولت أو 5 فولت) تتحكّم فيها A ويقرؤها B.
اكتب — حرفياً، على ورقة — كل شيء يجب أن يتّفق عليه A و B مسبقاً حتى تنجح هذه العملية. لا تكمل القراءة حتى تملأ نصف صفحة على الأقل. الهدف ليس أن «تعرف الجواب»؛ الهدف أن تكتشف أن السؤال أعمق مما يبدو بـ ١٠ مرات.
إن قلت «سهلة، يرسل 0 و 1» — فأنت لم تبدأ بعد. كيف يرسل صفراً؟ كم يدوم الصفر؟ كيف يعرف B متى ينظر للسلك؟
ما الذي اكتشفتَه (الطبقات تولد هنا)
قارن ورقتك بهذه القائمة. كل بند منها هو مشكلة مستقلة، وحلّ كلٍّ منها سيصير لاحقاً «طبقة» أو «بروتوكول» له اسمٌ يخيف المبتدئين:
أ. متى تكون الفولتية «بِتّة»؟ (التزامن / Clocking) لو رفعت A الفولتية لـ 5v وأبقتها، هل هذا بِتّة واحدة 1؟ أم ألف بِتّة 1؟ B لا يعرف. يجب أن يتّفقا على مدة البِتّة (مثلاً: كل ميكروثانية = بِتّة). هذا «معدّل البِتّات» (bit rate)، وهذه أول مشكلة: الزمن.
ب. ما الذي يمثّل 1 وما الذي يمثّل 0؟ (الترميز / Encoding) 5v=1 و 0v=0؟ منطقي. لكن ماذا لو أراد A أن يرسل عشرة أصفار متتالية — فولتية ثابتة عند 0 لعشر ميكروثوانٍ؟ كيف يميّز B بين «عشرة أصفار» و«السلك مفصول/الجهاز نائم»؟ (الحل الحقيقي — Manchester encoding — يجعل كل بِتّة انتقالاً لا مستوى، حتى لا يوجد سكون أبداً. لاحظ: المشكلة وُلّدت الحل.)
ج. أين تبدأ الرسالة وأين تنتهي؟ (التأطير / Framing) B يسمع سيلاً لا نهائياً من البِتّات. أين الحرف h؟ أين تبدأ الرسالة؟ يحتاجان علامة بداية متّفق عليها (preamble) وطريقة لمعرفة الطول أو علامة نهاية.
د. كيف نحوّل hi إلى بِتّات؟ (التمثيل / Representation) h = ؟ هنا تستدعي معرفتك: ASCII. h=104=01101000. لكن لاحظ: هذا اتفاق أيضاً. لو ظنّت A أنها ASCII وظنّ B أنها EBCDIC، وصل هراء. (هذه — صدّق أو لا — الطبقة السادسة في OSI: الـ Presentation.)
هـ. بأي ترتيب نرسل البِتّات داخل البايت؟ (Bit order / Endianness) 01101000: نرسل البِتّة اليسرى أولاً أم اليمنى؟ يجب الاتفاق، وإلا وصل h مقلوباً.
و. ماذا لو انقلبت بِتّة في الطريق؟ (كشف الخطأ / Error detection) السلك ليس مثالياً؛ ضوضاء كهربائية قد تقلب 1 إلى 0. وصل gi بدل hi. كيف يكتشف B أن شيئاً تلف؟ (الحل: ترسل A معه checksum — رقماً محسوباً من الرسالة، يعيد B حسابه ويقارن.)
ز. ماذا لو أرسلت A أسرع مما يقرأ B؟ (التحكّم بالتدفّق / Flow control) B بطيء، أو مشغول. الفائض يضيع. يحتاجان آلية: «تمهّل» أو «أنا جاهز، أرسل».
توقّف وتأمّل: كل هذا، وما زلنا على سلكٍ واحدٍ بين جهازين فقط. لم نتكلّم بعد عن أكثر من حاسبين، ولا عن الخروج من الغرفة، ولا عن «أي برنامج يأخذ الرسالة». هذه الطبقات الإضافية كلها قادمة.
الدرس: ما هو «البروتوكول» حقاً، وما هو «النموذج الطبقي»
لاحظتَ شيئاً مهماً: المشاكل أعلاه تقع على ارتفاعات مختلفة.
- بعضها عن الإلكترونات والفولتية والزمن (أ، ب).
- بعضها عن تجميع البِتّات في وحدةٍ ذات معنى محلّي (ج، و).
- بعضها عن المعنى الإنساني للرسالة (د).
هذه «الارتفاعات» ليست تنظيماً اعتباطياً — هي انعكاسٌ لحقيقة عميقة:
يمكنك تغيير الحل في ارتفاعٍ ما دون أن تمسّ الارتفاعات الأخرى.
استبدل السلك النحاسي بألياف ضوئية: تغيّرت الإجابة على (أ) و (ب) تماماً (صار ضوءاً لا فولتية)، لكن الإجابة على (د) — أن h يساوي 104 في ASCII — لم تتغيّر إطلاقاً. هذا الفصل (decoupling) هو أعظم فكرة في الشبكات كلها. هو السبب في أن متصفّحك يعمل على الواي-فاي والكيبل والـ 5G دون أن يعرف الفرق.
البروتوكول = اتفاقٌ يحلّ مشكلة تواصلٍ واحدة عند ارتفاعٍ واحد. النموذج الطبقي = ترتيب هذه الاتفاقات حسب ارتفاعها، بحيث كل طبقة تَخدم التي فوقها وتَستخدم التي تحتها، ولا تتدخّل في شؤونهما.
هذا — بالضبط، حرفياً — ما هو الـ OSI model. ليس شيئاً ملموساً، ولا برنامجاً يعمل. إنه خزانة ملفّات نرتّب فيها حلول المشاكل التي اكتشفتها للتو حسب ارتفاعها.
لن أعطيك الطبقات السبع الآن. ستبنيها واحدةً تلو الأخرى لأنك ستُضطرّ إليها، وفي المرحلة 04 سأقول لك: «انظر للخلف — لقد بنيت OSI».
ستقابل تشبيهات كثيرة: «الـ IP مثل العنوان البريدي»، «الـ port مثل الباب». هذه التشبيهات مصمَّمة لتُنسى. فائدتها أن توصلك للباب، لا أن تسكن فيها. القاعدة في هذا المنهج: التشبيه مسموح كمدخل، ثم نهدمه فوراً ونستبدله بالآلية الحقيقية. إن وجدتَ نفسك تجيب سؤالاً بتشبيهٍ بدل آلية — فأنت لم تفهم بعد.
الخلاصة وموقعك على الشجرة
أنت الآن عند جذر الشجرة. لا تملك بعد ولا طبقةً واحدة مبنية — لكنك تملك ما هو أهم: قائمة المشاكل. كل مرحلة قادمة ستلتقط مشكلةً (أو عنقوداً منها) من قائمتك وتحلّها بشكلٍ متّفقٍ عليه عالمياً، وتعطيك اسماً تخيف به أصدقاءك.
ما بنيناه: مفهوم البروتوكول والطبقة، ولماذا الفصل بين الطبقات هو سرّ نجاح الإنترنت.
ما فتحناه: كل شيء.
توقّعت أن المشكلة التالية ستكون «كيف نرسل البِتّات». لكنّ التحدي الحقيقي ليس سلكاً بين حاسبين — بل سلكاً واحداً يتشارك فيه خمسة. حين يصرخ الجميع على نفس السلك، كيف يعرف B أن هذه الصرخة موجَّهة له لا لـ C؟ المشكلة (ح) التي لم تكتبها في ورقتك — العنونة المحلّية — هي مدخلنا للمرحلة 01، ومنها يولد أول «عنوان» في حياتك: الـ MAC.
← التالي: 01-one-wire.md