در ارتباط اترنتی در قسمت های قبلی آموزش امبدد اترنت که پیادهسازی کردیم؛ تنها دو قطعه موجود بود که به طور مستقیم توسط کابل شبکه به هم متصل بودند. اما یک شبکه واقعی دارای تعداد بسیار زیادی دستگاه و تجهیزات ارتباطی در شبکه است. سعی میکنیم در ادامه این تجهیزات را معرفی و عملکرد آنها را تعریف کنیم.
در شبکههای ابتدایی مبتني بر اترنت، ارتباط با استفاده از کابلهای هم محور (کواکسیال؛ مثل کابل آنتن تلویزیون) برقرار میشد. ارتباط بهصورت یک باس (Bus) به وجود میآمد و تمام دستگاهها؛ هم زمان میتوانستند از باس بخوانند یا هنگام آزاد بودن خط؛ اطلاعات خود را ارسال کنند. یک مشکل دراینارتباط؛ این بود که چنانچه کابل از جایی قطع میشد؛ ارتباط دو طرف بریدگی قطع میشد.
از طرفی به دلیل استفاده از یک خط؛ وضعیت تصادم (Collision) بسیار پیش میآمد. تصادم به حالتی میگویند که دو یا چند دستگاه، به طور همزمان، قصد ارسال دادههای خود را داشته باشند، فرض کنید افرادی دور یک میز در جلسهای، مشغول صحبت هستند. برای فهم درست صحبتها، در هر لحظه تنها یک نفر میتواند صحبت کند. افرادی که قصد صحبت داشته باشند؛ باید منتظر بمانند تا فرد در حال صحبت، ساکت شود. وقتي گوینده، حرفاش تموم بشه؛ ممکنه دو یا چند فرد، قصد صحبت داشته باشند؛ درنتیجه در گفتگو اختلال ایجاد میشه و حرفها نامفهوم خواهد بود! هر چه تعداد نفرات بیشتر باشد؛ احتمال تصادم بیشتر خواهد بود؛ لذا برای پرهیز از تصادم؛ الگوریتمی بنام CSMA/CD = Carrier Sense-Multiple Access/Collision Detection به وجود آمد.
اگه بخواهیم این اسمگذاری رو تحلیل کنیم، اینطور باید بگیم: قابلیت احساس سیگنال حامل (شنود خط و انتظار برای برقراری سکوت) با قابلیت دستیابی چند نفر همزمان و تشخیص تصادم! این الگوریتم با توزیع تصادفی فرایند “صبر و تلاش” سعی در حل مشکل داشت. بدین صورت که هر فرد برای آغاز صحبت، باید منتظر میماند تا خط ساکت شود و سپس شروع به صحبت نماید. اما ازآنجاییکه همزمان خود نیز در حال شنیدن است؛ چنانچه متوجه تصادم شود؛ برای مدتزمان محدودی که بهصورت تصادفی مشخص شده است، منتظر میماند و سپس دوباره اقدام میکند. اگر باز هم تصادم پیش بیاید؛ مدتزمان انتظار، بهصورت هندسی افزایش میابد تا بالاخره بتواند داده خود را ارسال کند و یا بعد از مقدار تکرار مشخصی از ارسال فریم خودداری کرده و گزارش خطا میدهد. ازآنجاییکه مقدار انتظار، تصادفیست؛ معمولاً یکی از افراد موفق به بیان جملات خود میشود و در نتیجه شرایط برای صحبتکردن دیگرانی که منتظر صحبت بودند؛ فراهم خواهد شد.
بهسادگی میتوان فهمید که هرچند این روش مشکل را حل مینماید؛ اما در نهایت، سرعت نهایی انتقال داده در خط، بسیار پایین خواهد بود؛ لذا برای حل کامل این مشکل، قطعاتی بنام سوئیچ اختراع شد. همچنین متذکر شویم که این الگوریتم تنها در سرعت 10Mb, Half Douplex مورداستفاده قرار میگیرد.
در شبکههای فعلی، دستگاههای واقع در یک زیرشبکه (زیرشبکه بخش مشخصی از یک شبکه است که دارای آدرس مشخص است، طوری که قسمت پر ارزش IP آدرس در یک زیرشبکه، ثابت است) به طور مستقیم به شبکههای دیگر متصل نیستند؛ بلکه به واسطه روترها به شبکههای دیگر متصل خواهند بود. ارتباط در درون شبکه نیز توسط سوئیچها صورت میگیرد. در واقع تمامی دستگاههای درون شبکه فقط به سوئیچ متصل میشوند و از طریق آن با دستگاههای دیگر در زیرشبکه خود، ارتباط دارند.
سوئیچ دستگاهیست که تعدادی پورت (معمولاً با ضرایب 24 مثل 24و48و96) دارد. در اینجا منظور از پورت؛ پورت های اترنت روی سوییچ هستند، با پورت در پروتکل های لایه 4 اشتباه نشود! هر سوییچ، درون خود جدولی بنام switch table دارد که ارتباط مک آدرس ها و پورت های روی سوییچ را مشخص میکند (هر مک آدرس به کدام پورت سوییچ متصل است). در ابتدا این جدول خالی است. هر دستگاهی که پیغامی ارسال میکند؛ ابتدا این پیام وارد سوییچ می شود و در اینجا مک آدرس آن و شماره پورتی که که از طریق آن به سوییچ متصل است؛ در جدول ذخیره میشود.
از آنجایی که در مراحل ابتدایی، هنوز جدول کامل نیست؛ سوییچ نمی داند که این پیام را به کدام مقصد ارسال کند؛ پس پیغام را به تمامی پورت های دیگر ارسال می کند. هر پورتی که جواب پیغام را بدهد؛ مک آدرس خود را هم به سوییچ اعلام کرده است. لذا بعد از مدت زمان کمی، جدول تکمیل می شود. متوجه شدیم که سوییچ ها، مک آدرس را ذخیره می کنند پس در لایه دوم از مدل OSI کار میکنند.
هاب نیز مثل سوئیچ؛ وسیلهای است برای ارتباط دهی چند هاست. برخلاف سوئیچها، هابها پیغامهای روی یک پورت را عیناً به پورتهای دیگر ارسال میکنند و هیچ پردازشی انجام نمیدهند. بهطورکلی میتوان گفت که سوئیچها، هوشمند اما هابها، غیرهوشمند رفتار میکنند؛ لذا درون خود، هیچ جدول ذخیره شدهای ندارند. احتمالاً قبلاً با هابهای پورت (port یا درگاه) USB آشنا بودهاید. فرض کنید کامپیوتر شما، تنها یک پورت USB دارد. ولی شما نیاز دارید که همزمان از کیبورد، ماوس و حافظه فلش که با پورت USB کار میکنند؛ استفاده کنید، در این حالت شما نیاز به یک هاب دارید. عموماً هابها یک پورت خاص بنام uplink دارند و اطلاعات دریافتی از پورتهای دیگر را به uplink منتقل کرده یا از uplink گرفته و به تمام پورتهای دیگر منتقل میکنند. هاب در شبکه نیز چنین فعالیتی دارد. هابها به نسبت سوئیچها؛ تجهیزات قدیمیتری هستند و در شبکههای جدید استفاده نمیشوند.
هابها به دو نوع پسیو (غیرفعال) و اکتیو (فعال) هم تقسیمبندی میشوند. نوع پسیو تنها مثل یک کانکتور عمل میکنه یعنی یک سیگنال رو به شاخههای دیگه منتقل میکنه اما هابهای فعال همانند یک ریپیتر چندکاناله کار میکنند.
یا تکرارکننده، یک اصطلاح عمومی است در تبادل سیگنال. در فواصل زیاد معمولاً سیگنال اصلی توسط نویز خراب میشه؛ لذا اگر فاصله زیادتر از حد استاندارد باشه؛ نیاز هست در میانه راه، سیگنال اصلی تقویت و باز ارسال (retransmit) بشه. این وظیفه ریپیترها هست. از جاهایی که ریپیترها، زیاد استفاده میشن؛ تقویت امواج موبایل و پخش دوباره اون در فضاهایی است که امواج موبایل ضعیفی دارند. یک گیرنده، امواج رو در موقعیت مناسب (مثلاً بالای یک برج مسکونی) دریافت و اون رو در طبقات زیرزمین مجدداً منتشر میکنه. ریپیترها در شبکه نیز وظیفهای جز تقویت و ارسال دوباره سیگنالها ندارند.
روتر یا مسیریاب برای ارتباط دو زیرشبکه با هم استفاده میشوند. در واقع بدون روتر، ارتباط ما با شبکههایی با وسعت جهانی برقرار نمیشد. فرض کنید نیاز دارید یک زیرشبکه با آدرس 192.168.1.X را به زیرشبکه 192.168.7.X متصل نمایید؛ در این حالت از روتر استفاده میشود روترها دو یا چند شبکه رو بهم اتصال میدن و در لبه یا مرز زیرشبکهها قرار میگیرند. وقتی که یک هاست اطلاعاتی را به سوئیچ میفرستد؛ سوئیچ بررسی میکند که مقصد پیام در زیرشبکه خودش قرار دارد یا نه؟ اگر مقصد در همان زیر شبکه باشد، پیام تحویل مقصد میشود؛ ولی چنانچه مقصد پیام در شبکه دیگری باشد (مثلاً موقعی که شما میخواید به سایت google وصل بشید) سوئیچ این پیغام رو به gateway تحویل میده. gateway نام دیگر روتری است که زیرشبکه شما رو به شبکههای دیگه وصل میکنه. روتر اگر بدونه پیغام رو باید به کدوم هاست در زیرشبکه دوم (در سمت دیگرش) تحویل بده؛ (با استفاده از سوئیچ واقع در زیرشبکه دوم) این کار رو میکنه وگرنه پیغام رو به یک روتر دیگه که براش تعریف شده؛ تحویل میده.
روترها دارای دو یا چند پورت هستند که هر کدام آدرسی از یک زیرشبکه را دارند. در ادامه مثال بالا؛ روتر ما، احتمالاً در یک پورت، آدرس 192.168.1.5 و در دیگری، آدرس 192.168.7.3 را دارا خواهد بود. روترها در لایه سوم کار میکنند؛ لذا روترها نیز جدولی بنام route table در خود دارند که آدرس IP تجهیزات متصل به خود را نگه میدارد. همچنین روترها دارای جدولی بنام ARP table هستند که برای ذخیره اطلاعات لایه دوم استفاده میشود.
اگر در خاطر داشته باشید در پکت IP بخشی بنام TTL وجود داشت و گفتیم که هرگاه روتری یک پیغام را دریافت کند، از مقدار TTL یک واحد کم میکند (جهت یادآوری؛ مجبور میشه چکسام رو هم دوباره حساب کنه). اگر مقدار TTL صفر شود، روتر پیغام را رها کرده (به دلیل اینکه پیغامی تا ابد در شبکه نچرخد!) و پیغام خطایی با استفاده از پروتکل ICMP به فرستنده برمیگردونه. به عملیاتی که روتر انجام میده، اصطلاحاً hop کردن میگن؛ لذا دو اصطلاح hop و router معادل هم هستند. اولی نام عمل و دومی دستگاه اجراکننده عمل هاپ هست. به جهت کاهش ترافیک یا بررسی سرعت ارسال؛ روترهای چند پورت، ممکن است بستههای دریافتی رو از طرق مختلف به مقصد برسونند و لزوماً مسیر یک پکت از مبدأ تا مقصد ثابت نیست.
یا پل، وسیله ایست برای ارتباط دو بخش جدا از هم در یک زیرشبکه؛ پس این قطعات در لایه دوم فعالیت دارند و عموماً در شبکههایی که انواع گوناگون ارتباط (مثلاً یک مودم که هم ارتباط اترنتی داره و هم وایفای) دارند، نیاز هست؛ یا در تقسیمبندی یک شبکه به چند زیرشبکه که از نظر فیزیکی جدا از هم اما از نظر آدرس فیزیکی در یک زیرشبکه قرار دارند؛ مورداستفاده قرار میگیرد. پلها اصولاً برای ارتباط شاخهها یا بخشهای مختلف یک زیرشبکه به هم استفاده میشن در قیاس با روترها که برای ارتباط دو زیر شبکه مختلف به هم استفاده میشدن. بهعنوانمثال، تجهیزاتی که بهعنوان مودم ADSL در منازل استفاده میشن؛ دارای پل هم هستند؛ چون هم ارتباط اترنتی، و هم وایفای دارند. همچنین این مودمها روتر نیز هستند و زیرشبکه خانگی شما رو به یک روتر در ISP شما متصل میکنند. سوئیچ هم هستند، چون شبکه داخلی منزل شما رو مدیریت میکنند. وظیفه اصلیشون هم که مودم بودنه؛ یعنی تبدیل سیگنالهای دیجیتال (‘1’ و ‘0’) به سیگنالهای آنالوگی که روی خط تلفن ارسال بشن.
یک زير شبکه واقعی، عموماً بهصورت شکل زیر پیادهسازی میشه:

