بروتوكول إيجاد العناوين

بروتوكول إيجاد العناوين (ARP) هو بروتوكول من بروتوكولات حزمة بروتوكولات الإنترنت (TCP/IP) يوجد في طبقة الإنترنت
إن بروتوكولات حزمة بروتوكولات الإنترنت تعتمد على العناوين المنطقية لتعريف الشبكات والزبائن (hosts)ولكن عندما تكون الحواسب متصلة بشبكة محلية Ethernet أو Token Ring فإن حزمة البيانات الخاصة ببروتوكول الإنترنت المحتوية على العنوان المنطقي في النهاية ستتم كبسلتها مع أطر طبقة الارتباط حتى يتم الإرسال.وبما أن بروتوكولات طبقة الارتباط تستخدم العنوان الفيزيائي لتعريف الحواسب على الشبكة كان لابد من وجود واجهة تخاطب بين نظامي العنونة
فعندما يقوم بروتوكول الإنترنت ببناء حزمة بيانات فإنه يعلم العنوان المنطقي للنظام النهائي الذي هو عنوان الوجهة النهائي للرزمة.وهذا العنوان ممكن أن يعرف حاسب متصل بشبكة محلية أو نظام على شبكة أخرى.ولكن في هذه المرحلة بروتوكول الإنترنت يعلم العنوان المنطقي لذلك النظام فقط.قبل أن يقوم الــ Ethernet بعملية النقل عبر الشبكة لا بد أن يتحول العنوان المنطقي للوجهة إلى العنوان الفيزيائي الموافق.لذا فيقوم بروتوكول إيجاد العناوين بتحقيق واجهة التخاطب بين نظام العنونة المنطقية المستخدم في طبقة الشبكة والعناوين العتادية المستخدمة في بروتوكولات طبقة ربط المعطيات (طبقة ربط البيانات).
بروتوكول إيجاد العناوين
هو بروتوكول يقابل العنوان المنطقي (المؤلف من 32 بت) بـالعنوان العتادي العنوان ماك (MAC address)  (المؤلف من 48 بت) المستخدمة من قبل طبقة الارتباط، يعمل كجزء من واجهة بين طبقتي الارتباط والإنترنت في نظام اتصال النظم المفتوحة

الذاكرة الخابية لبروتوكول إيجاد العناوين ARP Cashe

جدول ARP
جدول يستخدم من قبل بروتوكول إيجاد العناوين.يحتوي قائمة بالعناوين المنطقية المعروفة والعناوين الفيزيائية المقابلة لها وهو مخزن في ARP cashe كي لا يقوم ARP بإرسال طلب عام للعناوين المعروفة.
حيث أنه عندما تريد عقدة أن ترسل طرد فهي تبحث بداية في الذاكرة فإذا لم تجد العنوان الفيزيائي تقوم بطلب عام
أي لتقليل الطلبات العامة التي يقوم بها ARP يقوم الحاسب بتخزين العنوان العتادي الذي تم إيجاده في ذاكرة خابية.المعلومات تبقى في الذاكرة لفترة قصيرة (عادة بين 2-10 دقائق)
ARP Cashe
مساحة صغيرة من الذاكرة موجودة على بطاقة الشبكة NIC=Network Interface Card تستخدم لتخزين جدول ARP وهي أول شيء يبحث فيه الزبون Customer وهي مهمة جداً لتسريع عملية المعالجة في بروتوكول إيجاد العناوين لأن أي جهازين قد تم الاتصال بينهم احتمال كبير أن يتم الاتصال بينهم لاحقاً فيتم البحث في ذاكرة ARP قبل القيام بـ broadcast طلب عام
صلاحية مدخلات ذاكرة الـ ARP  
إن بروتوكول ARP يجب أن يؤمن آلية ل تنظيف مدخلات الذاكرة القديمة وآلية لمنع ما يسمى ب ARP Flooding (أي أن يتم إرسال طلب ARP  بشكل متكرر لنفس IP بمعدل عالي, المعدل الأعظمي الموصى به هو 1 بالثانية في المسافة)
من الآليات المستخدمة في تنظيف المدخلات القديمة :
1-انتهاء الوقت time over وهو انتهاء الوقت لمدخلات الذاكرة حتى لو كانت قيد الاستخدام.حي يجب أن يتم إعادة ضبط المؤقت عندما يتم تحديث هذه المدخلات(إعادة استخدامها).إن الوقت اللازم الذي يتم عنده تنظيف الذاكرة هو دقيقة أو أقل
2-نصيحة طبقة الارتباط link layer advice : إذا كانت سواقة link layer قد اكتشف مشكلة في التوصيل سيتم حذف مدخلة الذاكرة الموافقة
3-نصيحة طبقة عليا higher-layer advice : تأمين طلب من طبقة الإنترنت وطبقة الارتباط ليبلغ مشكلة توصيل.إن تأثير هذا الطلب سيكون لإلغاء صلاحية مدخل الذاكرة الموافق في الآلية 
رتل رزم بروتوكول إيجاد العناوين (ARP Packet Queue)
إن طبقة الارتباط يجب أن تحفظ على الأقل واحد (الأحدث) من الرزم لكل مجموعة من الرزم المراد إرسالها لنفس IP الذي لم يتم إيجاد الــ MAC له ثم إرسال الرزمة المحفوظة عندما يتم إيجاد الــ  MAC 
إن فشل في القيام بهذه التوصية يؤدي لخسارة أول رزمة من كل عملية تبادل على الرغم من أن بروتوكولات الطبقة العليا قادرة على تحمل خسارة الرزمة عن طريق إعادة الإرسال فإن خسارة الرزمة تؤثر على الأداء

