في شبكات Ethernet، لا يحدد عنوان MAC جهازًا واحدًا دائمًا؛ فقد يكون عنوان الوجهة مخصصًا لجهاز بعينه، أو لمجموعة من الأجهزة، أو لجميع الأجهزة داخل نطاق البث المحلي. ومن هنا تظهر مفاهيم Unicast وMulticast وBroadcast على مستوى Layer 2.
لكن توجد نقطة مهمة كثيرًا ما تسبب الالتباس: هذه المصطلحات تُستخدم أيضًا على مستوى IP. لذلك يركز هذا المقال تحديدًا على عناوين MAC داخل Ethernet Frames. أما الفرق بين Unicast وMulticast وBroadcast وAnycast بوصفها أنماط توصيل عامة وعلى مستوى IP، فله شرح مستقل لأنماط توصيل البيانات في الشبكات.
ما المقصود بنوع عنوان MAC؟
إطار Ethernet يحتوي على عنوان MAC للمصدر وعنوان MAC للوجهة. إذا كنت تريد فهم موضع هذين الحقلين وما يحيط بهما، يشرح دليل بنية الـFrame في الشبكات تفاصيل الرأس والبيانات وFCS.
عنوان Ethernet الشائع طوله 48 بت، أي 6 بايت، ويُكتب عادة بصيغة سداسية عشرية مثل:
00:1A:2B:3C:4D:5E
وفق بنية عناوين IEEE، يوجد تمييز أساسي بين Individual Address الذي يشير إلى واجهة واحدة وGroup Address الذي يمثل مجموعة. أما Broadcast فهو عنوان Group خاص ومحدد مسبقًا يشير إلى جميع الأجهزة الموجودة على الشبكة المحلية المعنية.
| النوع | الوجهة | مثال |
|---|---|---|
| Unicast / Individual | واجهة واحدة | 00:1A:2B:3C:4D:5E |
| Multicast / Group | مجموعة من المستقبلين | 01:00:5E:00:00:01 |
| Broadcast | جميع الأجهزة في نطاق البث المحلي | FF:FF:FF:FF:FF:FF |
لذلك، استخدام ثلاثة أسماء Unicast وMulticast وBroadcast مناسب للتعلم العملي، لكن من الناحية البنيوية يمكن التفكير فيها أولًا على أنها Individual مقابل Group، ثم اعتبار Broadcast حالة خاصة من Group Address.
توضح إرشادات IEEE الخاصة ببنية EUI وعناوين MAC أن البت الأقل أهمية في أول بايت هو Individual/Group bit، وهو المفتاح الأساسي لهذا التصنيف.
كيف تعرف هل عنوان MAC هو Unicast أم Group؟
داخل أول بايت من عنوان MAC يوجد بت يسمى I/G bit اختصارًا لـIndividual/Group. وهو أقل بت أهمية Least Significant Bit في ذلك البايت.
- I/G = 0: العنوان Individual، ويُستخدم كعنوان Unicast.
- I/G = 1: العنوان Group، ويمكن أن يمثل Multicast أو Broadcast.
هذه نقطة تحتاج إلى الانتباه: المقصود بـ«البت الأول» في بعض الشروحات ليس أول رقم تراه عند كتابة البايت ثنائيًا من اليسار، بل البت الأقل أهمية في أول Octet.
هناك اختصار عملي مفيد عند قراءة العنوان بالـHexadecimal: إذا كانت قيمة أول بايت زوجية يكون I/G bit مساويًا للصفر، وإذا كانت فردية يكون مساويًا للواحد.
| أول بايت | I/G | النتيجة |
|---|---|---|
00 |
0 | Individual / Unicast |
02 |
0 | Individual / Unicast |
01 |
1 | Group |
33 |
1 | Group |
FF |
1 | Group — وفي حالة جميع البايتات FF يكون Broadcast |
لا تخلط بين I/G bit وU/L bit
بجانب I/G يوجد بت آخر يسمى U/L bit ويحدد ما إذا كان العنوان Universally Administered أم Locally Administered. هذان التصنيفان مستقلان عن بعضهما.
فعلى سبيل المثال، العنوان الذي يبدأ بـ02 يملك I/G = 0 ولذلك هو Individual، لكنه يملك U/L = 1 ولذلك هو Locally Administered. وهذا أحد الأسباب التي تجعل وصف كل عنوان MAC بأنه «عنوان ثابت محفور في البطاقة ولا يتغير» تبسيطًا غير دقيق؛ يمكن للأنظمة استخدام عناوين محلية أو عناوين MAC مُدارة برمجيًا.
ولفهم موقع العنونة ضمن Layer 2 بصورة أوسع، يشرح مقال الفرق بين LLC وMAC في طبقة ربط البيانات وظيفة MAC Sublayer وعلاقتها بإطارات الشبكة.
Unicast: إطار موجّه إلى جهاز واحد
في Unicast يكون عنوان MAC الوجهة عنوانًا Individual خاصًا بواجهة واحدة. هذا هو السيناريو المعتاد عندما يريد جهاز داخل شبكة Ethernet إرسال Frame إلى جهاز محدد أو إلى الـDefault Gateway.
لنفترض أن الحاسوب يرسل إطارًا إلى:
00:1A:2B:3C:4D:5E
أول بايت هو 00، وبالتالي I/G bit يساوي صفرًا، أي أن الوجهة Individual وليست Group.
إذا كان السويتش يعرف هذا العنوان في جدول MAC الخاص به، يستطيع توجيه الإطار إلى المنفذ المرتبط بالوجهة بدل إرساله إلى بقية المنافذ.
لكن يجب التمييز بين Unicast MAC وUnicast على مستوى IP. عنوان MAC يهتم بالتوصيل على الرابط المحلي، بينما يستطيع IP تحديد الوجهة عبر شبكات متعددة. يشرح مقال كيف يتعاون MAC وIP أثناء انتقال البيانات هذا الاختلاف بصورة أوسع.
Broadcast: العنوان FF:FF:FF:FF:FF:FF
عنوان Broadcast في Ethernet هو:
FF:FF:FF:FF:FF:FF
جميع البتات الـ48 فيه تساوي 1. وهو عنوان وجهة خاص يمثل جميع الأجهزة الموجودة ضمن نطاق Layer 2 الذي يصل إليه الإطار.
عندما يستقبل Switch إطار Broadcast، فإنه يرسله عبر المنافذ المناسبة الأخرى داخل الـVLAN أو Broadcast Domain نفسه، بدل البحث عن جهاز واحد فقط.
الراوتر يمثل عادة حدًا بين نطاقات Layer 2 المختلفة، لذلك لا يعني إرسال Ethernet Broadcast أن الإطار سيعبر الإنترنت أو ينتشر تلقائيًا إلى شبكات أخرى.
أين نرى Broadcast عمليًا؟
من أشهر الأمثلة ARP في IPv4. عندما يريد جهاز معرفة عنوان MAC المرتبط بعنوان IPv4 موجود على الشبكة المحلية ولا يملك المعلومة في ذاكرته، يمكنه إرسال ARP Request باستخدام Ethernet Broadcast حتى يتمكن الجهاز صاحب عنوان IP المطلوب من رؤيته والرد.
يمكن أن يظهر Broadcast كذلك في مراحل من DHCP، خصوصًا عندما يبدأ جهاز لم يحصل بعد على إعدادات الشبكة عملية اكتشاف خادم DHCP.
Broadcast مفيد وضروري، لكنه يستهلك موارد جميع الأجهزة التي يصل إليها. ولهذا يمثل تقسيم الشبكات إلى VLANs ونطاقات بث مناسبة جزءًا مهمًا من تصميم الشبكات، كما أن الأعطال التي تولد كميات ضخمة من Broadcast Traffic قد تؤدي إلى Broadcast Storm وتدهور شديد في أداء الشبكة.
Multicast: عنوان لمجموعة وليس لكل الشبكة
Multicast يستخدم Group MAC Address لإيصال الإطار إلى مجموعة من المستقبلين بدل استهداف واجهة واحدة أو جميع الأجهزة.
لكن العبارة الشائعة «أي Multicast MAC يبدأ بـ01:00:5E» غير صحيحة.
01:00:5E هي بادئة مهمة مرتبطة أساسًا بربط IPv4 Multicast بعناوين Ethernet، وليست البادئة الوحيدة الممكنة لعناوين Group MAC. وتعرض سجلات IANA الحالية لعناوين Ethernet نطاقات Multicast أخرى واستخداماتها المختلفة.
IPv4 Multicast و01:00:5E
يحدد RFC 1112 الخاص بـIPv4 Multicast طريقة تحويل عنوان مجموعة IPv4 Multicast إلى Ethernet Multicast Address.
تُستخدم البادئة:
01:00:5E
ثم توضع أقل 23 بت من عنوان IPv4 Multicast داخل الجزء المتبقي من عنوان Ethernet.
على سبيل المثال، يمكن ربط عنوان IPv4 Multicast:
224.0.0.1
بعنوان Ethernet:
01:00:5E:00:00:01
وهنا توجد ملاحظة تقنية مهمة: IPv4 Multicast يملك 28 بت مهمة لتحديد المجموعة، بينما عملية الربط إلى Ethernet تحتفظ بـ23 بت فقط. نتيجة ذلك أن أكثر من عنوان IPv4 Multicast يمكن أن يتحول إلى عنوان MAC Multicast نفسه؛ أي أن MAC Address وحده لا يحدد دائمًا مجموعة IPv4 واحدة بصورة فريدة.
IPv6 Multicast يستخدم 33:33
IPv6 يقدم مثالًا واضحًا على سبب عدم صحة ربط كل Multicast MAC بالبادئة 01:00:5E.
وفق RFC 2464 لنقل IPv6 فوق Ethernet، يُحوّل عنوان IPv6 Multicast إلى Ethernet Address يبدأ بـ:
33:33
ثم تُستخدم آخر 32 بت من عنوان IPv6 Multicast.
فمثلًا:
ff02::1
يُربط بعنوان Ethernet:
33:33:00:00:00:01
أول بايت هنا هو 33، وهو رقم فردي، لذلك I/G bit يساوي 1 ويعرفه Ethernet باعتباره Group Address.
كيف يتعامل السويتش مع Unicast وBroadcast وMulticast؟
| حركة المرور | السلوك المعتاد في Switch |
|---|---|
| Known Unicast | إرسال الإطار إلى المنفذ المرتبط بعنوان MAC الوجهة. |
| Unknown Unicast | Flooding داخل النطاق المناسب لأن موقع الوجهة غير معروف بعد. |
| Broadcast | Flooding إلى المنافذ المناسبة داخل Broadcast Domain. |
| Multicast | قد يُFlood إلى عدة منافذ، أو يُقيّد حسب معلومات عضوية المجموعة وتقنيات Snooping. |
في Multicast، لا نريد عادة إرسال حركة البيانات إلى منافذ لا يوجد خلفها أي مستقبل مهتم بالمجموعة. لذلك تستطيع السويتشات التي تدعم IGMP Snooping لـIPv4 وMLD Snooping لـIPv6 مراقبة معلومات عضوية المجموعات وبناء حالة Forwarding أكثر دقة.
يشرح RFC 4541 اعتبارات IGMP وMLD Snooping في السويتشات، والهدف الأساسي هو تجنب Flooding غير الضروري لحركة Multicast إلى أجزاء لا توجد فيها أجهزة مهتمة بها.
كيف تقرر بطاقة الشبكة قبول Frame أو تجاهله؟
عندما يصل Ethernet Frame إلى واجهة الشبكة، يفحص العتاد والبرنامج عنوان MAC الوجهة ويحددان ما إذا كان الإطار من النوع الذي يجب استقباله.
في الوضع المعتاد قد تقبل الواجهة:
- إطار Unicast الموجّه إلى أحد عناوينها المقبولة.
- إطار Broadcast الموجّه إلى
FF:FF:FF:FF:FF:FF. - إطارات Multicast للمجموعات التي تستمع إليها الواجهة عند الحاجة.
أما Frame الموجّه إلى عنوان Individual خاص بجهاز آخر فلا يحتاج النظام عادة إلى تمريره إلى مكدس الشبكة.
وهذا يفسر أيضًا سبب عدم صحة القول إن «كل جهاز يعالج كل Ethernet Frame على السويتش». السويتش نفسه يقلل الحركة الواصلة إلى المنافذ في حالات Known Unicast، كما تقوم واجهة الشبكة بفلترة العناوين التي لا تخصها.
تطبيق عملي في Wireshark
يمكن رؤية هذه المعلومات مباشرة أثناء تحليل Ethernet Traffic في Wireshark. افتح أي Ethernet Frame ثم افحص حقل Destination داخل Ethernet Header.
لعرض Ethernet Broadcast فقط، يمكن استخدام Display Filter:
eth.dst == ff:ff:ff:ff:ff:ff
كما يوفر Wireshark الحقل:
eth.dst.ig
الذي يمثل I/G bit في عنوان الوجهة. وتوثق صفحة Ethernet Display Filter Reference الرسمية هذا الحقل إلى جانب حقول مثل eth.dst وeth.src.
وعند فحص عنوان يدويًا، يمكنك تطبيق القاعدة السريعة على أول Octet:
00:...→ Unicast.02:...→ Unicast وLocally Administered.01:...→ Group/Multicast.33:33:...→ Group، ويُستخدم لربط IPv6 Multicast فوق Ethernet.FF:FF:FF:FF:FF:FF→ Broadcast.
الخلاصة
الفرق بين Unicast وBroadcast وMulticast على مستوى MAC يتعلق بمن يجب أن يستقبل Ethernet Frame داخل Layer 2. عنوان Unicast أو Individual يستهدف واجهة واحدة، وعنوان Multicast يستهدف Group محددة، بينما FF:FF:FF:FF:FF:FF هو Broadcast Address الخاص بجميع الأجهزة في نطاق البث المحلي.
المفتاح التقني لتحديد Individual مقابل Group هو I/G bit، أي أقل بت أهمية في أول بايت من عنوان MAC. وإذا كان صفرًا فالعنوان Individual، وإذا كان واحدًا فهو Group.
والتفصيل الأهم الذي يجب تذكره هو أن 01:00:5E لا تعني «كل Multicast MAC»، بل ترتبط بنطاقات مهمة من IPv4 Multicast؛ أما IPv6 Multicast فوق Ethernet فيستخدم عناوين تبدأ بـ33:33. بهذا الفصل يصبح من الأسهل قراءة Ethernet Frames وفهم قرارات السويتش وتحليل حركة Layer 2 دون الخلط بينها وبين أنماط العنونة والتوجيه على مستوى IP.