برخورد یا تصادم (Collision) در شبکه چیست و چرا پیش میآید؟
برخورد یا تصادم (collision) در شبکه رویدادی است که طی آن، دو یا چند گره از یک شبکه یا سگمنت شبکه همزمان دادهای ارسال میکنند و دادههایشان با هم برخورد میکند. در اینصورت هیچیک از دادهها به مقصد نمیرسند.
دامنه یا محدوده برخورد (Collision Domain) در شبکه چیست؟
محدوده برخورد یا دامنه برخورد (collision domain)، سگمنتی از شبکه است که اگر دو یا چند گره در آن سگمنت همزمان دادهای بفرستند، دادههایشان با هم برخورد میکند. گاهی تمام یک شبکه، دامنه برخورد واحدی محسوب میشود. برخی شبکهها نیز به چند سگمنت تقسیم میشوند و هر سگمنت دامنه برخورد مجزایی محسوب میشود.
دامنه برخورد (Collision Domain) در شبکههای اترنت
محدوده یا دامنه برخورد (collision domain) عمدتاً در استانداردهای قدیمیتر اترنت، یعنی زمانی مورد بحث بود که بهجای سوئیچ از هاب استفاده میشد. با آمدن سوئیچ مشکل برخورد فریمها در شبکه تقریبا رفع شد اما کاملا از بین نرفت. در ادامه، روند پیشرفت شبکههای اترنت، نتیجه استفاده از هاب و سپس راهکارهای کاهش مشکل برخورد دادهها در شبکه با استفاده از بریج و سوئیچ بیان میشود.
استاندارد 10BASE-T
استاندارد 10BASE-T در فناوری اترنت تحول بزرگی پدید آورد. پیش از 10BASE-T استانداردهای قدیمیتر اترنت مانند 10BASE2 و 10BASE5 به کار میرفتند که در آنها همه رایانهها به یک کابل هممحور (کواکسیال) طولانی متصل میشدند.
تولید کابل زوجبههمتابیده بدون حفاظ یا اصطلاحا UTP (مخفف Unshielded Twisted Pair) که هنوز هم از اجزای مهم شبکههای اترنت است، به سربرآوردن استاندارد 10BASE-T منجر شد. با استفاده از کابل UTP میشد شبکهای با همبندی فیزیکی ستارهای (star topology) ایجاد کرد. در همبندی ستارهای تمام گرههای شبکه توسط یک دستگاه مرکزی در یک نقطه به هم متصل میشوند. در قدیم آن دستگاه مرکزی، هاب بود.
دامنه برخورد در شبکههای اترنت مبتنی بر هاب
هاب (Hub) دستگاه سادهای است که چون نمیتواند آدرس مک گرههای شبکه را بخواند، سیگنال دریافتی از گره مبدا را تکرار و آن را برای تمام گرههای شبکه (جز گره مبدا) ارسال میکند تا نهایتا گره مقصد با خواندن آدرس مقصد فریم، آن را شناسایی و دریافت کند. تمام پورتهای هاب دامنه برخورد واحدی تشکیل میدهند و درنتیجه تمام گرههای متصل به پورتهای هاب، در یک دامنه برخورد جای میگیرند (تصویر 1). پس اگر دو گره همزمان دادهای بفرستند، دادهایشان در شبکه با هم برخورد میکند.
تصویر 1. تمام گرههای متصل به پورتهای هاب یک دامنه برخورد واحد تشکیل میدهند. به عبارت دیگر، هاب تمام شبکه را بهشکل تنها یک دامنه برخورد میبیند.
در چنین شبکهای اگر گرهها به نوبت داده ارسال میکردند مشکلی پیش نمیآمد و هاب بهخوبی کار خود را انجام میداد. برای مثال، در تصویر 2 گره H3 برای گره H1 فریم میفرستد. هاب پس از دریافت فریم، آن را تکثیر میکند و به تمام دیگر گرهها یعنی H1 و H2 میفرستد.
گره H1 که مقصد واقعی فریم است آدرس مقصد مندرج در فریم را با آدرس خودش مطابقت میدهد و نهایتا آن را دریافت میکند. اما گره H2 آن را نادیده میگیرد، چون آدرس مقصد مندرج در فریم با آدرس گره H2 مطابقت ندارد. با اینکه در شبکه ترافیک بیهودهای ایجاد میشود اما گره H3 به هدفش میرسد و فریم را به مقصد میفرستد.
تصویر 2. در شبکههای مبتنی بر هاب، تا زمانی که هیچ دو گرهای همزمان دادهای ارسال نکنند، برخوردی در شبکه پیش نمیآید.
مشکل زمانی آغاز میشود که دو یا چند گره شبکه بخواهند همزمان دادهای بفرستند. مثلا در تصویر پیشین اگر H1 و H2 همزمان فریم ارسال کنند، چیزی مانند آنچه در تصویر 3 دیده میشود اتفاق میافتد. در تصویر 3، دو گره H1 و H2 همزمان فریم صادر میکنند. هاب فریمها را تکثیر میکند و آنها را به تمام دیگر گرههای شبکه جز گره مبدا هر فریم میفرستد. نتیجتا همزمان دو فریم برای H3 ارسال میشود. در اینصورت حتی اگر H3 مقصد واقعی هر دو فریم باشد عملا چیزی دریافت نمیکند چون دو فریم با یکدیگر برخورد میکنند. برای رفع این مشکل از پروتکل ویژهای موسوم به پروتکل تشخیص برخورد یا CSMA/CD استفاده میشود.
تصویر 3. در شبکههای مبتنی بر هاب، تمام گرههای متصل به پورتهای هاب یک دامنه برخورد واحد تشکیل میدهند. لذا اگر دو گره همزمان دادهای ارسال کنند، دادههایشان در شبکه با هم برخورد میکند. مسیرهای ارتباطی در چنین شبکهای عملا نیمهدوطرفه است، یعنی گرهها نمیتوانند همزمان فرستنده و گیرنده باشند.
پروتکل CSMA/CD و نحوه رفع مشکل برخورد یا تصادم در شبکه
پروتکل CSMA/CD (مخفف Carrier Sense Multiple Access with Collision Detection) پروتکل سادهای است. در پروتکل CSMA/CD هر گره یا رایانه پیش از آنکه دادهای ارسال کند، بررسی میکند که آیا مسیر ارتباطی آزاد است یا نه. اگر گره دیگری در آن سگمنت مشغول ارسال داده باشد، گره مذکور منتظر میماند. هر گره فقط زمانی میتواند فریم بفرستد که شبکه آزاد باشد. پس مسیرهای ارتباطی شبکه باید نیمهدوطرفه (half-duplex) باشند تا گرهها نتوانند همزمان فرستنده و گیرنده باشند. اگر برخوردی در شبکه روی دهد و فریمی که گرهها ارسال کرده بودند به مقصد نرسد، پروتکل CSMA/CD برای رفع مشکل و ارسال مجدد فریمها چنین میکند:
- اگر دو رایانه همزمان دادهای بفرستند و دادههایشان در شبکه با هم برخورد کند، مسیر ارتباطی موقتا قفل میشود تا گره دیگری داده نفرستد (و وضع بدتر نشود). با قفل شدن مسیر ارتباطی، هیچ گره دیگری نمیتواند پیش از دو گره مذکور دادهای ارسال کند.
- هر کدام از دو گرهای که دادههایشان با هم برخورد کرده بود، زمانسنجی را به کار میاندازند و برای مدتی که مقدارش تصادفی است، منتظر میمانند. مدت زمان انتظار، تصادفی تعیین میشود تا دو گره مجددا همزمان داده نفرستند.
- وقتی زمان انتظار تصادفی هر گره به سر رسید، دادهاش را مجددا ارسال میکند.
پروتکل CSMA/CD را نه هاب، بلکه گرهها یا رایانههای شبکه اجرا میکنند، زیرا هاب دستگاهی ساده و فاقد قابلیتهای لازم برای اجرای پروتکل است.
دامنه برخورد در شبکههای اترنت مبتنی بر بریج
پیادهسازی شبکههای اترنت 10BASE-T با استفاده از هاب و کابل UTP، در مقایسه با شبکههای قدیمیتر مبتنی بر کابل هممحور، پیشرفت بزرگی بود اما هنوز هم مشکلاتی داشت. از جمله اینکه هر چه تجهیزات بیشتری به شبکه اضافه میشد، برخوردها نیز افزایش مییافت و شبکه کند میشد. پروتکل CSMA/CD نیز که میگفت هر وسیلهای پیش از ارسال پیغام باید صبر کند تا شبکه آزاد شود، بازده و سرعت شبکههای بزرگ را کاهش میداد. اگر میشد راهکاری یافت تا تجهیزات شبکه بتوانند همزمان فریم بفرستند و فریم دریافت کنند (ارتباط کاملا دوطرفه یا full-duplex) و برخوردی هم پیش نیاید، پیشرفت بزرگی حاصل میشد.
پل شبکه یا بریج (Bridge) توانست تا حد زیادی به این هدف نزدیک شود. ویژگی مهم بریج این بود که بر خلاف هاب، هر پورت آن یک دامنه برخورد مجزا بود. بریج شبکه را دستکم به دو سگمنت تقسیم میکرد و لذا هر سگمنت یک دامنه برخورد مجزا محسوب میشد و نتیجتاً محدودههای برخورد کوچکتر میشدند. بریج میتوانست آدرس سختافزاری یا اصطلاحا آدرس مک گرههای شبکه را یاد بگیرد و سپس هر فریم را فقط به سگمنتی بفرستد که گره مقصد در آن جای دارد.
بریج نتوانست مشکل برخورد یا تصادم فریمها را کاملا رفع کند، اما وسعت دامنه برخورد را کاهش داد. مثلا در تصویر 4، شبکه با استفاده از بریج به دو سگمنت تقسیم شده است. گرههای هر سگمنت با هاب به هم مرتبط شدهاند و چون هاب دادههای دریافتی از مبدا را در سگمنت تکثیر و منتشر میکند، لذا مسیر ارتباطی گرههای هر سگمنت مشترک است و برخورد فریمها در هر دو سگمنت محتمل است، پس هر سگمنت یک دامنه برخورد مجزا است. برای مثال، اگر دو گره H1 و H2 که در دامنه برخورد یکسانی هستند همزمان برای هم فریم بفرستند، فریمهایشان با هم برخورد میکند. اما اگر دو گره H1 و H3 همزمان برای هم فریم بفرستند، چون در دو دامنه برخورد جداگانه هستند، فریمهایشان با هم برخورد نمیکند.
با اینکه بریج نمیتواند کاملا جلوی تصادم فریمها در شبکه را بگیرد، اما دستکم شبکه را به دو سگمنت تقسیم کرده است تا دامنه برخورد را کوچکتر کند.
تصویر 4. بریج شبکه را به دو سگمنت تقسیم میکند که هر سگمنت دامنه برخورد مجزایی محسوب میشود.
بریجهای ساده فقط دو پورت داشتند و شبکه را حداکثر به دو سگمنت تقسیم میکردند. معمولا گرههای هر سگمنت یا با هاب (مانند تصویر 4) و یا با همبندی خطی (bus topology) به هم متصل میشدند و ویژگی هر دو نوع شبکه ایجاب میکرد که پیغام ارسالی از مبدا بین تمام دیگر گرهها منتشر یا اصطلاحا برودکست شود. بریج مشکل برخورد فریمها را کاهش داد اما چندان رفع نکرد. بریج چون تعداد پورتهای اندکی داشت در شبکههای بزرگ چندان موثر نبود. بریجهای ساده تنها دو پورت دارند. بریجهایی که پورتهای بیشتری دارند را میتوان نوعی سوئیچ دانست. بریج بعد از هاب و پیش از سوئیچ ساخته شد و لذا از نظر امکانات بالاتر از هاب و پایینتر از سوئیچ است.
(اطلاعات بیشتر: پل شبکه یا بریج (Bridge) چیست، چه کاربردی دارد و چگونه کار میکند؟)
برخورد فریم در شبکههای اترنت مبتنی بر سوئیچ
سوئیچ (Switch) دستگاه کارآمدی است که هنوز هم در شبکهها کاربرد گستردهای دارد. منطق سوئیچ شبیه منطق بریج است. یعنی سوئیچ نیز آدرسهای مک را یاد میگیرد و فریمها را ذخیره میکند و هر فریم را فقط به سگمنت مقصد میفرستد. همچنین سوئیچ نیز مانند بریج، هر پورت را یک دامنه برخورد مجزا میبیند. اما سوئیچ از بریج سریعتر است، سختافزار اختصاصیتری دارد و پورتهایش نیز بسیار بیشتر است. ضمنا چون سوئیچها حافظه بافر بیشتری دارند، فریمهای بزرگتر و اطلاعات بیشتری ذخیره میکنند و نتیجتا کمتر ممکن است فریمها را در اثر پر شدن بافرشان لغو کنند. همینها سبب شده است تا امروزه سوئیچها جایگزین هاب و بریج شوند.
سوئیچها چون پورتهای بیشتری دارند، شبکه را به سگمنتها (و نتیجتا به دامنههای برخورد) بیشتری تقسیم میکنند.
مثلا سوئیچی که 32 پورت دارد میتواند شبکه را به 32 دامنه برخورد مجزا تقسیم کند. اگر به هر پورت، فقط یک گره یا یک رایانه متصل باشد، عملا دیگر برخوردی پیش نمیآید، زیرا هر دامنه برخورد فقط حاوی یک گره خواهدبود. پس هر گره میتواند همزمان فرستنده و گیرنده نیز باشد. یعنی نحوه ارتباط در شبکههای مبتنی بر سوئیچ، کاملادوطرفه (full-duplex) است. در تصویر 5، هر گره متصل به سوئیچ، یک سگمنت و یک دامنه برخورد مجزا محسوب میشود.
تصویر 5. هر پورت سوئیچ یک دامنه برخورد مجزا محسوب میشود و چون سوئیچ پورتهای متعددی دارد، گرهها میتوانند مستقیما و بدون نیاز به واسطههایی مانند هاب به پورتهای سوئیچ متصل شوند. در اینصورت برخوردی در شبکه پیش نمیآید.
سوئیچ اجازه نمیدهد در حالت عادی برخوردی در شبکه پیش آید، لذا پروتکل CSMA/CD ابتدائاً در سوئیچ، فعال نیست.
پرسش: اگر با وجود سوئیچها دیگر برخوردی در شبکه پیش نمیآید، چرا مبحث محدوده برخورد یا collision domain هنوز مهم است؟
پاسخ: سوئیچ در صورتی میتواند جلوی برخورد فریمها را بگیرد که هیچیک از سگمنتهای شبکه، مستعد بروز برخورد نباشند و مثلا در آنها از هاب استفاده نشده باشد. برای روشنتر شدن موضوع به توضیح تصویر 6 مراجعه شود.
تصویر 6. سگمنت چهارم سوئیچ مستعد بروز برخورد است، زیرا در آن سگمنت هاب به کار رفته است. دو گره به پورتهای هاب متصل شدهاند. اگر گرههای H4 و H5 همزمان فریمی ارسال کنند، فریمهایشان در سگمنت 4 با هم برخورد میکند، زیرا تما مپورتهای هاب دامنه برخورد واحدی محسوب میشوند و نتیجتا هر دو گره در آن دامنه برخورد، مسیر مشترکی دارند. مسیر ارتباطی در سگمنت چهارم، نیمهدوطرفه است و به پروتکل CSMA/CD نیز نیاز دارد.
بروز برخورد در شبکههای مبتنی بر سوئیچ علت دیگری هم دارد: اگر یکی از پورتها یا بهعبارتی یکی از کارتهای شبکه سوئیچ (یادداشت 1) دچار نقص شود، ممکن است بدون در نظر گرفتن وضعیت شبکه سیگنال صادر کند و آن سیگنال با دیگر سیگنالهای شبکه برخورد کند.
خلاصه مبحث برخورد داده در شبکههای اترنت و مقایسه عملکرد هاب، بریج و سوئیچ در این خصوص
هاب تمام شبکه حول خود را یک دامنه برخورد واحد در نظر میگیرد. هر تعداد گره که به هاب وصل شده باشد، هاب با دریافت فریم از هر گره در هر یک از پورتهای خود، آن را تکثیر و به تمام دیگر گرهها که به دیگر پورتهای هاب متصل هستند ارسال (اصطلاحا برودکست) میکند، حال آنکه ممکن است فقط یکی از گرهها، گیرنده واقعی پیغام باشد. با افزایش تعداد گرهها این مشکل نیز حادتر میشود.
بریج در مقایسه با هاب دستگاه کارآمدتری است. مزیت مهم بریج نسبت به هاب این است که هر پورت آن، یک دامنه برخورد جداگانه است و نتیجتا شبکه به دو دامنه برخورد جداگانه تقسیم میشود. اگر بریج تشخیص دهد که مقصد فریم کدام سگمنت است، آن فریم را در سگمنت یا سگمنتهای دیگر منتشر نمیکند و لذا از برخورد فریم در سگمنتهای دیگر جلوگیری میشود. اما بریجها معمولا تعداد پورتهای اندکی دارند و کندتر هستند.
در سوئیچ نیز مانند بریج، هر پورت یک دامنه برخورد مجزاست، اما چون تعداد پورتهای سوئیچ بیشتر است، هر گره شبکه میتواند مستقیما (و نه بهواسطه تجهیزاتی مانند هاب) به یک پورت متصل شود تا هر دامنه برخورد تنها حاوی یک گره باشد. در اینصورت، بین پورت و گره مسیری اختصاصی ایجاد میشود که چون با گره دیگری مشترک نیست، طبیعتا برخورد فریم نیز پیش نمیآید و از ازدحام در شبکه و ایجاد ترافیک بیهوده جلوگیری میشود. در سوئیچها مسیرها میتوانند کاملا دوطرفه (full-duplex) و گرهها همزمان فرستنده و گیرنده باشند و چند گره همزمان داده تبادل کنند. حتی اگر همزمان در یک پورت دو فریم دریافت شود، سوئیچ آنها را اولویتبندی میکند تا با هم برخورد نکنند. سوئیچها در کاهش ازدحام شبکه کارآمدترند و از پهنای باند بهینهتر بهره میبرند. باتوجه به چنین مواردی، هاب و بریج امروزه چندان کاربرد ندارند زیرا سوئیچ بهتر، سریعتر و هوشمندتر از آنهاست. هاب از تجهیزات لایه 1 یعنی لایه فیزیکی مدل مرجع OSI است. اما سوئیچ و بریج در لایه 2 یعنی لایه پیوند داده کار میکنند. و سرانجام نکات پایانی:
- نکته 1: در هاب و تکرارگر (ریپیتر) همه پورتها در یک دامنه برخورد هستند. در بریج، سوئیچ و روتر هر پورت یک دامنه برخورد جداگانه است.
- نکته 2: روترها نیز مانند سوئیچها هر پورت را یک دامنه برخورد جداگانه میبینند و میتوانند بر مشکل برخورد دادهها در شبکه فائق آیند، اما پرداختن به نحوه کار روترها موضوع این مقاله نیست.
- نکته 3: دامنه انتشار یا برودکست (Broadcast Domain) با دامنه برخورد (Collision Domain) تفاوت دارد. دامنه انتشار (broadcast domain) به مجموعهای از گرههای شبکه گفته میشود که وقتی دادهای در شبکه منتشر یا اصطلاحا برودکست میشود، تمام گرههای آن مجموعه آن را دریافت میکنند. برای مثال، با اینکه هر پورت سوئیچ یک دامنه برخورد (collision domain) مجزا است اما همه پورتهای آن در یک دامنه انتشار (broadcast domain) هستند، زیرا سوئیچ نیز در صورت نیاز میتواند مانند هاب، دادههای دریافتی از پورت مبدا را به تمام پورتهای دیگر برودکست کند.
یادداشت
1. در دستگاههایی مانند هاب، بریج، سوئیچ و روتر، هر پورت کارت شبکه مجزایی دارد. مثلا یک سوئیچ 8 پورتی، هشت کارت شبکه دارد.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