همه هاستها، درون زیرشبکه خودشون، تنها از طریق سوئیچ؛ با هم ارتباط دارند و برای ارتباط با شبکههای دیگه از روتر استفاده میکنند که اون هم به طور معمول، حداقل با یک روتر دیگه، ارتباط داره. توجه داشته باشید که سوئیچها، فریمها رو دستکاری نمیکنند؛ هرچند اطلاعات لايه دو رو براي مصرف خودشون در داخل جدولی به نام switch table ذخيره میکنند. اما روترها نیاز دارند که فریمها و پکتها رو دستکاری کنند تا مسير پكت رو به مقصد، مشخص كنند. همچنين اطلاعات لايه 3 و بعضي اطلاعات لايه 2 رو در دو جدول به نامهای route table,ARP table نگهداری میکنند. route table آدرس شبکههای موجود در روتر رو نگه ميداره؛ يعنی شبکههایی كه روتر در مرز اونها قرار داره و قراره اين شبکهها رو بهم متصل بكنه. ARP table هم اطلاعات هاستهای در دسترس رو نگه ميداره؛ يعنی هاستهایی كه روتر با اونها تشكيل يك شبكه رو دادند و در يك زيرمجموعه از آدرس قرار دارند. تفاوت ديگه بين سوئیچ و روتر در اينه كه اصولاً سوئیچ عضوی از شبكه نيست، يعني داراي آدرس (نه مك و نه آیپی) نيست؛ درحالیکه روتر عضوی از شبكه است و هم مك آدرس و هم آدرس آیپی داره.
اجازه بديد سفر پكت از يك هاست به هاست مقصد رو با يك مثال روشن كنيم. شكل زير يك شبكه ساده اما واقعي رو نشون ميده كه در اون، سه زيرشبكه از طريق دو روتر به هم متصل شدهاند. توجه داشته باشيد كه يك روتر میتونه بيش از دو شبكه رو بهم وصل كنه.

