
(برای درک بهتر این مقاله، پیشنهاد میکنم چند مقاله قبلی رو مطالعه کنید)
ویدیو مربوط به این مقاله: (کلیک کن)
وقتی Ethernet تازه ساخته شده بود (دهه 1970) ایده این بود که چندین کامپیوتر بتونن همزمان روی یه کابل مشترک داده بفرستن. اما مشکل وجود داشت...
هر دستگاه چطوری بفهمه دادهای که اومده برای خودش هست یا برای یکی دیگه؟
مثل اینه که توی خیابون یکی داد بزنه بیا این بسته رو بگیر، خب همه میشنون. کی باید جواب بده؟
اینجا نیاز شد به یه چیزی مثل شمارهی یکتا برای هر دستگاه، همون چیزی که بعدا اسمش شد MAC Address.
درنهایت، MAC Address ساخته شد چون توی شبکه محلی (LAN) همه دستگاهها روی یه محیط مشترک بودن (اون موقع کابل کواکسیال).
پس باید یه راهی باشه که هر دستگاه یه هویت منحصربهفرد داشته باشه. این هویت باید:
سختافزاری باشه (یعنی روی کارت شبکه حک بشه).
تغییر نکنه.
هیچ دو دستگاهی توی دنیا آدرس یکسان نداشته باشن.
برای همین شرکتهای سازندهی کارت شبکه شروع کردن به اختصاص دادن یه شماره یکتا به هر کارت شبکه.
MAC Address دقیقا چیه؟
MAC Address مخفف Media Access Control Address هست.
یه شمارهی 48 بیتی (یعنی 6 بایت) که به هر کارت شبکه داده میشه.
معمولا به شکل 12 رقم هگزادسیمال نمایش داده میشه. مثلا: 00:1A:2B:3C:4D:5E
هر قسمت با : از هم جدا شده و همچنین هر قسمت 1 بایته.
ساختار MAC Address به چه شکله؟
نصف اول (3 بایت اول = 24 بیت): مربوط به شرکت سازنده کارت شبکست. به این میگن OUI یاOrganizationally Unique Identifier.
نصف دوم (3 بایت آخر = 24 بیت): شمارهی سریال یکتای اون کارت شبکه، که توسط همون شرکت انتخاب میشه.
پس ترکیب این دوتا = یه شمارهی یکتا توی دنیا.
MAC Address چطوری استفاده میشه؟
وقتی یه دستگاه میخواد داده بفرسته روی شبکه:
دادهاش رو توی یه فریم (Frame) میذاره.
توی Header اون فریم، دوتا چیز مهم مینویسه:
MAC Address فرستنده
MAC Address گیرنده
همهی دستگاههای شبکه اون فریم رو میبینن. فقط اون دستگاهی که MAC Addressش با گیرنده مطابقت داشته باشه، جواب میده.
اینطوری دقیقا مثل این میشه که رو هر بستهی پستی اسم فرستنده و گیرنده نوشته بشه.
آیا MAC Address همیشه ثابت میمونه؟
به طور پیشفرض بله، چون توی کارت شبکه حک میشه. ولی بعضی سیستمعاملها و ابزارها اجازه میدنMAC Address رو Spoof کنی یا تغییر بدی (مثلا برای تست امنیت یا مخفیکاری).
چرا هنوز MAC Address مهمه؟
تو لایهی Link (اترنت، وایفای و …)، همهی دستگاهها برای ارتباط به MAC Address نیاز دارن.
بدون MAC، دستگاهها توی شبکه محلی نمیتونن تشخیص بدن کدوم بسته برای کیه.
حتی TCP/IP هم برای کار کردن روی شبکه محلی نیاز داره که اول با MAC کار کنه.
چطوری آدرس مک خودم رو ببینم؟
فقط کافیه وارد CMD بشید و دستور ipconfig /all رو وارد کنید.
شاید پیش خودتون بگید اگه MAC Address وجود داره، پس لزوم استفاده از IP چیه؟ یا اگه IP وجود داره چرا MAC Address رو کنار نمیزارن؟! مقاله بعدی رو حتما مطالعه کنید که در این مورد توضیح داده شده 👍
کاربرد MAC در Hub و Switch چیه؟
فرض کن یه عالمه دستگاه (مثل کامپیوتر، پرینتر، یا گوشی) تو یه شبکه محلی (LAN) داری که میخوان با هم حرف بزنن. حالا این دستگاهها نیاز به یه چیزی دارن که مثل یه میدان یا چهارراه عمل کنه و دادههاشون رو بینشون جابهجا کنه. اینجا هاب و سوئیچ وارد بازی میشن. هر دوی اینا دستگاههای شبکهان که تو لایه دوم مدل OSI (لایه Data Link) کار میکنن، یعنی همون لایهای که MAC Address توش نقش داره.
تاریخچه Hub و Switch:
برگردیم به دهههای 1980 و 1990، وقتی شبکههای محلی (مثل Ethernet) تازه داشتن همهگیر میشدن. اون موقع کامپیوترها باید به هم وصل میشدن تا بتونن اطلاعات به اشتراک بذارن. اما یه مشکل وجود داشت؟! نمیتونستی همه دستگاهها رو با یه کابل مستقیم به هم وصل کنی، چون این کار خیلی شلوغ و غیرعملی بود.
برای حل این مشکل، دستگاههایی مثل هاب ساخته شدن تا یه نقطه مرکزی برای اتصال دستگاهها باشن.
اما Hub یه سری محدودیت داشت، برای همین سوئیچها اومدن که نسخه پیشرفتهتر و باهوشتر هابها باشن.
ساختار Hub به چه شکله؟

