در این مقاله سعی داریم مفاهیم سرور (Server) و کلاینت (Client) را به زبانی ساده بیان کنیم. با ما همراه باشید.
تعریف سرور و کلاینت تا پیش از این!
واژههای Server و Client در دهه 80 میلادی همزمان با عرضه تجهیزات شبکه به بازار، مطرح شد. تصور افراد از کلاینت و سرور صرفاً به تجهیزات سختافزاری کامپیوترها مربوط میشد. سرور به کامپیوتری اطلاق میگردید که در حقیقت مانند مرکزثقل ارائه خدمات در شبکه بود و کلاینت نیز کامپیوتری بود که این امکانات را مورد استفاده قرار میداد. این تعاریف اگرچه درست بودند اما ناقص بودند. یعنی این تعریف که کلاینت صرفاً یک کامپیوتر فیزیکی و سرور کامپیوتر فیزیکی متصل به آن که وظیفه ارائه سرویس را برعهده دارد، باشد، تعریف کاملی نیست. در ادامه به بررسی این دو مفهوم به طور کامل میپردازیم.
سرور (Server)
سرور کامپیوتر همواره روشن است که در تمامی مواقع در دسترس است و به کامپیوترها و تجهیزات دیجیتالی که به شبکه متصل هستند، سرویس میدهد. و به همین دلیل به سرور ، سرویسدهنده میگویند. اساساً راهاندازی سرورها برای ارائه خدمت به تجهیزات متصل در شبکه انجام میشود تا بتوانند به درخواستهای کلاینتها پاسخ دهند. به عنوان نمونه در زمان اتصال شما به یک وبسایت و استفاده از خدمات آن، سرور آن سایت در حال خدمترسانی به شما است. سرورها خدمات متنوعی در اختیار کلاینتها قرار میدهند که از آن جمله میتوان File server، web server، game server، printer server و … نام برد.
پرینترسرور (printer server) یکی از انواع سرویسدهندههاست که در یک شبکه، تمامی کامپیوترهای شبکه به آن وصل میشوند و به این ترتیب میتوانند نیاز چاپی خود را رفع کنند. این سرویسدهنده به کمک شبکه LAN درخواستهای چاپی اطلاعات کلاینتها را پاسخ میدهد.
کلاینت (Client)
در مقابل سرور(Server)، تجهیزات و کامپیوترهایی که از سرور، خدمات دریافت میکنند کلاینت (Client) نامیده میشوند. معنای لغوی کلاینت، سرویسگیرنده است. تمامی تجهیزات، کامپیوترها و یا نرمافزارهای متصل به سرویسدهنده که که سرور به آن خدمت ارائه میدهد، سرویسگیرنده محسوب میگردند. کامپیوترهای موجود در شبکه که به چاپگر اتصال دارند، از آنجایی که از چاپگر شبکه، درخواست خدمات چاپ اطلاعات دارند، سرویسگیرنده شبکه محسوب میگردند.
به عنوان مثالهایی ملموس از سرویسگیرنده میتوانیم به تجهیزات کاربردی ویدئوکنفرانس، نرمافزار پست الکترونیکی تحت شبکه و یا پیامرسان مود استفاده ما، اشاره کنیم.
client-side با server-side چه تفاوتی با یکدیگر دارند؟
وظایف سرورها
- ازآنجایی که سرورها وظیفه ارائه خدمت به کلاینتها را دارند، بدیهی است که به لحاظ سختافزاری، کامپیوترهای قدرتمندی محسوب میشوند. اشتراک منابع برای استفاده کلاینتها در شبکه توسط سرور صورت میگیرد. اختصاص هارد، رم، سیپییو به کلاینتهای شبکه، میزان استفاده از اینترنت، مدیریت پرینترها و …. از جمله منابعی است که توسط سرویسدهنده به سرویسگیرندگان در شبکه اختصاص مییابد. سرورها تعیینکننده میزان استفاده از منابع شبکه توسط کلاینتها هستند.
- یک سرویسدهنده میبایست به درخواست کلاینتها و هر سرویسگیرندهای در شبکه پاسخ دهد. زمانی که دو سرویسگیرنده که کاربر محسوب میشوند قصد تبادل پیغام و اطلاعات دارند، سرویسدهنده ابتدا داده را ذخیره میکند و سپس به سرویسگیرنده دیگر ارسال میگردد.
وظایف کلاینتها
- کلاینتها وظیفه اصلی که برعهده دارند، ارسال درخواستهای خود به سرویسدهنده (سرور) است. باتوجه به نوع نیاز هر کلاینت، درخواستها توسط آن از طریق برنامههای کاربردی به سرور ارسال میگردد. میتوانیم کلاینت را مشتری درنظر بگیریم که از سرور تقاضای کار (task) مینماید.
- ارسال و به اشتراگگذاشتن اطلاعات در شبکه از دیگر وظایف مهم کلاینتها محسوب میگردد. نمونه آن زمانی است که کاربران در یک سرور چت، اطلاعات خود را به سمت سرور ارسال مینمایند و سپس ارسال اطلاعات از کلاینت به کاربر دیگر از سوی سرور انجام میشود.
ارتباط بین سرور و کلاینت
برای برقراری اتصال بین کامپیوتر سرور و تمامی تجهیزات لازم است یک شبکه محلی/ شهری ایجاد کرد که نقش واسط را برعهده خواهد داشت. فعالیت کلاینتها براساس دستورات دریافتی از سرویسدهنده است و رفع نیاز آنها نیز توسط سرور صورت میگیرد. ایجاد یک شبکه LAN درصورت قرارگیری تمامی کلاینتها در یک ساختمان، برای اتصال کلاینتها به یکدیگر و نیز اتصال آنها به سرویسدهنده جهت دریافت خدمات، ضرورت مییابد. در یک ساختمان اداری، اتصال کامپیوترها به سرور و دریافت سرویس از آن در بستر شبکه محلی LAN امکانپذیر میگردد. تمامی فعالیتهای تجهیزات و کلاینتهای ساختمان اداری، با مدیریت و کنترل کامپیوترسرور انجام میشود. در صورت بزرگشدن ابعاد شبکه یعنی شبکه WAN، اتصال تجهیزات و کامپیوترهای سرویسگیرنده به سرور از قسمتهای گوناگون شهر یا کشور انجام میشود. نمونه آن سرور شعبه مرکزی بانک است که کلاینتهای شعب مختلف بانک از جاهای گوناگون به آن وصل میشوند و خدمات دریافت میکنند.
باتوجه به آنچه گفته شد بین سرور (Server) و کلاینت (Client) تفاوتهای اساسی وجود دارد که لازم است از چند منظر این تفاوتها را مورد بررسی قرار دهیم. با ما همراه باشید.
تفاوت سرور و کلاینت از دو منظر:
- برنامهنویسی
- شبکه
تفاوت سرور و کلاینت از نگاه برنامهنویسی
از نگاه برنامهنویسی میتوانیم دو زبان برای کلاینت و سرور درنظر بگیریم که یکی زبانهای سمت سرور و دیگر زبانهای سمت کاربر است. زمانی را درنظر بگیرید که در حال تماشای یک صفحه وب هستید. در این درحالت ارسال درخواست از سوی ما به سرور میزبان سایت صورت میگیردو سپس عملیات و برنامههای لازم برای تهیه محتوای درخواستی انجام میشود. به عنوان مثال میتوان به برقراری ارتباط با پایگاه داده در سرور توسط زبانهای سمت سرور مانند JSP، ASP و PHP اشاره کرد. بعد از پایان عملیات توسط سرور سایت، ارسال خروجی برنامه به صورت کدهایی که برای کاربر خوانا هستند انجام میشود این کدها با زبان JavaScript، CSS ، HTML که زبان سمت کاربر محسوب میگردند ارسال میشود. در نتیجه پردازش این اطلاعات به سرور مربوط نمیشود و پردازش این کدها توسط مرورگر مورداستفاده شما که میتواند به عنوان مثال گوگل کروم باشد، صورت میگیرد و درنهایت شما صفحه وب موردنظر خودرا به عنوان خروجی مشاهده میکنید.
تفاوت سرور و کلاینت از نگاه شبکه
دو نوع شبکه را میتوانیم مورد بررسی قرار دهیم:
شبکه Peer to Peer
در این نوع شبکه هیچ قدرت مرکزی دیده نمیشود. درصورت درخواست یک کاربر برای دسترسی به منابع کامپیوتر دیگر، کامپیوتر مقصد توسط سیستم امنیتی خود، اجازه یا عدم اجازه دسترسی کامپیوتر مبدا (درخواستدهنده) به منابع را مورد بررسی قرار میدهد. این بدان معناست که تمامی کامپیوترهای موجود در این شبکه هم در نقش کلاینت (Client) و هم در نقش سرور (Server) به انجام وظایف خود مشغولند. هرکاربر موظف است local بکآپ خودش را بگیرد و در عین حال ملاحظات امنیتی بسیار محدود و شامل حال تعداد معدودی از کامپیوترها میشود.
شبکه Client/Server
در این نوع شبکه بر خلاف شبکه Peer to Peer، سیستمعامل تخصصی مورد استفاده قرار میگیرد و به کمک آن مدیریت اطلاعات شبکه از یک منطقه مرکزی (Centralized point) انجام میشود که در حقیقت سرور همان منطقه مرکزی است. و روند کار بدین صورت است که تقاضای اطلاعات از سوی کلاینتها انجام میشود و سرور یا اطلاعات را به آنها میدهد و یا امکان دسترسی به منابع را برایشان فراهم میسازد. این نوع شبکه نسبت به Peer to Peer از سازماندهی بیشتری برخوردار است. از آنجایی که فایلها و منابع روی سرور ذخیره شدهاند، پیداکردن آنها به سهولت انجام میشود و دارای امنیت بسیار بالایی است. ذخیره نام کاربری و رمز عبور تمامی کلاینتها در سرور به عنوان پایگاه داده (database) یکسان صورت میگیرد و در نتیجه امکان استفاده کاربران از سرور به عنوان workstation وجود ندارد و کاربران میبایست برای استفاده از خدمات سرور ابتدا به سیستمهای خود Login کنند. سرورها در این حالت قطعا میبایست دارای قدرت پردازشی بسیار زیاد باشند تا بتوانند همزمان به درخواست چندین کلاینت پاسخ دهند، این درحالی است که کلاینتها متحمل فشار کاری نیستند و تنها نقش رابط کاربری برای اتصال به سرور را ایفا میکنند و باتوجه به انجام تمامی عملیات پردازشی توسط سرور، کلاینتها از حداقل قدرت عملیاتی و پردازشی برخوردارند و مجموع آنچه گفته شد موجب میشود که شبکه Client/Server ضمن آنکه موجب کاهش بسیار زیاد هزینههای سازمان میشود از کارایی بسیار بهتری برخوردار باشد. این نوع معماری با هدف جداسازی فعالیت کاربران از فرآیندهای سازمانی طراحی شده است که در سازمانهای بزرگ بسیار ضروری است.
ارتباط ما با سرور و کلاینتها!
تمامی نرمافزارهای پیامرسان و ایمیلرسان، ویدئوکنفرانس و گشت و گذار در سایتها و … برای اینکه بتوانند به ما سرویس بدهند لازم است بین آنها و سروهایشان، اتصال برقرار شود. و ما به عنوان کاربر (کلاینت)، درهنگام استفاده از آنها، در حال دریافت سرویس از سرویسدهنده آن کلاینت هستیم. به عنوان مثال همین حالا که شما این مقاله را مطالعه میکنید کامپیوتر شما به عنوان یک کلاینت از سرور سایت خدمات دریافت میکند.