در سادهترین حالت، فرض کنید هاست A بستهای به مقصد D در زیرشبکه خودش ارسال ميكنه. از اونجاييكه در اين حالت؛ هاست A نياز به مك آدرس D داره؛ لذا قبل از ارسال پكت و احتمالاً با استفاده از پروتكل ARP، مك آدرس D (همچنین مک آدرس روتر R1) رو به دست آورده است. این بسته پس از خروج از A به سوئیچ S1 میرسه؛ اگر سوئیچ بداند مقصد کجاست (با بررسی مک آدرس مقصد در لایه دوم)؛ بسته رو تحویل مقصد میده وگرنه اون رو به تمام پورتهای خودش (به جز پورت فرستنده) میفرسته. در هر دو حالت فریم به D خواهد رسید. دراینارتباط، روترها درگير نمیشوند.
حالا فرض كنيد A قصد ارسال پيامي به B دارد. در پیامهایی که متعلق به زیرشبکه فعلی نیست؛ هاست نياز به دونستن مك آدرس مقصد نداره (و به همين دليل هست كه پیامهای ARP از زيرشبكه خارج يا اصطلاحاً مسيريابی نمیشوند). در اين حالت، مک آدرس مقصد در فریم ارسالی، مک آدرس روتر (gateway) R1 باید باشه تا سوئیچ S1 فریم رو به روتر R1 بفرسته. توجه داشته باشيد كه روتر R1 در سمت چپ خودش آدرس آیپی 192.168.1.1 و در سمت راست آدرس 192.168.2.5 رو داره. همچنين در هر كدوم از دو شبكه هم؛ مك آدرس خودش رو داره كه براي شلوغنشدن، در تصوير نوشته نشدهاند. روتر R1 بعد از دریافت این فریم؛ با بررسي آیپی مقصد، متوجه ميشه كه اين پكت براي زيرشبكه سمت راست خودش هست. اگر بدونه B كجاست؛ يك فريم جديد ميسازه كه با مك آدرس خودش و هاست B پر شده، ولي دادههای پكت IP و همینطور آدرسهای IP در فريم اوليه تغيير نکردهاند.
یکسری کارهای دیگه مثل کاهش TTL و محاسبه مجدد چک سام رو هم انجام میده و درنهایت، اين فريم جدید رو از طريق S2 براي B ارسال ميکنه. اما اگر ندونه B چه آدرسي در شبكه سمت راست داره؛ يك پيغام عمومي در زيرشبكه ميفرسته يا سعي ميكنه قبل از ارسال؛ مك آدرس B رو به دست بياره. توجه داشته باشيد كه روترها و همچنين سوئیچها در ابتداي شروع به كار شبكه؛ فرايند يادگيري رو خواهند داشت كه شامل تعداد زيادي روش يادگيري هست. در اين فرایند يادگيري كه گاهي اوقات به طور مستقيم و توسط ادمين شبكه مشخص ميشه؛ اطلاعاتي كه روتر به اون ها نياز داره، به دست مياد. در مثال فعلي، روتر، مك آدرس B رو از قبل داره و پیام به مقصد میرسه.
در حالت سوم هاست A تصميم داره پكتي براي هاست C ارسال كنه. تا رسيدن پيام به R1 مثل وضعيت قبل هست؛ اما اينجا R1 با بررسي آیپی آدرس مقصد، متوجه ميشه كه اين پيام متعلق به زيرشبكه دیگری است. در اين وضعيت هم اگر بدونه شبكه 192.168.3.X در سمت روتر R2 هست؛ پيام رو به R2 ارسال ميكنه (مك آدرس خودش و مك آدرس R2 در شبكه 192.168.2.X استفاده ميشه در فريم لايه دوم) وگرنه با استفاده از اطلاعات لايه سوم از فريم اصلي؛ فريم جديدي درست ميكنه و به روتر پیشفرض خودش (كه توسط ادمين شبكه تنظيم شده) ارسال میکنه. طي فرایند يادگيري، مسيرها به طور بهینهای به دست میآیند و لذا در حالت عادي، مسير رسيدن به يك شبكه در هر جای دنيا ثابت هست (دستور trace route رو ببينيد)؛ اما همچنان روترها میتوانند براي ارسال يك پكت، از ميان مسيرهاي موجود، يكي را انتخاب كنند و پكت رو از مسير ديگهاي ارسال كنند. (مثلاً براي جلوگيري از ترافيك در يك سمت) به همين دليل گفته میشود كه پكتها از مسيرهاي گوناگون به مقصد میرسند.
عملیات trace route به همراه ping دو عملیات یا دستور مهم هستند که با استفاده از پروتکل ICMP اطلاعاتی از وضعیت شبکه به ما میدن. پینگ رو که قبلاً معرفی و پاسخ پینگ رو پیادهسازی کردیم. عملیات trace route هم اینطور عمل میکنه که ابتدا مقدار TTL رو 1 قرار میده و بستهای برای هاست مقصد، میفرسته. بالطبع اولین روتر در مسیر باعث میشه TTL صفر بشه و پیغامی به فرستنده ارسال بشه بهاینترتیب آدرس IP اولین روتر که همون gateway هست در میاد. در مرحله بعد، TTL برابر با 2 قرار داده میشه؛ این بار آدرس دومین روتر در مسیر به دست میاد و…. شما با استفاده از این عملیات میتونید مسیرهایی که پیغام شما برای رسیدن به مثلاً یک سایت خاص طی میکنه رو به دست بیارید.
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.