دستگاه Hub چندین تا پورت داره و کامپیوترها یکی یکی به پورت های این دستگاه متصل میشن.
دستگاه Hub هیچ قانون یا الگوریتمی نداره که کامپیوترها رو از هم جدا کنه، در نتیجه، وقتی کامپیوتر فرضا A دادهایی رو برای کامپیوتر B بفرسته، اون داده توسط Hub به تمام پورت ها (به غیر از پورت فرستنده) ارسال میشه! حالا تمام دیگر کامپیوترها اون داده رو دریافت میکنن ولی تنها کامپیوتری که اون داده رو ذخیره میکنه و دور نمیندازه، کامپیوتر B هست! چرا؟ چون تو آدرس مقصد بسته، آدرس MAC سیستم B قرار داره و سیستم B میبینه بسته برای خودش اومده پس نگهش میداره.
بزرگترین مشکل Hub همین بود! اینکه نمیتونست کامپیوترهارو از هم جدا کنه و تمام داده هارو، برای همه ارسال میکرد، درنتیجه، امینت صفر، سرعت پایین، ترافیک زیاد. چندتا کامپیوتر همزمان نمیتونستن داده ارسال کنن و درنهایت، تمام این مشکلات باعث شد که دستگاه پیشرفته تری به اسم Switch (سوئیچ) ساخته بشه.
ساختار Switch به چه شکله؟

سوئیچ مثل یه منشی باهوشه که میدونه هر بسته داده باید دقیقا به کدوم دستگاه بره، نه اینکه به همه پخشش کنه.
چطور کار میکنه؟
سوئیچ یه جدول تو حافظش داره به اسم MAC Address Table. این جدول نشون میده کدوم MAC Address به کدوم پورت سوئیچ وصله.
وقتی یه دستگاه دادهای میفرسته، سوئیچ نگاه میکنه به MAC Address مقصد تو بستهی داده و فقط به همون پورت خاص میفرستتش.
این روش باعث میشه شبکه خیلی کارآمدتر باشه، چون داده فقط به مقصد درست میره.
سوئیچ وقتی برای اولین بار روشن میشه، MAC Address Tableش خالیه، هیچی داخلش نیست.
وقتی کامپیوتر ها شروع میکنن داده جا به جا میکنن، به مرور جدول MAC سوئیچ هم کامل میشه و تمام دستگاههایی که به پورت هاش وصل هستن رو شناسایی میکنه. مثلا میدونه که به پورت سومش چه آدرس مکی متصله.
ارتباط Hub و Switch با MAC Address
Hub: اصلا کاری به MAC نداره. فقط همهچیز رو کپی میکنه و میفرسته.
Switch: دقیقا با MAC کار میکنه. یه جدول درست میکنه به اسم MAC Table یا CAM Table. حالا هر بار از یه پورت یه فریم بیاد، Switch یاد میگیره که اون MAC پشت اون پورت هست. وقتی فریم جدید رسید، مقصد رو نگاه میکنه و فقط میفرسته به همون پورت.
جمعبندی
هر دو توی لایهی دوم کار میکنن.
Hub همهچی رو پخش میکنه (بدون توجه به MAC).
Switch هوشمنده، با MAC کار میکنه و فقط میفرسته برای مقصد درست.
Hub دیگه قدیمیه، Switch الان همهجا استفاده میشه.