در اواسط دهه 80 میلادی و زمانی که اولین بار تولیدکنندگان تجهیزات شبکه، محصولات خود را به بازار عرضه کردند، واژه Client/Server وارد عرصه کامپیوتر گردید. در آن زمان واژه فوق صرفا در رابطه با تجهیزات سخت افزاری کامپیوتر استفاده می شد. کامپیوتری که از آن به عنوان مرکز نقل ارائه خدمات در یک شبکه یاد می شد را با نام Server و کامپیوتری که از این امکانات استفاده می کرد را بعنوان Client می شناختند.
امروزه واژه فوق دارای یک معنی خاص است که چندان مرتبط با سخت افزار نیست. اغلب مردم هنوز واژه Client را به یک کامپیوتر فیزیکی نسبت داده و واژه Server را به کامپیوتر فیزیکی دیگری که به آن متصل و سرویس هائی را ارائه می دهد، اطلاق می نمایند. مطلب فوق با اینکه درست است ولی صرفا یک بخش اندک از تمامی واقعیت های موجود در این زمینه است. واژه فوق امروزه در مقیاس وسیع تری به خدمت گرفته می شود. به منظور آشنائی بیشتر با این واژه مقاله ذيل را دنبال نمائيد.
عموما کلاینت به کامپیوتری گفته می شود که تقاضایی را از یک سرور دارد. کلاینت در لغت نامه به معنای مشتری می باشد و مشتری کسی است که تقاضای خدماتی را از سوی فروشنده ای دارد. یک سرور می تواند در آن واحد به چندین کلاینت یا بازدید کننده خدمات رسانی کند، اين در حالي است كه در فناوری اطلاعات سرور برنامه ی کامپیوتری است که خدمات گوناگونی را به برنامه های کامپیوتری دیگر و یا کاربرانش (در همان سیستم یا سیستم دیگر) ارائه می دهد . در تعریف عملی تر، سرور یک کامپیوتر متصل به شبکه است که بر خلاف سایر کامپیوتر ها برای چند منظور متفاوت ساخته شده است.
همانطور كه در بالا اشاره شد، مفهوم سرور و كلاينت در ابتدا با گستردگي كه در حال حاضر وجود دارد مطرح نبود و با ظهور شبكه در علم كامپيوتر اين عبارت نيز وارد دنياي كامپيوتر شد و روز به روز بر گستردگي و مفهوم آن افزوده گرديد . امروزه اين مفهوم را از جنبه هاي مختلفي مي توان بررسي و مقايسه نمود كه در اينجا سعي شده است به دو جنبه اساسي و كاربردي اشاره و تفاوت هاي بين سرور و كلاينت را بيان نمائيم.
تفاوت server و Client از نظر برنامه نویسی
سرور و كلاينت را از نظر برنامه نويسي مي توان به دو دسته زبان های سمت سرور (server side) و سمت کاربر(client side) تقسيم نمود، كه داراي تفاوت هايي مي باشند . در ذيل يه شرح اين تفاوت پرداخته شده است.
زمانی که ما میخواهیم یک صفحه وب را مشاهده کنیم، ابتدا در خواست ما به سرور میزبان آن سایت ارسال می شود. در این هنگام عملیات و برنامه هایی که برای تهیه محتوای مناسب لازم است انجام شود، مثلا ارتباط با پایگاه داده در سرور توسط زبان های سمت server انجام می شود. PHP , ASP , JSP از جمله این زبان ها هستند.
پس از اینکه این عملیات در سمت سرور سایت انجام شود، خروجی برنامه به صورت کدهای سمت کاربر، به کاربر فرستاده می شود. کدهایی مثل HTML , CSS , JavaScript . این کدها برنامه های سمت کاربر هستند. بدین معنی که پردازش این اطلاعات دیگر به عهده ی سرور نیست و مرورگر کاربر (مثلا Mozilla Firefox) باید این کدها را پردازش کرده و نتیجه را به صورت یک صفحه وب به کاربر نمایش دهد.
تفاوت server و Client از نظر شبكه
تفاوت بین این دو شبکه بسیار واضح و بزرگ است اگرچه تفاوت ها را از نظر فیزیکی نمی توانیم ببینیم اما می توانیم از نظر logically آنها را بدرستی از هم تشخیص دهیم.
در این نوع شبکه هیچگونه centralized authority بین کامپیوتر های شبکه نمی توانیم ببینیم در واقع هیچ نوع مرکزیت بین آنها وجود ندارد. اگر یک کاربر بخواهد به منابع کامپیوتر دیگر دسترسی پیدا کند سیستم امنیتی کامپیوتر مقصد (کامپیوتری که منابع درخواست شده را در خودش دارد) بررسی می کند که آیا کامپیوتر درخواست دهنده اجازه دسترسی به منابع را دارد یا خیر.
هر کامپیوتر در این نوع شبکه می تواند هم client باشد هم سرور.
هر کاربر می بایست local back up را خودش بگیرد،
ملاحظات امنیتی بسیار بسیار اندک است و کامپیوتر های محدودی هم در بر می گیرد.
بر خلاف شبکه peer to peer این نوع شبکه سیستم عاملی را استفاده می کند که برای این کار تخصص یافته است تا اطلاعات شبکه را از یک منطقه مرکزی یا centralized point مدیریت کند که این منطقه مرکزی همان سرور است . client ها از سرور تقاضای اطلاعات می کنند و سرور است که با دادن اطلاعات یا دسترسی به منابع به آنها پاسخ می دهد.
شبکه های client/server نسبت به peer to peer مزایای مشخصی دارند و در یک کلام شبکه ای بسیار بسیار سازماندهی تر شده می باشند . بسیار آسان تر خواهد بود که فایل ها و منابع را پیدا کنیم چون آنها بر روی سرور ذخیره شده اند و از امنیت بسیار بالایی برخوردارند همه username و passwords ها در یک database یکسان که همان سرور است ذخیره می شوند و کاربران نمی توانند از سرور بعنوان workstation استفاده کنند بنابراین در نهایت واضح است که شبکه client /server کارایی بسیار بهتری دارد.
واژه Client Server دارای معانی به مراتب بیشتری نسبت به جداسازی یک کامپیوتر سرویس گیرنده و سرویس دهنده از یکدیگر است. واژه فوق علاوه بر سخت افزار و شبكه به سرعت در دنیای نرم افزار نیز مطرح و دارای جایگاه ویژه ای در این زمینه شده است. بنابراين مي توانيم بگويم یک روتین ( سرویس ) می تواند ارائه دهنده خدمات خاصی به سایر سرویس ها باشد. در چنین وضعیتی سرویس ارائه دهنده خدمات را Server و سرویس استفاده کننده از یک خدمات را Client می نامند.