تعریف
پروتکل ARP یا Address Resolution Protocol یک پروتکل لایه دو است، که کار آن به دست آوردن آدرس لایه دو یا همان آدرس فیزیکی مقصد که معروف به MAC میباشد از روی آدرس لایه سه-ای یعنی IP است.
فرض کنید کامپیوتر A که IP آن ۱۹۲.۱۶۸.۱.۱۰۰/۲۴ است، قصد دارد بستهای به کامپیوتر B که IP آن برابر با ۱۹۲.۱۶۸.۱.۲۰۰/۲۴ است ارسال کند. آدرس فیزیکی یا همان MAC Address کامپیوتر A برابر با AA.AA.AA.AA.AA.AA است. هنگام تشکیل بسته در لایه دو نیاز به Destination-MAC یا همان آدرس MAC مقصد دارد. در ابتدا کامپیوتر A به جدول ARP خود که معروف به ARP Cache یا ARP Table است نگاه میکند. در این جدول آدرسهای IP با آدرسهای MAC متناظر یا Bind شدهاند. یعنی MAC آدرسی برای این IP آدرس موجود است.
کامپیوترها به کمک این جدول میتوانند بستههای خود را کامل کرده و ارسال کنند.
حال اگر کامپیوتر A هیچ اطلاعی از آدرس MAC کامپیوتر B نداشته باشد، یعنی در جدول خود آدرس MAC کامپیوتر B را نداشته باشد باید چه کند؟
جواب ساده است. باید درخواست ARP ارسال کند و خواستار آدرس MAC کامپیوتر B شود.
پس یک بار دیگر با هم مرور میکنیم :
کامپیوتر A برای ارسال بسته به کامپیوتر B، آدرس IP آن یعنی ۱۹۲.۱۶۸.۱.۲۰۰ را دارد. ولی آدرس MAC کامپیوتر B را ندارد و هیچ فریمی تا کامل نشدن آن ارسال نمیشود. پس کامپیوتر A نگاهی به جدول ARP خود میکند تا آدرس MAC کامپیوتر B با آدرس IP برابر با ۱۹۲.۱۶۸.۱.۲۰۰ را پیدا کند. در صورت داشتن آن، فریم را کامل کرده و ارسال میکند و در صورت نداشتن آن باید به کمک پروتکل ARP درخواست خود را در شبکه ارسال کند.
کامپیوتر A قبل از ارسال بسته به کامپیوتر B باید ARP بزند. این بسته ARP به صورت Broadcast در شبکه پخش میشود تا آن کامپیوتری که آدرس آن ۱۹۲.۱۶۸.۱.۲۰۰ است آدرس مک خود را به جواب (Reply) دهد.
ARP دو مرحله دارد:
مرحله اول ARP Request و مرحله دوم ARP Reply
مرحله اول :
این مرحله معروف به Who has میباشد. این فریم به صورت Broadcast است. زیرا ما نمیدانیم که مقصد کجای شبکه است و به شکل زیر است:

Source-MAC
آدرس مک فرستنده که در مثال ما آدرس مک کامپیوتر A است.
Destination-MAC
آدرس مک گیرنده که در بستههای ARP Request از نوع Broadcast است.
Type
اشاره میکند در لایه بالایی یعنی لایه سه، بسته چه چیزی را حمل میکند. در بستههای ARP، پروتکل لایه سه ما ARP است و Ethertype آن برابر با 0x0806 است.
Sender-MAC
آدرس مک-ای که ARP Request را ارسال میکند.
Sender-IP
آدرس IP کسی که ARP میزند.
Target-IP
به صورت خیلی عامیانه یعنی دنبال آدرس مک این IP هستم. در مثال ما کامپیوتر A دنبال مک کامپیوتر B با آدرس ۱۹۲.۱۶۸.۱.۲۰۰ است.
Target-MAC
۰۰.۰۰.۰۰.۰۰.۰۰.۰۰ یعنی من مک را ندارم.
حال این بسته به سوئیچ میرسد و سوئیچ این بسته را بر روی تمامی پورتهای خود فوروارد میکند. چون نوع این بسته برادکست میباشد.
تمامی کامپیوترهای متصل به سوئیچ این بسته را دریافت میکنند و شروع به باز کردن و تحلیل بسته از لایه پایین یعنی هدر Ethernet مینمایند. چون مقصد بسته برادکست است، بسته را در لایه بالاتر یعنی هدر ARP بررسی میکنند و با نگاه کردن به قسمت Target-IP متوجه میشوند که آیا این بسته به دنبال مک آنها است یا خیر.
تمامی کامپیوترها بسته ARP را دور میریزند به غیر از کامپیوتر B که آدرس IP آن ۱۹۲.۱۶۸.۱.۲۰۰ است و با Target-IP داخل بسته برابر است. ابتدا کامپیوتر B آدرس مک کامپیوتر A را در جدول ARP خود یادداشت میکند. حال باید جواب ARP Request ای که کامپیوتر A ارسال کرده را بدهد که به آن ARP Reply میگویند.
مرحله دوم :
در این مرحله ARP Reply به فرستنده Request به صورت Unicast ارسال میشود که به شکل زیر است:

