ابهام در خصوص ARP
من برای یادگیری عمیق تر ARP یا Address Resolution Protocol از Packet Tracer کمک گرفتم.۴ تا PC رو توی پکت تریسر قرار دادم و به اون ها IP در رنج کلاس C یعنی 192.168.10.0 رو دادم و همه رو به یک سوییچ 2960 متصل کردم.در PC-A با استفاده از دستور Ping بسته ICMP تولید کردم و مقصد رو هم PC-D در نظر گرفتم.همون طور که شما بهتر میدونید چون که PC-A آدرس MAC کامپیوتر D رو نمیدونست به همین خاطر بسته ARP رو تولید کرد.بسته ARP با MAC Address : FF.FF.FF.FF.FF.FF به سمت Switch رفت و چون سوییچ هم دید بسته ARP از نوع Broadcast هستش اون رو برای همه کامپیوترها به جز کامپیوتر A ارسال کرد.همه بسته رو دریافت کردند و به غیر از کامپیوتر D همه کامپیوترها بسته ARP رو دور انداختن و اصطلاحا DROP کردند.کامپیوتر D به خاطر اینکه بسته مال خودش بود در ARP cache اش آدرس مک PC-A رو قرار داد و مک آدرس خودش رو در بسته ARP Reply قرار داد و packet رو برای سوییچ فرستاد و سوییچ هم بسته رو به PC-A تحویل داد.حالا چون PC-A دیگه میدونست MAC کامپیوتر D چیه میتونست بسته های ICMP رو برای D ارسال کنه و سوییچ هم دیگه مجبور به Broadcast نبود.تا اینجا برای من موضوع قابل درکه و مشکلی باهاش ندارم.اما مشکل من با زمانی هستش که PC-A خودش رو Ping میکنه.منظورم Ping loopbak address هستش.خوب وقتی PC-A خودش رو Ping میکنه وقتی PC-A نمیدونه MAC خودش چیه (چون با دستور arp -a خروجی arp cahce رو تست کردم و خالی بود) چطور میشه که بدون اینکه بسته به دست Switch برسه.بسته به دست خودش میرسه.چون در فریم ما فقط Source IP و Destination IP یکسان داریم.و وقتی بسته به کارت شبکه میرسه چون یه دستگاه لایه ۲ هستش چطور میتونه تشخیص بده بسته مال خود همین رایانه است ! چون در داخل بسته ping هنوز MAC آدرس مشخص نشده ! پیش خودم گفتم شاید توی بسته ICMP آدرس MAC مقصد رو درست نوشته و به همین خاطر بسته برای سوییچ نرفته و به دست همین رایانه رسیده.اما دیدم داخل هدر بسته ICMP اصلا Source MAC و Destination MAC قرار نداره !!! خوب بازم بیشتر گیج شدم.PC-A چرا باید بسته ARP رو تولید کنه تا آدرس MAC رو بدونه ! وقتی داخل هدر بسته ICMP اصلا Source MAC و Destination MAC وجود نداره !
3 پاسخ
فرقی نداره. شما همون آدرس IP تو رنج مثلا C رو هم روی کارت شبکه ای ست می کنید که آدرس MAC روش قرار داره. و کامپیوتر از هیچ کس MAC خودشو نمیپرسه. منطقیه ؟ برای مثال شما الان کد ملی خودتونو میدونید ، پس نیازی نیست اونو از ثبت احوال یا جا های دیگه استعلام بگیرید. دیگه ساده تر از این نمیشه.
برای Ping کردن آدرس loopback یا همون ۱۲۷.۰.۰.۱ نیازی به وجود کارت شبکه نیست. شما میتونید همه کارت شبکه ها رو غیرفعال کنید تا براتون این قضیه اثبات بشه. Packet Tracer یه simulator هست و توش تعریف شده که چی باشه چی نباشه. PT از اونجا که یه شبیه ساز هست زیاد درک عمقی از پروتکل ها و نحوه کارشون به شما نمیده و حتی گاها تو اینجور مواقع سردرگم تون هم می کنه. من پیشنهاد می کنم از emulator هایی مثل EVE-NG و ... استفاده کنید که میتونه با VMware هم Integrate بشه. یا اینکه Wireshark روی یه سیستم اجرا کنید و ببینید داخل پکت ها چی میگذره و چجوری رد و بدل میشه.
اصلا 127.0.0.1 نه.مثلا شما سیستم ات IP آدرسش 192.168.10.5 هستش و ping همین 192.168.10.5 رو میگیری.من با وایرشارک هم تست میکنم و تجربه مو به اشتراک میزارم.ممنون بابت راهنمایی تون