صيغة الرسالة (Message Format)

طبقة النقل (Transmission Layer)وهي ليس بالضرورة أن يكون امستخدم قادر على الوصول لها:
48-بت :وهو العنوان الفيزيائي للوجهة
48-بت :وهو العنوان الفيزيائي للمرسل
16-بت :وهو نمط البروتوكول
رزمة البيانات لإيثرنت (Ethernet Packet Data)
16-بت (ar$hrd) : تحدد نوع العتاد
16-بت (ar$pro) : تحدد نمط البروتوكول
8-بت (ar$hln) : الطول بالبايت لكل عنوان عتادي
8-بت (ar$pln) : الطول بالبايت لكل عنوان منطقي
16-بت (ar$op) : تحدد العملية التي تمثلها الرزمة والتي هي إحدى أربع :
طلب ARP =1
إجابة ARP =2
طلب RARP =3
إجابة RARP =4
N بايت (ar$sha) : العنوان العتادي لمرسل هذه الرزمة
M بايت (ar$spa) : العنوان المنطقي لمرسل هذه الرزمة
N بايت (ar$tha) : العنوان العتادي لوجهة هذه الرزمة
M بايت (ar$tpa) : العنوان المنطقي لوجهة هذه الرزمة

اتصالات ARP

العملية التي يقوم بها IP باستخدام ARP لاكتشاف العنوان الفيزيائي للنظام الوجهة تتم كالتالي :
1-يجعل الـ IP معلومات طبقة النقل (Transport Layer) على شكل حزمة بيانات(datagram) . حيث يتم إدخال عنوان IP للوجهة في حقل الــ عنوان IP الوجهة في ترويسة الـIP
2-يقوم الـ IP بمقارنة معرف الـشبكة(Network Identifier)في عنوان IP الوجهة مع معرف شبكته ليحدد إذا كان النقل سيتم مباشرة للوجهة أم إلى موجه على الشبكة المحلية.إذا كان سيتم النقل إلى موجه فإن الـ IP سيستخدم المعلومات في جدول التوجيه(Routing Table) خاصته لتحديد عنوان IP للموجه الذي يجب أن يستقبل حزمة البيانات
3-يقوم IP بتوليد طلب ARP يحوي عنوان العتادي وعنوان الIP للمرسل في حقلي عنوان المرسل العادي، وعنوان IP للمرسل.إن حقل IP الهدف يحوي عنوان IP للمستقبل التالي لحزمة البيانات المحدد حسب الخطوة الثانية وحقل العنوان العتادي للهدف يبقى فارغاً
4-النظام يمرر طلب الــARP لطبقة الــ Data Link Layer التي تؤطرها وتنقلها ك طلب عام broadcast للشبكة المحلية كاملةً
5-النظام على LAN يستقبل طلب الـ ARP ويقرأ محتويات حقل عنوان IP الهدف.إذا كان هذا العنوان لا يطابق IP النظام فإن النظام يقوم بتجاهل هذا الطلب والتخلص منه دون إخبار المرسل
6-إذا كان عنوان IP الهدف للحزمة يطابق IP النظام فإنه يولد إجابة ARP.يقوم النظام بنسخ عنوان IP المرسل و MAC المرسل من طلب الARP  إلى حقلي IP و MAC الوجهة في إجابة الARP   ثم يضع عنوان MAC الخاص به في حقل MAC المرسل
7-يقوم النظام بنقل إجابة ARP إلى الحاسب الذي ولد الطلب باستخدام حقل العنوان الفيزيائي للهدف
8-يستقبل النظام الذي قام بتوليد الطلب إجابة الـ ARP ويستخدم القيمة الموجودة في حقل العنوان الفيزيائي للمرسل بإضافتها لحزمة البيانات في data link layer ثم ينقلها للوجهة المطلوبة

