سوئیچ (switchیکی از عناصر اصلی و مهم در شبکه های کامپیوتری است در این دستگاه علاوه بر دریافت  وارسال سیگنال کار های دیگری نیز انجام می شود در حقیقت حدود عملیاتی که در Switch انجام می شود لایه datalink می باشد در واقع switch در دو لایه پایینی osi کار می کند.

اصطلاحات سوئیچینگ شبکه

در یک شبکه که کامپیوتر‌ها توسط سوئیچ به هم متصل هستند چندین کاربر  میتوانند در یک لحظه  اطلاعات را از طریق شبکه ارسال نمایند. و در این حالت  سرعت ارسال اطلاعات هر یک از کاربران بر سرعت دستیابی سایر کاربران شبکه تاثیر نخواهد گذاشت  و برخوردی مابین بسته های اطلاعاتی صورت نمی گیرد و ارتباط کاملا دو طرفه می باشد  در واقع یکی از مزیت های موجود در سوئیچ ها این است که در هر لحظه یک سری ارتباطات دو طرفه مابین دو device موجود در شبکه ایجاد می کنند.همین امر باعث افزایش سرعت شبکه می شود.
 
 
سوئیچ در لایه دوم (Data Link Layer)مدل OSI انجام وظیفه می‌کند و بدین معناست که به صورت هوشمند مسیر اطلاعات را مشخص می‌کند به طور مثال اگر یک بسته اطلاعاتی‌ مقصدش کامپیوترشماره ۱ باشد سوئیچ آن بسته را فقط برای همان کامپیوتر ارسال می‌کند. سوئیچ در یک لیست آدرس پورت‌های خود و آدرس کامپیوتر‌های متصل به آن پورت‌ها را ذخیره کرده و با استفاده از آن میتواند مسیر اطلاعات را مشخص کند .
سوئیچ سیگنالها را دریافت کرده و پس از دریافت سیگنالها یک frame به صورت کامل  ابتدا اقدام به کنترل crc می نماید در صورتی که crc نشان دهنده سالم بودن frame باشد  در مرحله ی بعدی آدرس مبدا و مقصد mac address را کنترل می کند . با کنترل آدرس مبدا و شماره پورت و macaddress مربوط به کامپیوتر ارسال کننده در جدول filter/forward table  ثبت می گردد و سپس در صورتی که مقصد نیز در جدول مذکور شناخته شده بود  اطلاعات صرفا به همان پورتی که مقصد به آن متصل است ارسال می شود.
در صورت وجود نداشتن آدرس کامپیوتر مقصد در جدول مذکور با توجه به اینکه معلوم نیست مقصد بر روی کدام پورت است frame  دریافت شده توسط switch به تمام پورت ها ارسال شده یا اصطلاحا flood می شود. ضمنا در صورتی که یک frame از نوع broadcast  به switch برسد به تمام پورت ها flood می شود.
تعداد پورت های  switch در برخی مدل ها بیش از ۴۸ عدد می باشد و دارای کاربرد ها و مدل های بسیار متفاوتی می باشد. قابل ذکر است با توجه به کاربرد های متفاوت از سوئیچ های متفاوت با ابعاد و توانایی های گوناگون استفاده می شود.
سوئیچ هائی که برای هر یک از اتصالات موجود در یک شبکه داخلی استفاده می گردند ، سوئیچ های LAN نامیده می شوند
سوئیچ ها به منظور مسیر یابی موجود در شبکه از روش های مختلفی استفاده می کنند که به توضیح آن می پردازیم.
Packet-Switching
سوئیچ ها بر مبنای Packet-Switching کار می کنند و بین سگمنت هایی که از نظر بعد مکانی از هم به حد کافی دور می باشند ، ارتباط برقرار می سازد. بسته های اطلاعاتی وارده در buffer نگهداری می شوند. آدرس های MAC در قسمت هدر فریم نگهداری می شوند. آدرس های مذکور که در این قسمت قرار دارد ، خوانده می شوند و با جدول مک سوئیچ (MAC Table) مقایسه می گردند. همچنین فریم اترنت در یک شبکه LAN قسمتی به نام Payload دارد. که شامل MAC Address مبدا و مقصد می باشد. همانطور که قبلا گفته شد سوئیچ آدرس مک مبدا و مقصد را چک کرده و در صورتیکه آدرس مقصد را در جدول مک آدرس های خود داشت برای مقصد ارسال می کند.
منظور از حافظه بافر در رابطه با سوئیچ چیست؟
حافظه بافر یک ناحیه ذخیره سازی اختصاص داده شده، برای رسیدگی به داده های عبوری می باشد. بافرها معمولاً برای دریافت و ذخیره سازی اطلاعات پراکنده، که پشت سر هم توسط دستگاه های سریعتر، ارسال می شود را دریافت می کنند و تفاوت سرعت را جبران می نمایند. اطلاعات ورودی ذخیره می شوند تا هنگامی که تمام داده های گرفته شده قبلی فرستاده شوند. این حافظه در سوئیچ به اشتراک گذارده می شود.
  1. سوئیچ های Packet-based برای تعیین مسیر ترافیک از یکی از سه روش زیر استفاده می کند :

      ●   Cut-through 

      ●   Store-and-forward 

      ●   Fragment-free

         Cut-through:

در این روش ، سوئیچ آدرس های MAC را به محض دریافت بسته می خواند و سپس ۶ بایت MAC اطلاعات مربوط به آدرس را ذخیره کرده و با وجود اینکه ما بقی بسته ها در حال رسیدن به سوئیچ می باشند ، اقدام به ارسال بسته مذکور به سمت نود مقصد می نماید.

        Store-and-forward:

سوئیچی که از این روش استفاده می کند ، ابتدا تمام اطلاعات داخل بسته را دریافت و نگهداری می کند و قبل از ارسال بسته مورد نظر به دنبال خطای CRC و یا مشکلات دیگر می گردد. در صورتی که بسته دارای خطایی باشد آن بسته را کنار می گذارد. در غیر اینصورت سوئیچ آدرس کارت شبکه گیرنده را جستجو کرده و سپس آن را برای نود مقصد ارسال می دارد.

بیشتر سوئیچ ها همزمان از دو روش فوق استفاده می کنند مثلاً ابتدا از روش Cut-through استفاده کرده ولی به محض برخورد با یک خطا ، روش خود را تغییر می دهد و به شیوه Store-and-forward عمل می کند ، از آنجائیکه روش Cut-through قادر به اصلاح خطا نمی باشد در نتیجه سوئیچ های کمتری از این روش استفاده می کنند ولی از سرعت بالاتری برخوردار است.

        Fragment-free:

سوئیچ ها از این روش کمتر استفاده می کنند. این روش مانند روش اول می باشد با این تفاوت که در این شیوه ، سوئیچ قبل از ارسال بسته ، ۶۴ بایت اول آن را نگه می دارد این کار به خاطر آن است که بیشتر خطا و برخوردها در طول اولین ۶۴ بایت بسته اطلاعاتی اتفاق می افتد.

      ۲٫   Switch Configurations

سوئیچ های LAN از نظر شکل فیزیکی با هم متفاوتند ، در حال حاضر ، سوئیچ ها دارای سه شکل عمده می باشند:
  •        Shared memory :
این نوع از سوئیچ ها ، بسته رسیده را در یک حافظه مشترک یا بافر که این بافر در بین تمامی درگاه های سوئیچ تقسیم می شود نگهداری می کنند و سپس پکت را از طریق درگاه مناسب برای سمت نود مقصد ارسال می کنند.
  •         Matrix :
این نوع سوئیچ ها دارای یک شبکه خطوط داخلی ( ماتریکس ) با پورت های ورودی و خروجی می باشند. زمانیکه وجود یک بسته اطلاعاتی در پورت ورودی تشخیص داده شود ، آدرس کارت شبکه ( MAC ) با جدول جستجوی موجود در سوئیچ (MAC Table) مقایسه می شود تا در نهایت بسته مذکور به پورت خروجی مورد نظر هدایت شود. بنابراین سوئیچ در حد فاصل بین این دو پورت یک خط ارتباطی ایجاد کرده و آن
دو پورت را به هم متصل می کند.
منظور از جدول آدرس های MAC درباره سوئیچ چیست؟
سوئیچ های لایه ۲، کارهای متفاوتی مانند یاد گرفتن آدرس MAC، فرستادن و فیلتر کردن تصمیمات و غیره را انجام می دهند. وقتی یک سوئیچ روشن می شود جدول آدرس های MAC آن خالی است. وقتی دستگاه فریم می فرستد و توسط واسط (Interface) دریافت می شود، سوئیچ آدرس مبدا را در جدول آدرس های MAC ذخیره می کند. بعد از این سوئیچ جدول آدرس های MAC را برای فرستادن و فیلتر کردن فریم های دریافتی استفاده می کند و سوئیچ مشخص می کند که فریم ها باید از پورت مشخص شده عبور کنند یا خیر. به همین دلیل جدول آدرس های MAC، جدول فیلتر MAC، یا فیلتر کننده نیز گفته می شود.
  •         Bus architecture :
در این دسته از سوئیچ ها یک بافر برای هر یک از درگاه ها در نظر گرفته شده است. که گذرگاه اطلاعات را کنترل می کند.
     ۳٫   Transparent Bridging
اکثر سوئیچ ها از سیستمی موسوم به transparent bridging  استفاده می کنند تا جداولی جهت جستجوی آدرس بسازند. سیستم مذکور یک تکنولوژی می باشد که امکان می دهد تا سوئیچ همه آنچه که در مورد موقعیت نودها در شبکه باید بداند را بدون دخالت مدیر شبکه ( network administrator ) می آموزند. این سیستم دارای پنج قسمت زیر می باشد :
      ●   Learning
      ●   Flooding
      ●   Filtering
      ●   Forwarding
      ●   Aging
همانطور که در شکل  زیر مشاهده می کنید سوئیچ به شبکه اضافه شده است و سگمنت های مختلف به آن متصلند.
  •          Learning :
کامپیوترa که در سگمنت a قرار دارد ، دیتایی برای کامپیوتر bواقع در سگمنت c ارسال می کند. پس سوئیچ اولین بسته اطلاعاتی را از روی نود a دریافت می کند. آدرس کارت شبکه یا MAC Address آن را می خواند و آن را در جدول مک خود به ثبت می رساند. از این پس سوئیچ به محض دریافت یک بسته اطلاعاتی که آدرس مقصد دستگاه ، نود a آدرس دهی شده باشد می تواند نود a را با توجه به آدرس موجود بیاید. به این عملیات Learning می گویند. یعنی به محض دیدن یک MAC Address جدید سوئیچ آن را یادداشت می کند و آن را یاد می گیرد.
  •         Flooding :
با توجه به اینکه سوئیچ ، مک آدرس نود b را نمی شناسد ، بسته را به تمامی سگمنت ها به استثنای سگمنت a می فرستد. هرگاه سوئیچ برای یافتن یک نود مشخص بسته را به تمامی سگمنت ها بفرستد در اصطلاح به این عمل Flooding می گویند.
  •         Forwarding :
نود b بسته را دریافت کرده و بسته ای را برای شناسایی به سمت نود a می فرستد. بسته ارسالی از سوی نود b به سوئیچ می رسد و سوئیچ نیز آدرس کارت شبکه نود b را به لیست MAC Table خود در سگمنت c اضافه می کند. از آنجائیکه سوئیچ ، آدرس نود a را از قبل می داند در نتیجه بسته را مستقیماً به نود a می فرستد. چون سگمنتی که نودA متعلق به آن است با سگمنتی که نود b به آن تعلق دارد با هم متفاوت می باشند. در نتیجه سوئیچ می باید این دو سگمنت را به هم مربوط سازد و سپس اقدام به ارسال بسته نماید که به این عمل Forwarding می گویند.
بسته دیگری از سوی نود a به سمت نود b ارسال می گردد، بسته ابتدا به سوئیچ می رسد، سوئیچ نیز آدرس نود b را می داند و بسته را مستقیماً به نود b می فرستد.
منظور از جدول آدرس های MAC درباره سوئیچ چیست؟
سوئیچ های لایه ۲، کارهای متفاوتی مانند یاد گرفتن آدرس MAC، فرستادن و فیلتر کردن تصمیمات و غیره را انجام می دهند. وقتی یک سوئیچ روشن می شود جدول آدرس های MAC آن خالی است. وقتی دستگاه فریم می فرستد و توسط واسط (Interface) دریافت می شود، سوئیچ آدرس مبدا را در جدول آدرس های MAC ذخیره می کند. بعد از این سوئیچ جدول آدرس های MAC را برای فرستادن و فیلتر کردن فریم های دریافتی استفاده می کند و سوئیچ مشخص می کند که فریم ها باید از پورت مشخص شده عبور کنند یا خیر. به همین دلیل جدول آدرس های MAC، جدول فیلتر MAC، یا فیلتر کننده نیز گفته می شود.
  •          Filtering :
نود c اطلاعاتی را برای نود a می فرستد. آدرس نود c به سوئیچ نیز از طریق HUB ، ارسال می شود و سوئیچ آدرس نود c را نیز به لیست آدرس های خود در سگمنت a اضافه می کند. پیش از این ، سوئیچ آدرس مربوط به نود a را می دانست و مشخص می سازد که این نودها ( a و c ) هر دو در یک سگمنت مشابه قرار دارند ، پس برای ارسال اطلاعات از نود c به نودa دیگر نیازی نیست تا سوئیچ سگمنت a را با سگمنت دیگری مرتبط سازد. بنابراین سوئیچ در حین انتقال اطلاعات بین نودهای درون یک سگمنت عکس العملی از خود نشان نمی دهد که به این عمل Filtering می گویند.
مراحل Learning و Flooding ادامه می یابد تا اینکه سوئیچ مک آدرس تمامی نودها را به لیست خود اضافه کند. بیشتر سوئیچ ها برای نگهداری لیست آدرس ها از حافظه زیادی برخورد دارند. اما برای استفاده بهتر از این حافظه سوئیچ آدرس های قدیمی را از جدول پاک می کند و برای جلوگیری از اتلاف وقت در آدرس های قدیمی به دنبال آدرسی نمی گردد. برای انجام این کار از تکنیکی موسوم به aging بهره می گیرد. اساساً وقتی اطلاعات یک نود وارد جدول سوئیچ می شود یک Timestamp در مقابل آن اطلاعات نوشته می شود و با دریافت هر بسته اطلاعاتی دیگر ، آن بر چسب زمان (Timestamp) به روز می شود.
سوئیچ دارای قابلیتی است که پس از مدتی در صورت عدم فعالیت نود ، اطلاعات مربوط به آن را پاک می کند. این قابلیت باعث میشود تا فضای قابل توجهی از حافظه برای اطلاعات و پکت های دیگر اختصاص داده شود. در نمونه ای که ملاحظه کردید، دو نود ( a و c ) یک سگمنت را بین خود تقسیم می کنند حال آنکه سوئیچ برای هر یک از نودهای b و d یک سگمنت مستقل میسازد. در یک شبکه ایده آل  LAN-Switched هر یک از نودها دارای یک سگمنت جداگانه می باشد که خصیصه مذکور ، احتمال برخورد بین بسته های اطلاعاتی و همچنین نیاز به فیلترینگ را حذف می کند.
    ۴٫ Spanning Trees
برای جلوگیری از وقوع طوفان هایی موسوم به Broadcast Storms و همچنین جوانب ناخواسته دیگری که در اثر اتصال حلقه ای سوئیچ ها بوجود می ایند، شرکت Digital Equipment Corporation پروتکلی با نام Spanning-tree Protocol یا STP ساخته است که موسسه IEEE نیز آن پروتکل را با استاندارد ۸۰۲٫id معرفی کرده است.
طوفان داده پراکنی (Broadcast Storm) چیست ؟
عموماً این حالت بیانگر تولید ترافیک بسیار زیاد، توسط دستگاه هایی است که به طور عادی ترافیک دارند. اگر این دستگاه ها به تولید بیشتر و بیشتر ترافیک ادامه دهند، بازده شبکه بسیار کاهش می یابد.
اساساً پروتکل مذکور از یک الگوریتم موسوم به (STA( Spanning- tree Algorithm استفاده می کند. الگوریتم مذکور قادر است تا در بین چندین مسیر منتهی به نود مورد نظر ، بهترین راه را تشخیص داده و مسیر های دیگر که ایجاد حلقه می کند را مسدود می سازد.
منظور از کنترل جریان (Flow Control) در سوئیچ چیست؟
این عبارت در ارتباطات سریال استفاده می شود و منظور متوقف کردن فرستنده از فرستادن اطلاعات است, تا وقتی که گیرنده آن را بتواند بپذیرد ؛ که هم به شکل سخت افزاری و هم نرم افزاری است. گیرنده ها عموماً میزان بافر ثابتی دارند وهمان لحظه که اطلاعات دریافت می شوند، می نویسند و وقتی مقدار داده های بافر به حد نهایی می رسد، گیرنده یک سیگنال به فرستنده جهت متوقف کردن ارسال می فرستد.