قوانین ارتباطی در یک پروتکل ارتباطی تعریف شده است. همه پروتکل ها در لایه برنامه کار می کنند. پروتکل لایه کاربرد الگوهای اساسی گفتگو را تعریف می کند. برای رسمی کردن تبادل داده حتی بیشتر ، سرور ممکن است یک رابط برنامه نویسی برنامه (API) را پیاده سازی کند. [3] API یک لایه انتزاعی برای دسترسی به یک سرویس است. با محدود کردن ارتباطات به قالب محتوای خاص ، تجزیه و تحلیل را تسهیل می کند. با انتزاع دسترسی ، تبادل داده بین پلتفرمی را تسهیل می کند. [4]
یک سرور ممکن است در مدت زمان کوتاهی از بسیاری از مشتریان مشخص درخواست کند. یک رایانه فقط در هر لحظه می تواند تعداد محدودی کار را انجام دهد و برای اولویت بندی درخواست های دریافتی از مشتری برای تأمین آنها ، به یک سیستم زمان بندی متکی است. برای جلوگیری از سو abuse استفاده و به حداکثر رساندن در دسترس بودن ، نرم افزار سرور ممکن است دسترسی را به مشتری محدود کند. حملات انکار سرویس برای سو explo استفاده از تعهدات سرور در پردازش درخواست ها با بارگذاری بیش از حد آن با نرخ های بیش از حد درخواست طراحی شده اند. در صورت انتقال اطلاعات حساس بین سرویس گیرنده و سرور ، باید رمزگذاری اعمال شود.
مثال
هنگامی که مشتری بانک با مرورگر وب (مشتری) به خدمات بانکی آنلاین دسترسی پیدا می کند ، مشتری درخواستی را از وب سرور بانک آغاز می کند. اعتبار ورود مشتری ممکن است در یک پایگاه داده ذخیره شود و وب سرور به عنوان مشتری به سرور پایگاه داده دسترسی پیدا کند. یک سرور برنامه با استفاده از منطق تجاری بانک ، داده های برگشتی را تفسیر می کند و خروجی را به وب سرور ارائه می دهد. سرانجام ، سرور وب نتیجه را برای نمایش به مرورگر وب مشتری برمی گرداند.
در هر مرحله از این توالی تبادل پیام مشتری-سرور ، رایانه یک درخواست را پردازش می کند و داده ها را برمی گرداند. این الگوی پیام رسانی درخواست پاسخ است. وقتی همه درخواست ها برآورده می شوند ، توالی کامل می شود و مرورگر وب داده ها را به مشتری ارائه می دهد.
این مثال الگوی طراحی قابل استفاده برای مدل مشتری-سرور را نشان می دهد: جدایی نگرانی ها.
تاریخ اولیه
شکل اولیه معماری سرویس گیرنده و سرور ورود شغل از راه دور است ، حداقل با OS / 360 (اعلام شده در سال 1964) ، جایی که درخواست اجرای یک کار بود و پاسخ خروجی آن بود.
هنگام خدمات شبکه تدوین مدل سرویس گیرنده-سرور در دهه 1960 و 1970 ، دانشمندان کامپیوتر در ساخت ARPANET (در پژوهشگاه استنفورد) از اصطلاحات میزبان سرور (یا میزبان سرویس دهنده) و میزبان کاربر (یا استفاده از میزبان) استفاده کردند ، اسناد اولیه RFC 5 [5] و RFC 4. [6] این کاربرد در زیراکس PARC در اواسط دهه 1970 ادامه یافت.
یکی از زمینه هایی که محققان از این اصطلاحات در آن استفاده کردند ، در طراحی زبان برنامه نویسی شبکه رایانه ای به نام Decode-Encode Language (DEL) بود. [5] هدف این زبان پذیرش دستورات از یک رایانه (میزبان کاربر) بود که با رمزگذاری دستورات در بسته های شبکه ، گزارشات وضعیت را به کاربر برمی گرداند. یک کامپیوتر دیگر با قابلیت DEL ، میزبان سرور ، بسته ها را دریافت کرده ، رمزگشایی کرده و داده های قالب بندی شده را به میزبان کاربر باز می گرداند. یک برنامه DEL در میزبان کاربر ، نتایج را برای ارائه به کاربر دریافت کرد. این یک معامله مشتری-سرور است. توسعه DEL تازه در سال 1969 آغاز شد ، سالی که وزارت دفاع ایالات متحده ARPANET (سلف اینترنت) را تأسیس کرد.
میزبان مشتری و میزبان سرور
کلاینت-میزبان و سرور-میزبان معنای کاملاً متفاوتی نسبت به کلاینت و سرور دارند. میزبان هر رایانه متصل به شبکه است. در حالی که کلمات سرور و سرویس گیرنده ممکن است به رایانه یا به یک برنامه رایانه ای اشاره داشته باشند ، میزبان سرور و میزبان کاربر همیشه به رایانه ها اشاره دارند. میزبان یک کامپیوتر همه کاره و چند منظوره است. کلاینت ها و سرورها فقط برنامه هایی هستند که روی میزبان اجرا می شوند. در مدل سرویس گیرنده - سرور ، یک سرور بیشتر به وظیفه سرویس دهی اختصاص داده شده است.
استفاده اولیه از کلمه مشتری در "جداسازی داده ها از عملکرد در سیستم پرونده توزیع شده" ، مقاله 1978 توسط دانشمندان کامپیوتر Xerox PARC هوارد استورگیس ، جیمز میچل و جی اسرائیل وجود دارد. نویسندگان مراقب هستند این اصطلاح را برای خوانندگان تعریف کنند و توضیح دهند که آنها از این واژه برای تشخیص بین کاربر و گره شبکه کاربر (مشتری) استفاده می کنند. [7] (تا سال 1992 ، کلمه سرور به زبان عامیانه وارد شده بود.) [8] [9]
محاسبات متمرکز
اطلاعات بیشتر: تاریخچه رایانه های شخصی ، محاسبات غیرمتمرکز و خوشه رایانه
مدل سرویس گیرنده - سرور حکم نمی کند که میزبان سرور باید منابع بیشتری نسبت به میزبان سرویس گیرنده داشته باشد. در عوض ، این رایانه را قادر می سازد تا با استفاده از منابع مشترک سایر میزبانها ، قابلیتهای خود را گسترش دهد. محاسبات متمرکز ، به طور خاص ، مقدار زیادی از منابع را به تعداد کمی از رایانه اختصاص می دهد. هرچه محاسبات بیشتر از host-host ها به رایانه های مرکزی بارگیری شود ، میزبان های مشتری نیز می توانند ساده تر باشند. [10] برای محاسبه و ذخیره سازی به شدت به منابع شبکه (سرورها و زیرساخت ها) متکی است. گره بدون دیسک حتی سیستم عامل خود را از شبکه بارگیری می کند و یک ترمینال رایانه ای هیچ سیستم عاملی ندارد. این فقط یک ورودی / خروجی است