ARP: (Address Resolution Protocol)، وظیفه بدست آوردن (Mac Address) را با داشتن (IP Address) یک وسیله دارد. IP یک شناسه منطقی است و در لایه اینترنت کار میکند. بسته هایIP خود در Frameهای لایه فیزیکی قرار میگیرند و سپس درون شبکه ارسال میشوند. اما باید به این نکته توجه کرد که دستگاههای درون شبکه برای ارتباط با یک دیگر نیازمند دانستن آدرس سختافزاری (Mac Address) یکدیگر هستند. این در حالیست که ما از کامپیوترها و دستگاههایی مانند سوییچ، مودم، روتر، پرینتر و ... که در شبکه با آنها کار میکنیم فقطIP آنها را میدانیم در حالی که در عمل به شناسه سختافزاری یا Mac Address آنها نیاز است! در صورتی سیستم با دانستن IP بخواهد با یک سیستم ارتباط برقرار کند بطوریکه در یک شبکه داخلی قرار داشته باشد باید حتماً address Mac آن سیستم را بداند. برای این منظور با استفاده از پروتکل ARP سعی در تشخیص IP آن سیستم را دارد برای این منظور از سیستم مقابل سؤال میکند (در اینجا فرض میکنیم ip فرستنده ۱۹۲٫۱۶۸٫۳٫۳ و آدرس گیرنده ۱۹۲٫۱۶۸٫۳٫۴ باشد) حال اگر ما بخواهیم دستور ping 192.168.3.4 را از سیستم ۱۹۲٫۱۶۸٫۳٫۳ اجرا کنیم سیستم ۱۹۲٫۱۶۸٫۳٫۳ در صورت نداشتن آدرس فیزیکی (mac address) سیستم ۱۹۲٫۱۶۸٫۳٫۴ یک پیام به صورت broadcast در کل شبکه پخش میکند مبنی بر اینکه چه کسی ۱۹۲٫۱۶۸٫۳٫۴ است به من بگوید من ۱۹۲٫۱۶۸٫۳٫۳ هستم (who-has 192.168.3.4 tell 192.168.3.3) سیستمی که این IP مورد نظر برای ارتباط ما را دارد با توجه به درخواست ما، Mac خود را به سیستم ما اعلام میکند (reply 192.168.3.4 is-at 88:ae:1d:34:1d:7c) و سیستم ما این Mac را در جدولی با نام ARP Table ذخیره میکند. حال در صورتی که سیستم ما تشخیص دهد که سیستم موردنظر با سیستم ما در یک شبکه قرار ندارند (یعنی subnetmask متفاوت دارند) ابتدا Route Table خود را میبیند و در صورتی که در این جدول موردی برای رسیدن به این IP موجود باشد بررسی میکند که برای ارتباط با این IP باید به سمت کدام روتر اطلاعات را بفرستد سپس با استفاده از همان مراحل گفته شده mac آدرس روتر مورد نظر را با توجه به داشتن IP آن پیدا میکند و در Destination mac address آدرس مربوط به روتر و در بخش destination IP address مقصد سیستمی که میخواهد با آن ارتباط داشته باشد را قرار میدهد.
فیلدهای ARP[ویرایش]
Hardware type (2Byte |
نوع آدرس سختافزاری فرستنده و گیرندهاست (همگی یک برای اترنت و حلقه نشانه) |
(Protocol type (2Byte |
نوع پروتکل آدرس دهی استفاده شدهاست |
(Hardware Address length (1Byte |
تعداد بایت آدرس سختافزاری فرستنده و گیرندهاست (شامل مقدار ۶ برای اترنت و حلقه نشانه) |
(Protocol Address length (1Byte |
تعداد بایت آدرس IP یا به عبارتی آدرس پروتکل است |
(Opcod (2Byte |
نوع عملیات پاکت ARP را تعین میکند. (مقدار ۱ برای درخواست ARP ,مقدار۲ برای پاسخ ARP و۳ برای درخواست RARP و۴ برای پاسخ RARP) |
(Sender Hardware Address(6Byte |
ادرس اترنت یا سختافزاری فرستنده |
(Sender IP Address(32 Bit |
ادرس IP یا پروتکل مبدأ |
(Target Hardware Address(6Byte |
ادرس اترنت یا سختافزار گیرنده |
(Target IP Address(32Bit |
ادرس IP یا پروتکل مقصد |
(CheckSum (16bit |
الگوریتم تشخیص خطا |