همان طور که مشاهده میکنید بستههای ARP Reply به صورت Unicast است.
وقتی این بسته به سوئیچ میرسد، سوئیچ این بسته را فقط روی پورتی که متصل به کامپیوتر A است فوروارد میکند و بسته به کامپیوتر A میرسد. حال کامپیوتر A آدرس مک کامپیوتر B را دارد و در جدول ARP خود یادداشت میکند.
بعد از این که ARP کار خود را تمام کرد حال کامپیوتر A و کامیپوتر B میتوانند به یکدیگر بسته ارسال کنند. زیرا هر دو کامپیوتر از آدرس های MAC یکدیگر خبر دارند و در جدول ARP خود یادداشت کردهاند.
نکته: وقتی مقصد کامپیوتر A در لایه سه خارج از شبکه باشد یعنی مقصد بستهها خارج از شبکه ۱۹۲.۱۶۸.۱.۰/۲۴ باشد، باید بسته به روتر یا Gateway برسد. زیرا روتر میتواند بسته ها را مسیریابی کند و برای این که در یک بستر Ethernet بسته از کامپیوتر A به روتر برسد کامپیوتر A باید در قسمت Destination-MAC بستهها، آدرس مک روتر را قرار دهد. اگر آدرس مک روتر یا GW را نداشته باشد باید GW خود را ARP بزند.
نکته: پروتکل ARP به شدت آسیبپذیر است. یعنی Attacker ها با استفاده از ضعف این پروتکل به راحتی میتوانند صدمات سنگینی وارد کنند. به طور مثال فرض کنید Attacker خود را به جای روتر قرار دهد و آدرس مک خود را به عنوان آدرس مک روتر به کامپیوتر A ارسال کند. کامپیوتر A در تمام بستههای خود آدرس مک مقصد را آدرس مک Attacker قرار میدهد و تمامی بستههای ارسالی کامپیوتر A با اینترنت از Attacker عبور میکند. به این تهاجم MITM یا همان Man in the Middle میگویند. Attacker به راحتی میتواند از اطلاعات شما سو استفاده کند.
به حملاتی که Attacker آدرس مک خود را جعل می کند به اصطلاح ARP Spoofing میگویند که به راحتی با ابزارهای مانند Arpspoof و Ethercap در کالی امکانپذیر است.
برای مصون ماندن از این حملات باید از مکانیزمهای امنیتی مانند DAI در سوئیچ استفاده کرد.
GARP چیست؟
وقتی شما آدرس IP خود را عوض میکنید، ARP Table تمامی کامپیوترهای دیگر به اصطلاح بیات هست و باید آپدیت شود. در این هنگام کامپیوتری که آدرس IP خود را عوض کرده GARP ارسال میکند. در این بسته ARP، کامپیوتر آدرس IP خود را ARP میزند تا جدول بقیه را آپدیت کند.
این اتفاق زمانی که کارت شبکه فعال شده و یا آدرس IP از DHCP Server دریافت میکند نیز میافتد تا از Duplicate IP جلوگیری کند. البته Attacker ها از این قابلیت برای حملات ARP Spoofing استفاده میکنند.