المرحلة 01 — سلكٌ واحد
الطبقات التي نبنيها هنا: Physical (L1) و Data Link (L2). وفيها يولد أول عنوان: الـ MAC، وأول تعريفٍ حقيقي لـ LAN.
النبذة
في المرحلة 00 كان عندنا سلكٌ بين حاسبين، واكتشفنا أن مجرّد إرسال hi يتطلّب سبعة اتفاقات. سنفترض الآن أن مشاكل الفولتية والتزامن والترميز (أ، ب) محلولة — هذه هي الطبقة الفيزيائية، ولن نقضي فيها وقتاً لأنها هندسة كهرباء لا شبكات. سنقفز للمشكلة التي تبدأ منها الشبكات فعلاً: ماذا يحدث حين يكون على السلك أكثر من اثنين؟
وصّلنا خمسة حواسيب على سلكٍ واحدٍ مشترك (هذا فعلاً كيف كان Ethernet البدائي يعمل: كيبل واحد سميك، الجميع ملحومون عليه — يُسمّى bus). أي فولتية تضعها A على السلك، يسمعها الجميع فوراً: B, C, D, E.
A تريد أن ترسل hi لـ C تحديداً.
- كيف يعرف
Cأن هذه الرسالة له، لا لـBأوD؟ - وحين ينتهي
Cويريد الرد، كيف تعرفAأن الرد جاءها منه؟ - والأصعب: ماذا لو بدأت
AوDالإرسال في نفس اللحظة؟
صمّم حلاً. لا تكمل حتى تكتب آليةً لكل سؤال. (تلميح لتوجيه التفكير لا للحل: السؤال الأول والثاني يطلبان نفس الشيء — كيف نسمّي جهازاً على السلك.)
الدرس
ليش نحتاج «اسماً» لكل بطاقة — ولماذا يُحرَق في المصنع
حلّك للسؤالين ١ و ٢ لا بد أنه نوعٌ من: «كل جهاز له معرّف فريد، ونضع معرّف المرسِل والمستقبِل في بداية الرسالة، والكل يسمع لكن من لا يطابق معرّفُه المستقبِلَ يتجاهل».
ممتاز — اخترعتَ الـ MAC address (Media Access Control address).
لكن السؤال الأعمق، الذي يفرّق من فهم عمّن حفظ: من أين يأتي هذا المعرّف؟
تخيّل أن الأجهزة تختار أرقامها عند الإقلاع. مشكلتان قاتلتان:
- تصادم الأسماء: قد يختار جهازان نفس الرقم على نفس السلك ← فوضى.
- مَن المرجع؟ على هذه الطبقة لا يوجد «خادم مركزي» يوزّع الأرقام — نحن تحت كل شيء، لا إنترنت ولا راوتر ولا حتى IP بعد. لا أحد ليسأله الجهازُ «ما رقمي؟».
الحل الوحيد المنطقي: يأتي الرقم محروقاً في البطاقة من المصنع، وفريداً عالمياً. ولكي يكون فريداً عالمياً دون تنسيقٍ لحظي، قُسّم الـ 48 بِتّة إلى نصفين:
text48 bit = [ 24 bit OUI ] [ 24 bit رقم الجهاز ] مُعرّف الشركة تختاره الشركة بحرية (تشتريه من IEEE)
- أول 24 بِتّة = OUI (Organizationally Unique Identifier): تشتريه الشركة المصنّعة من IEEE. شركة Apple مثلاً تملك بادئات معيّنة.
- آخر 24 بِتّة: تعطيها الشركة لكل بطاقة تصنعها، بلا تكرار.
النتيجة: تفرّدٌ عالميٌّ بلا مرجعٍ مركزي لحظي — كلٌّ يدير مجاله. هذا لماذا الـ MAC يُكتب هكذا: a4:83:e7:1f:0c:9d — ستة بايتات، أول ثلاثة هي OUI.
جواب سؤال هولبرتون (Task 2): ما الـ MAC؟ «المعرّف الفريد لواجهة شبكة». لاحظ أنك لم تحفظ هذا — اشتققتَه: هو الاسم الذي تحتاجه بطاقةٌ ما لتُميَّز على سلكٍ مشترك، ولذلك هو خاصّ بـ«واجهة الشبكة» (NIC) لا بالحاسب. حاسبٌ بثلاث بطاقات له ثلاثة عناوين MAC.
التأطير: كيف يُغلَّف hi فعلياً (الـ Frame)
السؤالان ١ و ٢ يفرضان أن كل رسالة على السلك يجب أن تحمل المرسِل والمستقبِل. وحلّ مشكلة 00-(و) (تلف بِتّة) يفرض checksum. فتصير الوحدة المرسَلة على السلك ليست hi عارية، بل hi ملفوفةً في إطار (Ethernet Frame):
text[ Preamble ][ Dest MAC ][ Src MAC ][ Type ][ ...الحمولة (payload)... ][ FCS ] 7+1 بايت 6 بايت 6 بايت 2 بايت 46–1500 بايت 4 بايت Preamble : نبضات تزامن، تقول للمستقبِل "انتبه، إطارٌ قادم" (حل مشكلة 00-أ/ج) Dest MAC : لمن؟ (السؤال 1) Src MAC : ممن؟ (السؤال 2) Type : ما نوع الحمولة بالداخل؟ (مثلاً 0x0800 = بداخلي IP) — تذكّر هذا الحقل FCS : Frame Check Sequence = الـ checksum (حل مشكلة 00-و)
كل بطاقة على السلك تقرأ Dest MAC؛ إن لم يطابق عنوانها (وليس عنوان البث) تُسقِط الإطار في العتاد قبل أن يزعج المعالج. (عنوان خاص ff:ff:ff:ff:ff:ff = broadcast = «للجميع» — احفظ هذا، سنحتاجه بشدّة في المرحلة 02.)
السؤال ٣: التصادم — ومولد الحلّ التاريخي
حين يرسل اثنان معاً تتشوّش الفولتية = collision. الحل الأصلي (CSMA/CD): «أصغِ قبل أن تتكلّم؛ وإن سمعتَ تصادماً أثناء الإرسال، اصمت فترةً عشوائية ثم أعِد». لم يَعُد هذا مستخدماً اليوم لأن الـ switch قتل المشكلة: السويتش يعطي كل جهاز سلكَه الخاص ويعيد توجيه الإطار للمنفذ الصحيح فقط (يبني جدولاً MAC↔منفذ). لا حاجة للتفصيل الآن — يكفي أن تعرف أن «السلك المشترك» صار تجريداً، والسويتش يحافظ على الوهم بكفاءة.
التعريف الحقيقي لـ LAN (لا التعريف المحفوظ)
هولبرتون سيقول لك: «LAN يربط الأجهزة المحلّية، حجمه غرفة/مبنى». هذا وصفُ نتيجةٍ، لا تعريفاً. التعريف الذي اشتققتَه:
الـ LAN هو مجموعة الأجهزة التي تستطيع الوصول لبعضها مباشرةً بعنوان الـ MAC، على نسيج طبقة-وصلٍ واحد (سلك/سويتش)، دون أن يقف بينها شيءٌ يترجم العناوين.
أي: «أنا وأنت في نفس الـ LAN» ⟺ «أستطيع أن أضع MAC-ك في إطارٍ ويصلك مباشرة». أما «الحجم غرفة أو مبنى» فهو عاقبةٌ لا تعريف: مدى تقنيات الطبقة الفيزيائية (طول كيبل Ethernet، مدى إشارة الواي-فاي) محدود فيزيائياً، فيصير الـ LAN صغيراً جغرافياً. التعريف سببٌ، والحجم نتيجة.
جواب هولبرتون (Task 1، السؤال الأول): الحاسب المحلّي متّصل بـ؟ → LAN. الآن تعرف لماذا: لأنه على نسيجٍ يبلغه جيرانه بالـ MAC مباشرة.
على Linux:
baship link show # كل واجهة وعنوان MAC-ها (سطر link/ether)
سترى شيئاً مثل link/ether a4:83:e7:1f:0c:9d. خذ أول ثلاث بايتات (a4:83:e7) وابحث عنها في أي «MAC OUI lookup» — سيخبرك بالشركة المصنّعة لبطاقتك. هذا الـ OUI الذي اشتريَته الشركة من IEEE، حيٌّ أمامك.
(على macOS: ifconfig en0 | grep ether. لاحظ اختلاف الأداة — سنعالج هذا في 07.)
إليك بداية إطار Ethernet كـ hex، وعنوان MAC جهازك هو a4:83:e7:1f:0c:9d:
textff ff ff ff ff ff 00 1a 2b 3c 4d 5e 08 06 ...
ثم إطار ثانٍ:
texta4 83 e7 1f 0c 9d 00 1a 2b 3c 4d 5e 08 00 ...
ثالث:
textb8 27 eb 00 11 22 00 1a 2b 3c 4d 5e 08 00 ...
لكل إطار، أجِب وبرهِن:
- ما عنوان الوجهة؟ عنوان المصدر؟ ما حقل
Type؟ - هل ستقبله بطاقتك أم تُسقطه في العتاد؟ ولماذا؟
- في الإطار الأول،
Type = 08 06. في الثاني والثالث08 00. أحدهما يعني «بداخلي IP»، والآخر يعني شيئاً آخر سنكتشفه بعد قليل. خمّن أيهما الـ IP، ولماذا قد يحتاج جهازٌ أن يبثّ شيئاً لـ«الجميع» (ff..ff) لكنه ليس IP عادي.
القرار الذي تتّخذه بطاقتك في السؤال 2 هو حرفياً ما يفعله العتاد ملايين المرات في الثانية. أنت الآن تفكّر مثل بطاقة شبكة.
الخلاصة وموقعك على الشجرة
- بنيتَ الطبقة الفيزيائية (تجاوزناها بسرعة) والطبقة الثانية: Data Link.
- ولِد أول عنوان: MAC — اسمٌ مسطّح (flat)، محروقٌ في العتاد، فريدٌ عالمياً، معناه محلّيٌّ فقط (على السلك/السويتش).
- ولِدت وحدة البيانات الأولى: الإطار (Frame).
- اشتققتَ التعريف الحقيقي لـ LAN.
العقدة المعلّقة التي يجب أن تحكّك: قلتُ إن الـ MAC «معناه محلّيٌّ فقط». وقلت إن حقل Type قد يساوي «بداخلي IP». ما هذا الـ IP؟ ولماذا نحتاجه إن كان الـ MAC يكفي؟
الـ MAC مسطّح: b8:27:eb:00:11:22 لا يخبرك أين هذا الجهاز في العالم، تماماً كما أن اسم «محمد» لا يخبرك بعنوانه. على سلكٍ من خمسة أجهزة هذا لا يهم — تصرخ للجميع ومن يطابق يرد. لكن تخيّل خمسة مليارات جهاز. لا يمكن أن يصرخ كلٌّ للجميع، ولا أن يحفظ كلٌّ عنوان كل أحد. الـ MAC المسطّح ينهار تماماً عند هذا الحجم. في المرحلة 02 سنكتشف أن الخروج من الغرفة يتطلّب نوعاً جديداً تماماً من العناوين: عنواناً هرمياً يقول «أين»، لا «من» فقط.
← التالي: 02-many-networks.md