تعليمات الــ ARP

إن أنظمة التشغيل Unix، Linux,Windows تؤمن أداة command-line التي يمكن استخدامها للتلاعب بمحتويات ذاكرة الـARP.في Linux و Unix هذه الأداة تسمى arp; وفي Windows تسمى Arp.exe. ويمكن استخدام الــ arp; أو Arp.exe لإضافة العناوين الفيزيائية للحواسب التي يتم الاتصال بها عادة في الذاكرة لتوفير الوقت وتقليل المواصلات على الشبكة أثناء عملية الاتصال.العناوين التي يتم إضافتها إلى ذاكرة الــ ARP إضافة يدوية تكون إضافة دائمة.أي أنها لاتمحى بعد انتهاء فترة التخزين.ذاكرة ARP مخزنة في الذاكرة ولكن على الرغم من ذلك فإنها تمحى عند إعادة إقلاع الحاسب.
من التعليمات المستخدمة:
Arp [-a {ipaddress}] [-n ipaddress] [-s ipaddress hwaddress {interface}] [-d ipaddress {interface}]
حيث [-a {ipaddress}] يعرض محتويات ذاكرة الــ ARP. إن المتحول الاختياري ipaddress يحدد عنوان لمدخلة الذاكرة محددة التي سيتم عرضها
و [-n ipaddress]يعرض ذاكرة الــ ARP. إن المتحول الاختياري ipaddress يحدد واجهة تخاطب الشبكة التي نريد عرض الcashe وفقاً لها
و [-s ipaddress hwaddress {interface}] تضيف مدخلة جديدة لذاكرة الــ ARP.إن متحول ipaddress يحوي عنوان IP للحاسب.متحول hwaddress يحوي العنوان العتادي لنفس الحاسب.متحول interface يحوي الــ عنوان  IP لواجهة الشبكة في النظام المحلي الذي يجب تعديل الذاكرة من أجله
و [-d ipaddress{interface}]  يحذف مدخلة ذاكرة  الـ ARP المرتبطة بالحاسب الذي له عنوان ipaddress 
المتحول الاختياري interface يحدد الذاكرة التي يجب حذف المدخلة منها

بروتوكول إيجاد العناوين المعكوس(Reverse ARP : RARP)

بروتوكول يوجد في طبقة الــشبكة
يقوم هذا البروتوكول بالوظيفة المعاكسة لوظيفة الـ ARP.وهو يمكن النظام من إيجاد العنوان المنطقي خاصته عن طريق إرسال العنوان الفيزيائي لمخدم RARP.إن RARP كان مصمماً للاستخدام من قبل محطات عمل لا تملك أقراص diskless workstation والتي لا تملك أي وسيلة لتخزين عناوين IP وإعدادات TCP/IP أخرى ولكنه نادر  الاستخدام الآن حتى أنه يكاد لا يستخدم لأنه يقدم عنوان الـ IP فقط ولا يقدم أي من الإعدادات الأخرى التي تحتاجها أي محطة عمل اليوم مثل قناع الشبكة الجزئية أو البوابة الافتراضية. إن بروتوكول RARP يستخدم نفس صيغة الرسالة في نظام ARP.
== بروتوكول إيجاد ا
يقوم هذا البروتوكول بالوظيفة المعاكسة لوظيفة الـ ARP.والذي يميزه عن RARP هو أنه يرد العنوان المنطقي لأي عنوان فيزيائي وليس عنوانه المنطقي فقط، أيضاً أنه لا يقوم بــ Broadcast لأن عنوان الوجهة معروف أصلا.حيث تقوم الوجهة المرسلة بوضع العنوان الفيزيائي والمنطقي للمرسل والمنطقي للوجهة أما المنطقي للوجهة فيملئ بالأصفار
ثم يتم كبسلة الطرد للشبكة المناسبة ويتم إرساله مباشرة للوجهة 
عندما تم استلام طلب Inverse ARP ممكن وضع عنوان المرسل المنطقي والفيزيائي في ARP Table كما لو كان ARP Request 
لكل طلب inverse ARP ممكن للمحطة المستقبلة أن تعد reply وإذا كانت غير قادرة أو ممتنعة عن الرد تقوم بتجاهل الطلب
لها نفس صيغة الرسالة الموجودة في ARP ما عدا الـ opcode
Request =8
وReply=9.