بیشتر برنامهها و نرمافزارهای کامپیوتری از آدرسهای منطقی (آدرس IP) برای ارسال و دریافت پیامها استفاده میکنند اما ارتباط واقعی، از طریق آدرس فیزیکی (آدرس MAC) در لایه دوم مدل OSI برقرار میشود. بنابراین، هدف دریافت آدرس MAC مقصد است که در ارتباط با سایر دستگاهها نیاز خواهد بود. پروتکل ARP در این بخش وارد عمل میشود و وظیفه آن ترجمه آدرسهای IP به آدرسهای فیزیکی است.
تصویر(1)
پروتکل ARP چیست؟
ARP مخفف Address Resolution Protocol است که یکی از مهمترین پروتکلهای لایه Data link در مدل OSI می باشد. این پروتکل مسئول یافتن آدرس سختافزاری (یا MAC address) میزبان از یک آدرس IP مشخص است.
تصویر(2)
اصطلاحات مهم مرتبط با پروتکل ARP
- Reverse ARP
- Inverse ARP
Reverse ARP
Reverse Address Resolution Protocol یک پروتکل است که توسط دستگاه های کلاینت در شبکههای محلی (LAN) برای درخواست آدرس IP ورژن 4 از جدول ARP روتر، استفاده میگردد. هر زمان که دستگاه جدیدی وارد شبکه شود نیاز به آدرس IP دارد. در این حالت، دستگاه یک بسته برودکست RARP حاوی آدرس MAC در فیلد سختافزار فرستنده و گیرنده ارسال میکند.
Inverse ARP
Inverse Address Resolution Protocol از طریق آدرس MAC، آدرس IP را می یابد و میتوان آن را روند معکوس پروتکل ARP توصیف کرد. در شبکههای ATM یا Asynchronous Transfer Mode، از ARP معکوس به طور پیشفرض استفاده میشود. Inverse ARP در یافتن آدرسهای لایه 3 (IP address) از طریق آدرسهای لایه 2 (MAC ADDRESS) مفید است.
عملکرد پروتکل ARP چگونه است؟
تصور کنید دستگاهی میخواهد از طریق اینترنت با سایر دستگاهها ارتباط برقرار نماید. در این شرایط، ARP ابتدا یک بسته را برای تمام دستگاههای شبکه مبدأ برودکست میکند. دستگاههای شبکه، header مربوط به لایه data link را از پروتکل PDU (مخفف Protocol Data Unit) که frame نام دارد، جدا کرده و بسته را به لایه network (لایه 3 مدل OSI) منتقل میکنند. در اینجا، network ID مربوط به بسته با network ID آیپی مقصد مقایسه شده و اگر برابر باشند، مقصد در پاسخ مک آدرس را به مبدا ارسال می کند. در غیر این صورت، بسته به gateway شبکه تحویل داده می شود و بین دستگاههای متصل منتشر می گردد تا network ID آنها بررسی گردد. این فرایند تا یافتن شبکه و سیستم موردنظر ادامه پیدا می کند و در نهایت پروتکل ARP با آدرس MAC مقصد پاسخ میدهد.
- ARP Cache: پس از یافتن مک آدرس، ARP آن را به سیستم مبدا ارسال میکند و این اطلاعات درون جدولی برای استفاده در آینده، ذخیره میشود. سیستم مذکور برای ارتباطات بعدی میتواند از مک آدرس های موجود در جدول استفاده نماید.
- ARP Cache Timeout: این پارامتر نشان دهنده مدت زمانی است که آدرس MAC می تواند در جدول ARP Cache ذخیره بماند.
- ARP request: بسته ای است که به صورت برودکست در شبکه جهت یافتن مک آدرس مقصد ارسال می شود.
1. آدرس فیزیکی فرستنده.
2. آدرس IP فرستنده.
3. آدرس فیزیکی گیرنده FF:FF:FF:FF:FF:FF (که به صورت باینری تمام 48 بیت 1 می باشد)
4. آدرس IP گیرنده.
- ARP response/reply: این پاسخ حاوی آدرس MAC است که مبدا آن را از مقصد دریافت میکند و در ارتباطات بعدی جهت تسریع فرایند، به کار می برد.
کاربردهای پروتکل ARP:
مورد 1:
- فرستنده یک میزبان (host) است و می خواهد بسته ای را به میزبانی دیگر در همان شبکه ارسال کند.
- از ARP برای یافتن آدرس فیزیکی میزبان دیگر استفاده می نماید.
مورد 2:
- فرستنده یک میزبان است و می خواهد بسته ای را به میزبانی در شبکه دیگر، ارسال کند.
- فرستنده جدول مسیریابی (routing table) خود را بررسی خواهد کرد.
- آدرس IP روتر بعدی جهت رسیدن به مقصد را می یابد.
مورد 3:
- فرستنده روتر بوده و یک دیتاگرام مرتبط با میزبان شبکه دیگر را دریافت کرده است.
- روتر جدول مسیریابی خود را بررسی میکند.
- آدرس IP روتر بعدی را می یابد.
- از ARP برای یافتن آدرس فیزیکی روتر بعدی استفاده میشود.
مورد 4:
- فرستنده روتر می باشد که یک دیتاگرام مرتبط با میزبانی دیگر در همان شبکه، دریافت کرده است.
- از ARP برای یافتن آدرس فیزیکی این میزبان استفاده میشود.
توجه داشته باشید که درخواست ARP به صورت برودکست می باشد اما پاسخ ARP به صورت unicast است.
خودتان امتحان کنید
تصویر(3)
دو کامپیوتر، برای مثال A و B را با یک کابل شبکه به یکدیگر متصل کنید. حال میتوانید با دستور arp -a، عملکرد پروتکل ARP را مشاهده نمایید:
1. A > arp -a
در جدول هیچ ورودی وجود نخواهد داشت زیرا آنها هرگز با یکدیگر ارتباط برقرار نکردهاند.
تصویر(4)
2. A > ping 192.168.1.2
تصویر(5)
آدرس IP مقصد 192.168.1.2 می باشد اما یک بسته به دلیل پردازش ARP از بین رفته است.
اکنون، با تایپ دستور اول، ورودیهای جدول ARP قابل مشاهده هستند.
جدول ARP به شکل زیر می باشد:
تصویر(6)
ARP Spoofing و ARP Cache Poisoning
ARP Spoofing (جعل ARP) نوعی حمله است که توسط هکرها برای اتصال آدرس MAC خود به آدرس IP یک کامپیوتر یا سرور استفاده میشود. این کار به وسیله ارسال پیامهای جعلی با نام ARP صورت می گیرد. پس از برقراری ارتباط، هکر میتواند دادهها را به کامپیوتر خود منتقل کند. این تکنیک عموما به عنوان "Spoofing" شناخته میشود. حملات ARP Spoofing میتوانند تأثیر قابل توجهی روی سازمانها داشته باشند. همچنین، این تکنیک میتواند شرایط را برای هکرها جهت انجام حملات دیگر تسهیل نماید. مانند:
- حمله Man-in-the-Middle
- حمله Denial of Service
- Hijacking (کنترل غیر مجاز) سشن
شبکه محلی که از پروتکل ARP استفاده میکند، در مواجه با ARP Spoofing ایمن نیست. به این تکنیک ARP Cache Poisoning نیز گفته می شود.
جمع بندی
ARP از مهمترین پروتکلهای لایه Data link در مدل OSI محسوب می شود و مسئول یافتن آدرس سختافزاری (یا MAC address) میزبان از روی یک آدرس IP مشخص است که این عمل را با ارسال پیام برودکست در شبکه انجام می دهد. اطلاعات در جدول ARP ذخیره شده و در ارتباطات بعدی از آن استفاده می گردد.