عندما يرسل جهاز بيانات إلى جهاز آخر، لا يختار بين IP وMAC؛ بل يستخدم كليهما لوظيفتين مختلفتين. عنوان IP يحدد الوجهة على مستوى الشبكة ويسمح بتوجيه البيانات بين شبكات متعددة، بينما عنوان Link Layer مثل Ethernet MAC يُستخدم لإيصال البيانات عبر الوصلة المحلية الحالية إلى Next Hop.
إذا كانت الوجهة داخل الشبكة المحلية نفسها، فقد يكون Next Hop هو الجهاز المقصود مباشرة. وإذا كانت الوجهة في شبكة بعيدة، يكون Next Hop عادةً Router مثل Default Gateway. في IPv4 يساعد ARP على معرفة عنوان Ethernet لهذا الـNext Hop، بينما يستخدم IPv6 آليات Neighbor Discovery بدلًا من ARP.
لفهم الرحلة بدقة، من المهم أيضًا التمييز بين IP Packet وEthernet Frame. هذا امتداد عملي لما تشرحه طبقات نموذج OSI: حزمة IP تنتمي إلى طبقة الشبكة، ثم تُغلّف داخل Frame مناسبة لتقنية الوصلة التي ستعبرها.
IP وMAC وARP: ما وظيفة كل واحد؟
| المكوّن | وظيفته في الرحلة | نطاقه |
|---|---|---|
| IP | يحدد المصدر والوجهة المنطقيين ويسمح بعملية Routing بين الشبكات | يمكن أن يمتد من الجهاز المرسل إلى الوجهة النهائية |
| MAC / Link-Layer Address | يحدد المرسل والمستقبل على الوصلة المحلية الحالية | عادةً Hop واحد فقط |
| ARP | يحوّل IPv4 Address للجار المحلي إلى عنوان Link Layer مناسب | الشبكة المحلية في IPv4 |
| IPv6 Neighbor Discovery | ينفذ Address Resolution واكتشاف Routers ووظائف أخرى للجيران | الوصلة المحلية في IPv6 |
إذا أردت التعمق في بنية العنوان نفسه بدل رحلة البيانات، فهناك شرح منفصل لـMAC Address وEUI-48 والفرق بين MAC وIP. هنا سنركز على كيفية تعاون هذه العناوين أثناء إرسال Packet فعلية.
الخطوة التي تسبق ARP: كيف يقرر الجهاز أين يرسل Packet؟
من الأخطاء الشائعة تصور أن الجهاز يبدأ أولًا بالسؤال عبر ARP ثم يقرر أين يرسل البيانات. عمليًا، قرار Routing يأتي أولًا.
لنفترض أن الجهاز يملك:
IP Address: 192.168.1.10
Prefix: /24
Default Gateway: 192.168.1.1
ويريد إرسال بيانات إلى:
192.168.1.20
نظام التشغيل يفحص Routing Table ويجد أن الشبكة 192.168.1.0/24 متصلة مباشرة. لذلك يعرف أن الوجهة On-Link وأن Next Hop هو 192.168.1.20 نفسه.
أما إذا كانت الوجهة مثل:
203.0.113.50
فهي لا تطابق الشبكة المحلية 192.168.1.0/24. إذا لم توجد Route أكثر تحديدًا، سيستخدم الجهاز Default Route، وبالتالي يصبح Next Hop هو الـDefault Gateway عند 192.168.1.1.
الـSubnet Mask أو Prefix يساعد في إنشاء وفهم هذه المسارات المتصلة، ويمكن مراجعة شرح Subnetting وCIDR لفهم كيفية تحديد حدود الشبكة.
إذن الترتيب المنطقي هو:
- تحديد Destination IP.
- البحث في Routing Table.
- تحديد Route وNext Hop وواجهة الخروج.
- إذا احتاجت الوصلة إلى عنوان Link Layer ولم يكن معروفًا، تبدأ عملية Address Resolution مثل ARP أو IPv6 Neighbor Discovery.
الحالة الأولى: جهازان داخل الشبكة المحلية نفسها باستخدام IPv4
لنفترض وجود جهازين متصلين بالشبكة نفسها:
PC-A
IP: 192.168.1.10/24
MAC: AA:AA:AA:AA:AA:AA
PC-B
IP: 192.168.1.20/24
MAC: BB:BB:BB:BB:BB:BB
1. التطبيق ينتج البيانات
قد يبدأ الاتصال من متصفح أو برنامج أو أي تطبيق. تمر البيانات إلى TCP أو UDP عند الحاجة، ثم تُغلف داخل IP Packet تحتوي، بصورة مبسطة، على:
Source IP: 192.168.1.10
Destination IP: 192.168.1.20
في هذه المرحلة يعرف PC-A عنوان IP للوجهة، لكنه يحتاج أيضًا إلى معرفة كيفية إرسال Packet فعليًا عبر Ethernet.
2. الجهاز يقرر أن الوجهة On-Link
من Routing Table يتبين أن 192.168.1.20 موجودة على الشبكة المتصلة مباشرة. لذلك لا يحتاج PC-A إلى Default Gateway لهذا الاتصال.
Next Hop هنا هو:
192.168.1.20
3. فحص ARP Cache
قبل إرسال طلب جديد، يستطيع النظام فحص المعلومات الموجودة لديه مسبقًا. إذا كانت هناك Mapping صالحة تربط:
192.168.1.20 → BB:BB:BB:BB:BB:BB
يمكن استخدام هذه المعلومة مباشرة دون بث ARP Request جديد.
4. إذا لم يكن MAC معروفًا يبدأ ARP
يصف RFC 826 الخاص بـARP آلية تحويل عنوان بروتوكول مثل IPv4 إلى عنوان الشبكة المحلية اللازم للإرسال.
يرسل PC-A طلب ARP يسأل عمليًا عن الجهاز الذي يملك 192.168.1.20. على Ethernet يكون الإطار Broadcast إلى:
Destination MAC:
FF:FF:FF:FF:FF:FF
وتحتوي رسالة ARP نفسها على معلومات من بينها عنوان المرسل وعنوان IPv4 المطلوب حله.
مهم: ARP ليس IP Packet عادية. على Ethernet يمتلك ARP EtherType خاصًا به ولا يحتاج إلى تغليفه داخل IPv4 حتى يحل عنوان IPv4.
5. ماذا يفعل Switch بطلب ARP؟
بما أن Destination MAC هي Broadcast، ينشر Switch الإطار داخل نطاق Layer 2 المناسب، مثل الـVLAN نفسها، بدل توجيهه عبر الإنترنت.
وفي أثناء ذلك يستطيع Switch تعلم أن MAC الخاص بـPC-A موجود خلف المنفذ الذي استقبل منه Frame.
تصل الرسالة إلى أجهزة النطاق المحلي، لكن الجهاز الذي يملك 192.168.1.20 هو الذي يملك الإجابة المطلوبة.
6. PC-B يرسل ARP Reply
يرد PC-B بعنوانه:
192.168.1.20 → BB:BB:BB:BB:BB:BB
ويستطيع PC-A تخزين هذه العلاقة مؤقتًا في ARP Cache لاستخدامها في Packets التالية بدل تكرار عملية الاكتشاف في كل مرة.
7. إنشاء Ethernet Frame الحقيقية للبيانات
أصبح لدى PC-A الآن كل ما يحتاج إليه:
IP Packet:
Source IP = 192.168.1.10
Destination IP = 192.168.1.20
Ethernet Frame:
Source MAC = AA:AA:AA:AA:AA:AA
Destination MAC = BB:BB:BB:BB:BB:BB
حزمة IP نفسها تكون Payload داخل Ethernet Frame.
8. Switch يمرر Frame إلى PC-B
ينظر Switch أساسًا إلى Destination MAC عند أداء وظيفة Switching في Layer 2. وإذا كان يعرف المنفذ المرتبط بـMAC-B، يرسل Frame إليه.
عندما تصل إلى PC-B، تُفك طبقة Ethernet ثم تمر IP Packet إلى طبقة الشبكة، وبعدها تصل بيانات TCP أو UDP إلى العملية أو التطبيق المناسب.
الحالة الثانية: الوجهة موجودة في شبكة بعيدة
الآن يريد PC-A الوصول إلى:
203.0.113.50
مع بقاء الإعداد المحلي:
PC-A: 192.168.1.10/24
Default Gateway: 192.168.1.1
الفرق الأساسي أن الجهاز لا يحتاج عادة إلى MAC الخاص بـ203.0.113.50. هذا العنوان موجود خارج الوصلة المحلية، ولن يتمكن ARP Broadcast المحلي من عبور سلسلة Routers للوصول إليه.
| Routing يحدد Next Hop أولًا، ثم تحل الطبقة المحلية عنوان ذلك الجار عند الحاجة. |
1. Routing Table تختار Default Gateway
بعد Route Lookup يقرر الجهاز أن Next Hop هو:
192.168.1.1
أي الـDefault Gateway.
2. ARP هذه المرة يبحث عن MAC الخاص بالـGateway
إذا لم تكن العلاقة موجودة في ARP Cache، يكون السؤال المطلوب هو:
192.168.1.1 → ما عنوان MAC؟
وليس:
203.0.113.50 → ما عنوان MAC؟
بعد الحصول على MAC الخاص بالـRouter يصبح التغليف مثل:
IP Packet:
Source IP = 192.168.1.10
Destination IP = 203.0.113.50
Ethernet Frame:
Source MAC = MAC-PC-A
Destination MAC = MAC-GATEWAY
لاحظ أن Destination IP هي الخادم البعيد، لكن Destination MAC هي الـRouter المحلية. هذا الاختلاف هو المفتاح لفهم الرحلة كلها.
ماذا يحدث داخل Router؟
يصف RFC 1812 الخاص بمتطلبات IPv4 Routers عملية Forwarding التي تشمل استقبال Packet من Link Layer، اتخاذ قرار التوجيه، تحديد Next Hop ثم تغليف Packet داخل Frame مناسبة للوصلة التالية.
بصورة مبسطة، يقوم Router بالآتي:
- يستقبل Frame على واجهة الشبكة.
- يعالج Link-Layer Frame ويستخرج IP Packet.
- يفحص معلومات IP اللازمة.
- يبحث عن Destination IP في Routing Table.
- يختار Route وواجهة الخروج وNext Hop.
- يحدّث الحقول التي يجب تغييرها أثناء Forwarding.
- يحل Link-Layer Address للـNext Hop إذا كانت تقنية الخروج تحتاج ذلك ولم تكن المعلومة موجودة.
- ينشئ Link-Layer Frame جديدة ويرسل Packet عبر الوصلة التالية.
هل يتغير MAC عند كل Router بينما يبقى IP ثابتًا؟
هذه قاعدة مفيدة للتعلم، لكن يجب صياغتها بدقة.
في اتصال IP عادي دون NAT أو Tunnel أو Proxy، تظل عناوين IP للمصدر والوجهة عادةً تمثل طرفي الاتصال أثناء عبور Routers. لكن Link-Layer Header تخص الوصلة الحالية، ولذلك يتم إنشاء تغليف جديد عند الانتقال إلى وصلة أخرى.
مثلًا يمكن تبسيط رحلة بين Host A وخادم S عبر Routerين هكذا:
| الوصلة | Source IP | Destination IP | Source MAC | Destination MAC |
|---|---|---|---|---|
| Host A → Router 1 | IP-A | IP-S | MAC-A | MAC-R1 |
| Router 1 → Router 2 | IP-A | IP-S | MAC-R1-Egress | MAC-R2 |
| Router 2 → Server | IP-A | IP-S | MAC-R2-Egress | MAC-S |
المثال يفترض أن الوصلات المعنية تستخدم Ethernet أو Link Layer ذات عناوين مشابهة. ليس كل Link في الإنترنت مضطرًا إلى استخدام Ethernet MAC، لذلك الأصح الحديث عن Link-Layer encapsulation بدل افتراض وجود MAC في كل جزء من المسار.
ماذا يتغير في IP Packet عند مرورها عبر Router؟
حتى عندما لا تتغير Source IP وDestination IP، لا يعني ذلك أن IP Header تبقى مطابقة حرفيًا.
في IPv4 يحتوي الرأس على TTL. وفق مواصفات IPv4 في RFC 791 يخفض Router هذه القيمة أثناء Forwarding. وإذا وصلت إلى الصفر تُسقط Packet، وهو المبدأ الذي يمنع Packet من الدوران إلى ما لا نهاية بسبب Routing Loop.
ولأن IPv4 Header Checksum تغطي الرأس، فإن تغيير TTL يتطلب تحديث الـChecksum.
في IPv6 يوجد حقل مشابه وظيفيًا يسمى Hop Limit. توضح مواصفات IPv6 الحالية في RFC 8200 أنه يُخفض عند كل عملية Forwarding. وعلى عكس IPv4، لا يحتوي IPv6 Base Header على Header Checksum.
كيف تصل Packet في النهاية إلى الخادم؟
تستمر Routers في اتخاذ قرار مستقل حول Next Hop حتى تصل Packet إلى Router يملك Route متصلة مباشرة بشبكة الوجهة.
إذا كان الخادم موجودًا على Ethernet IPv4 مثلًا، يحتاج هذا Router الأخير إلى معرفة Link-Layer Address للخادم. يستطيع استخدام ARP إذا لم تكن المعلومة موجودة مسبقًا.
ثم يكون الإطار الأخير، بصورة مبسطة:
IP:
Source = IP الجهاز الأصلي
Destination = IP الخادم
Ethernet:
Source = MAC واجهة الـRouter الأخيرة
Destination = MAC الخادم
هنا فقط تصبح Destination MAC هي MAC الخاصة بالخادم نفسه، لأن الخادم أصبح الجار المحلي المباشر للـRouter الأخير.
ماذا يحدث بدل ARP في IPv6؟
IPv6 لا يستخدم ARP. تستخدم العقد IPv6 Neighbor Discovery Protocol، الموضح في RFC 4861، لتنفيذ مجموعة من وظائف الوصلة المحلية مثل Address Resolution واكتشاف Routers ومراقبة قابلية الوصول إلى الجيران.
Neighbor Solicitation وNeighbor Advertisement
إذا كان جهاز IPv6 يريد الاتصال بجار On-Link ولا يعرف عنوان Link Layer الخاص به، يستطيع إرسال Neighbor Solicitation إلى Solicited-Node Multicast Address المرتبطة بعنوان الجار.
يرد الهدف في عملية Address Resolution بـNeighbor Advertisement تتضمن معلومات Link Layer اللازمة، وتُحفظ النتيجة في Neighbor Cache.
إذن الفكرة العامة تشبه المشكلة التي يحلها ARP:
أعرف IP للجار
↓
أحتاج Link-Layer Address
↓
Address Resolution
↓
إرسال Frame إلى الجار
لكن الآلية ليست ARP Broadcast؛ فهي جزء من ICMPv6 وNeighbor Discovery وتستخدم IPv6 Multicast.
وماذا لو كانت وجهة IPv6 بعيدة؟
المبدأ نفسه الذي رأيناه في IPv4 يبقى قائمًا: الجهاز لا يحاول اكتشاف Link-Layer Address لخادم بعيد عبر الإنترنت. يحدد Routing أولًا الـNext Hop المحلي، والذي يكون غالبًا Default Router، ثم يستخدم Neighbor Discovery عند الحاجة للتعامل مع ذلك الجار.
كما تلعب Router Advertisement دورًا مهمًا في IPv6 في تعلم Hosts معلومات عن Routers والوصلة، بدل اختزال Neighbor Discovery في مجرد «ARP خاص بـIPv6»؛ فوظائف NDP أوسع من Address Resolution وحدها.
أين يدخل NAT في هذه الرحلة؟
في شبكات المنازل والشركات التي تستخدم IPv4 Private Addresses، قد تمر Packet عبر جهاز يؤدي Network Address Translation.
عندها لم تعد قاعدة «IP لا تتغير» صحيحة. يمكن أن يغيّر NAT عنوان المصدر، ويمكن لـNAPT/PAT أيضًا ترجمة أرقام المنافذ بحسب نوع الترجمة المستخدمة.
يوضح RFC 3022 الخاص بـTraditional NAT نموذج ترجمة العناوين عند حدود الشبكات الخاصة.
لذلك يمكن أن تبدأ Packet داخل المنزل مثل:
Source IP: 192.168.1.10
Destination IP: 203.0.113.50
ثم بعد NAT يظهر للجانب الخارجي عنوان مصدر عام بدل 192.168.1.10.
كما توجد تقنيات أخرى تغير الصورة، مثل VPN Tunneling التي قد تغلف Packet الأصلية داخل Packet خارجية جديدة، وApplication Proxies التي يمكن أن تنهي اتصالًا وتنشئ اتصالًا منفصلًا.
| ARP يحل عنوان الجار في IPv4، بينما Neighbor Discovery في IPv6 منظومة أوسع تعتمد على ICMPv6 وMulticast. |
Switch أم Router: من يقرر ماذا؟
في النموذج التقليدي البسيط:
- Switch: يمرر Ethernet Frames داخل نطاق Layer 2 بالاعتماد على عناوين MAC وجدول التحويل.
- Router: يربط شبكات IP مختلفة ويختار Next Hop بالاعتماد على Destination IP وRouting Table.
لا يعني ذلك أن كل صندوق مادي يؤدي وظيفة واحدة فقط. أجهزة Layer 3 Switches مثلًا تستطيع تنفيذ Routing أيضًا. المهم هو فهم الوظيفة التي يجري تنفيذها على Packet في تلك اللحظة، وليس اسم الجهاز المكتوب على العلبة.
لمن يريد بناء الصورة الأشمل حول Switches وRouters والطبقات والبروتوكولات، يربط دليل أساسيات الشبكات من الصفر هذه المفاهيم ببقية بنية الشبكات.
أخطاء شائعة عند فهم رحلة Packet
هل يحتاج جهازي إلى MAC الخاص بالخادم الموجود على الإنترنت؟
لا في الحالة المعتادة. يحتاج جهازك إلى Link-Layer Address للـNext Hop الموجود على الوصلة المحلية. إذا كان الخادم بعيدًا، يكون هذا الـNext Hop غالبًا Default Gateway.
هل ARP هو الذي يحدد أين تُرسل Packet؟
لا. Routing يحدد Next Hop أولًا، ثم يستخدم ARP عند الحاجة لمعرفة عنوان Link Layer الخاص بهذا الـNext Hop في IPv4.
هل MAC يسافر من جهازك حتى الخادم؟
ليس بهذه الصورة. Link-Layer Header مرتبطة بالوصلة الحالية، وتُستبدل مع الانتقال بين الوصلات التي تتطلب تغليفًا جديدًا.
هل Source IP وDestination IP لا تتغيران أبدًا؟
لا. تبقيان عادةً تمثلان طرفي الاتصال عند Routing العادي، لكن NAT وTunnels وProxies وآليات أخرى يمكن أن تغير أو تغلف هذه العناوين.
هل ARP يعمل عبر Routers؟
ARP مخصص لحل العناوين على الشبكة المحلية التي يجري الإرسال عليها. الجهاز لا يرسل ARP Request عبر سلسلة Routers بحثًا عن MAC لخادم بعيد؛ بل كل Hop يتعامل مع جاره التالي عند الحاجة.
هل DNS جزء من ARP؟
لا. DNS يحل اسمًا مثل example.com إلى عنوان IP عندما تكون هذه الخطوة مطلوبة. بعد توفر Destination IP تبدأ قرارات Routing وNext Hop وLink-Layer Address المناسبة. وقد تكون نتائج DNS أو ARP أو Neighbor Discovery موجودة مسبقًا في Caches، لذلك لا تظهر كل هذه الرسائل على الشبكة في كل اتصال.
رحلة Packet كاملة في سطر واحد
Application Data
↓
TCP/UDP عند الحاجة
↓
IP Packet مع Destination IP
↓
Route Lookup
↓
تحديد Next Hop
↓
ARP في IPv4 أو Neighbor Discovery في IPv6 عند الحاجة
↓
Link-Layer Frame إلى Next Hop
↓
Switch / Link
↓
Router
↓
Route Lookup جديد
↓
Link-Layer encapsulation جديدة
↓
...
↓
Router المتصل بشبكة الوجهة
↓
Address Resolution للوجهة المحلية عند الحاجة
↓
Frame أخيرة
↓
Destination Host
↓
فك التغليف وتسليم البيانات للتطبيق
كيف ترى هذه المراحل عمليًا على جهازك؟
عند استكشاف مشكلة شبكة، يمكن تقسيمها إلى الأسئلة نفسها التي يستخدمها الجهاز:
- ما عنوان IP والـPrefix الموجودان على الواجهة؟
- ما Route التي ستُستخدم للوصول إلى الوجهة؟
- ما Next Hop؟
- هل توجد ARP أو Neighbor Cache Entry لهذا الجار؟
- هل يمكن الوصول إلى Default Gateway؟
- إلى أي Hop يصل المسار قبل أن يتوقف؟
على Windows يمكن أن تساعد أوامر مثل arp -a وroute print وtracert. وعلى Linux تظهر معلومات مشابهة عبر ip neigh وip route، مع أدوات مثل traceroute عند توفرها.
إذا فهمت أن Routing يختار أين تذهب Packet التالية، وأن ARP أو Neighbor Discovery يجيب عن كيفية الوصول إلى ذلك الجار على الوصلة الحالية، يصبح تفسير جزء كبير من مشاكل الشبكات أسهل بكثير.
الخلاصة
رحلة Packet ليست اختيارًا بين IP وMAC، بل تعاون بين طبقات مختلفة. IP يوفر العنونة والتوجيه بين الشبكات، بينما Link Layer تتولى تسليم البيانات عبر كل وصلة منفردة. في IPv4 يحل ARP عنوان الجار المحلي إلى عنوان Link Layer عند الحاجة، وفي IPv6 تتولى Neighbor Discovery هذه المهمة ضمن منظومة أوسع.
إذا كانت الوجهة داخل الشبكة نفسها، يكون Next Hop غالبًا الوجهة مباشرة. وإذا كانت بعيدة، يرسل الجهاز Frame إلى Default Gateway مع إبقاء Destination IP موجهة إلى الوجهة النهائية. كل Router يكرر قرار Routing، ويختار Next Hop جديدًا، ويعيد تغليف Packet للوصلة التالية حتى تصل إلى الشبكة النهائية.
وهذا يفسر القاعدة الأهم: IP يتعلق بالمسار المنطقي والوجهة، أما Link-Layer Address فتتعلق بالقفزة المحلية الحالية.