https://edu.thregence.ir/load-balancing/
به زبان ساده، تعدیل بار به عملیاتی گفته میشود که طی آن سعی میکنیم بصورت بهینه، ترافیک ورودی شبکه را بین المانهای مختلف توزیع کنیم.
برای مثال، امروزه وبسایتهایی که ترافیک ورودی زیادی دارند، باید بتوانند در هر لحظه چندین هزار درخواست را مدیریت کنند و به آنها پاسخ بدهند. اما گاهی ترافیک ورودی به وبسایت آنقدر زیاد است که سرورهای فعلی از پس مدیریت و پاسخگویی آنها برنمیآیند.
در نگاه اول، بنظر میرسد که باید تعداد سرورهای خود را افزایش دهیم و البته توان پردازشی هر کدام از آنها را نیز ارتقا دهیم. اما…
روشی که عموما مورد استفاده قرار میگیرد استفاده از یک “تعدیلکننده بار” است!
تعدیلکننده بار (یا همان Load Balancer) همانند یک نگهبان برای ترافیک عمل میکند. بدین صورت که ترافیک ورودی ابتدا به تعدیلکننده بار میرسد، سپس او تصمیم میگیرد که درخواستها را به چه صورت بین سرورها تقسیم کند تا به بهترین شکل ممکن فشار برروی سیستمها پخش شود. در اینصورت ترافیک ورودی تا حد زیادی بصورت متعادل و برابر بین سرورها تقسیم میشود.
تعدیلکننده بار (یا همان Load Balancer) بطور مزایای زیر را دارد:
•توزیع درخواستهای ورودی کاربران بین سرورها بصورت بهینه
•تضمین دسترسپذیری (Availability) و قابلیت اطمینان (Reliability) از طریق ارسال درخواستها به سرورهای روشن
•منعطفتر کردن ساختار برای اضافه کردن سرور جدید در صورت نیاز
تعدیلکننده بار میتواند نرمافزاری یا سختافزاری باشد. نوع نرمافزاری آن، صرفه اقتصادی بهتری دارد چرا که به نسبت نوع سختافزاری، سختافزار به مراتب کمتری برای چنین سیستمی تهیه میشود ولی نوع سختافزاری قابلیتهای بیشتری نظیر امکان استفاده گستردهتر از قابلیتهای مجازیسازی را فراهم میکند، چراکه سختافزار قدرتمندتری دارد.
تعدیل بار مطابق الگوریتمهای مختلفی انجام میشود. برای مثال: •Round Robin: درخواستها بصورت پشت هم برای سرورها ارسال میشود. •Least Connection: درخواست جدید برای سروری ارسال میشود که کمترین اتصال فعال را دارد. •Random: ارسال درخواستها بصورت تصادفی به سمت سرورها •IP Hash: ارسال درخواستها به سمت سرورها مطابق با IP کاربری که درخواست را ارسال کرده است.
ترجنس | thregence.ir
آکادمی ترجنس | edu.thregence.ir
اینستاگرام | instagram.com/thregence
تلگرام | t.me/thregence
یوتوب | https://bit.ly/30mGowo
آپارات | aparat.com/thregence
https://edu.thregence.ir/port/
در فضای شبکه، پورت به جایی گفته میشود که ارتباطات شبکهای (Network Connections) در آن جا شروع و تمام میشود.
پورتهای شبکه، نرمافزاری هستند و توسط سیستمعامل مدیریت میشوند. سیستمعامل برای تفکیک ترافیکهای مختلف ورودی/خروجی، از آنها کمک میگیرد. به این صورت که هر سرویس یا پراسس با یک پورت مشخص همراه میشود و ترافیک شبکه خود را از طریق آن دریافت/ارسال میکند.
برای مثال، فرض کنید که یک کاربر میخواهد بصورت همزمان کارهای زیر را با سیستم خود انجام دهد: •وبگردی کند
•یک ارتباط SSH با سیستم محل کار خود برقرار کند
•ویندوز خود را آپدیت کند
•و …
هر کدام از این عملیات توسط یک سرویس یا پراسس در سیستمعامل مدیریت میشوند.
سیستمعامل برای تفکیک ترافیک این چند سرویس از پورتها استفاده میکند. بدین صورت که برای مثال، ترافیک وبگردی از روی پورت 80، ترافیک ارتباط SSH از روی پورت 22 و … رد و بدل میکند.
به عبارت دیگر میتوان گفت یکی از دلایل وجود تعداد زیادی پورت در سیستمهای امروزی، این است که عموما چندین سرویس یا پراسس میخواهند از طریق شبکه اطلاعاتی را رد و بدل کنند.
پورتها در سراسر شبکههای متصل بهم، استاندارد شدهاند. به اینصورت که به هر کدام از آنها یک شماره اختصاص داده شده است. بیشتر پورتها برای استفاده پروتکلهای مشخصی رزرو شدهاند. مثلا پورتشماره 22 بصورت استاندارد برای ارتباطات SSH رزرو شده است. یا شماره 80 برای پروتکل HTTP و …
پس در اصل وظیفه IP این است که مشخص کند هر بسته در شبکه چه مبدا و مقصدی دارد. در کنار آن، پورتها این وظیفه را داردند که یک سرویس بخصوص از این مبدا و مقصد را هدف قرار دهند.
برای مثال وقتی در شبکه میگوییم بسته A باید به 10.11.12.13:80 برود، یعنی بسته ابتدا باید به سیستمی که آدرس 10.11.12.13 دارد برود و سپس بدست سرویسی که برروی پورت 80 از این سیستم هست برسد.
ضمن اینکه کلا 65535 پورت در دنیای شبکه داریم و پورت یک مفهوم لایه 4 (Transport) میباشد.
ترجنس | thregence.ir
آکادمی ترجنس | edu.thregence.ir
اینستاگرام | instagram.com/thregence
تلگرام | t.me/thregence
یوتوب | https://bit.ly/30mGowo
آپارات | aparat.com/thregence
یکی از ابزارهایی که مدیران و تکنسینهای شبکه همواره برای عیبیابی یک شبکه از آن استفاده میکنند، Traceroute میباشد. هر جا که اختلالاتی مثل تاخیر (Latency) و قطعی (Connectivity Issue) درون یک شبکه وجود داشته باشد، Traceroute و Ping دو ابزار ابتدایی ولی کارآمدی هستند که میتوانند در زمینه رفع مشکل به ما کمک کنند.
حتما با ابزار Ping آشنایی دارید. ابزاری که به ما کمک میکند تا متوجه شویم با یک IP ارتباط داریم یا خیر. فرض کنید میخواهیم بفهمیم که آیا دو سیستم با یکدیگر ارتباط دارند یا خیر. کافیست پشت یکی از سیستمها بنشینیم و درون CMD، سیستم دیگر را Ping کنیم. اگر پاسخ پکتهای ارسالی را با موفقیت دریافت کنیم، متوجه میشویم که ارتباط بین این دو سیستم بدون مشکل است. اما اگر پاسخ درستی دریافت نکنیم، تنها میفهمیم که ارتباط مشکل دارد. چگونه تشخیص دهیم که کجای ارتباط مشکل دارد؟ چراکه احتمالا چندین روتر و سوییچ بین این دو سیستم وجود دارد.
اگر در ارتباط بین دو سیستم مشکلی وجود داشته باشد، Traceroute اولا میتواند مشخص کند که یک مشکلی در ارتباط وجود دارد، دوما میتواند مشخص کند که این مشکل از کجاست!
Traceroute عموما از پکتهای Echo (متعلق به پروتکل ICMP) و همچنین مقادیر متفاوت TTL (یا همان Time To Live) استفاده میکند. اما قبل از اینکه بررسی کنیم Traceroute چگونه کار میکند، باید با مفهوم کلی TTL و RTT آشنا باشیم.
به زبان ساده TTL یا همان Time To Live، عمر یک پکت را در شبکه، محدود میکند. این مقدار برای هر بسته توسط فرستنده آن مشخص میشود و با رسیدن به هر HOP در شبکه، یک واحد از آن کاسته میشود. یعنی اگر TTL یک بسته 100 باشد، نهایتا از 100 عدد HOP میتواند عبور کند تا به مقصد موردنظر برسد در غیر ای نصورت بسته ارسالشده، دور انداخته میشود (از بین میرود) و یک پیام خطا از طریق ICMP برای فرستنده ارسال میشود. HOP همان روترهایی هستند که بر سر راه این پکت قرار دارند.
به زبان ساده RTT یا همان Round-Trip Delay، مدت زمانی است که طول میکشد تا یک پکت ارسال شود و پاسخ آن دریافت شود. RTT به ما کمک میکند تا بفهمیم که بهطور میانگین چه فاصله زمانی بین یک فرستنده و گیرنده وجود دارد. RTT به ما کمک میکند تا تاخیرهای موجود در ارتباط بین دو سیستم را ارزیابی کنیم.
Traceroute در ابتدا شروع به ارسال پکتهایی میکند که TTL آنها 1 میباشد. این پکتها بعد از اینکه به اولین HOP رسیدند، از مقدار TTL یک واحد کم میکنند، از این رو، مقدار TTL برای این پکتها به صفر میرسد. همان طور که بالاتر گفتیم، وقتی مقدار TTL به صفر میرسد، اولا پکت DROP میشود. دوما یک پیام خطا به سمت فرستنده ارسال میشود. حالا تا به اینجا RTT نشان دهنده فاصله زمانی بین فرستنده (کسی که پکتها را ارسال کرد و در اصل همان کسی که دستور Traceroute را اجرا کرده است) و اولین HOP میباشد، چرا که TTL را برابر 1 قرار داده بودیم.
در گام بعدی، Traceroute شروع به ارسال پکتهایی میکند که TTL آنها 2 میباشد. هدف از این کار این است که بستههای ما تنها تا HOP دوم حرکت کنند. پس بستهها پس از اینکه شروع به حرکت کردند، ابتدا از HOP اول عبور میکنند و TTL آنها از عدد 2 به عدد 1 کاهش پیدا میکند. سپس با رسیدن پکتها به HOP دوم، TTL آنها از یک به صفر کاهش پیدا میکند و در نتیجه یک پیام خطا به سمت فرستنده ارسال میشود. بدین صورت فرستنده متوجه میشود که وضعیت RTT تا HOP دوم به چه صورت است.
Traceroute این کار مجددا ادامه میدهد و هر بار TTL را یک واحد افزایش میدهد تا وضعیت ارتباط و RTT هر یک از HOP ها را متوجه شود.
برای استفاده از Traceroute کار بسیار سادهای را پیشرو داریم.
در لینوکس:
traceroute 192.168.1.5
و در ویندوز:
tracert 192.168.1.5
که در هر دوی موارد 192.168.1.5 همان IP ای میباشد که میخواهیم مسیر ارتباط با آن مورد بررسی قرار گیرد.
Rainbow Table یک جدولِ ازپیش محاسبه شده (Precomputed) است. اما در این جداول چه چیزی از پیش-محاسبه شده است و چه فایدهای دارد؟
توابع هش (Hash Function) در دنیای کامپیوتر استفادههای متفاوت و زیادی دارند.
در این نوشته میخواهیم با این دسته از توابع آشنا شویم.