Кіріспе

Клиент-сервер моделі – ресурстарды немесе қызметтерді ұсынатын, серверлер деп аталатын және қызметтерді сұрайтын, клиенттер деп аталатын тараптар арасында міндеттерді немесе жұмыс жүктемесін бөлісетін, таратылған қолданба құрылымы. Клиенттер мен серверлер көбінесе жеке аппараттық құралдарда компьютерлік желі арқылы байланысады, бірақ клиенттер мен серверлер бір жүйеде орналасуы мүмкін. Сервер хосты бір немесе бірнеше серверлік бағдарламаларды іске қосады, олар өз ресурстарын клиенттермен бөліседі. Клиент әдетте өзінің ресурстарын бөліспейді, бірақ серверден мазмұн немесе қызмет сұрайды. Сондықтан клиенттер келіп түсетін сұрауларды күтетін серверлермен байланыс сессиясын бастайды. Клиент-сервер моделін пайдаланатын компьютерлік қолданбалардың мысалдары – электрондық пошта, желілік басылым және Әлемдік желі.

Клиент пен сервердің рөлі

"Клиент-сервер" ерекшелігі – қолданбадағы өзара іс-әрекеттесетін бағдарламалардың қарым-қатынасын сипаттайды. Серверлік компонент бір немесе бірнеше клиенттерге функция немесе қызмет ұсынады, ал клиенттер осы қызметтерді сұрап алады. Серверлер ұсынатын қызметтеріне қарай жіктеледі. Мысалы, веб-сервер веб-беттерді, ал файл-сервер компьютерлік файлдарды қамтамасыз етеді. Ортақ ресурс – серверлік компьютердің бағдарламалық құралдары мен электрондық компоненттерінің кез келгені болуы мүмкін, бағдарламалар мен деректерден бастап процессорлар мен сақтау құрылғыларына дейін. Сервердің ресурстарын бөлісу – қызмет болып табылады. Компьютер клиент, сервер, немесе екеуінің де ролін атқаруы, қолданбаның қызметтік функцияларды қажет ету сипатына байланысты анықталады. Мысалы, бір компьютер бір уақытта веб-сервер және файл-сервер бағдарламалық құралдарын іске қосып, әртүрлі сұраныстар жіберетін клиенттерге әртүрлі деректерді ұсына алады. Клиенттік бағдарламалық құрал сол компьютердегі серверлік бағдарламалық құралмен де байланыса алады. Серверлер арасындағы байланыс, мысалы, деректерді синхрондау үшін, кейде серверлер аралық немесе серверден серверге байланыс деп аталады.

Клиент пен сервер арасындағы байланыс

Жалпы алғанда, қызмет – компьютерлік ресурстардың абстракциясы болып табылады және клиент сервердің сұранысты орындау және жауап беру кезінде қалай жұмыс істейтініне қатысты алаңдамайды. Клиентке белгілі қолданбалық протоколды, яғни сұралған қызмет үшін деректердің мазмұны мен пішімін түсіну жеткілікті. Клиенттер мен серверлер сұрау-жауап үлгісі бойынша хабар алмасады. Клиент сұраныс жібереді, ал сервер жауап қайтарады. Мұндай хабар алмасу – процестер аралық байланыстың мысалы. Байланыс үшін компьютерлердің ортақ тілі болуы керек, сондай-ақ клиент пен сервер не күтетінін білу үшін ережелерді сақтауы тиіс. Байланыс тілі мен ережелері байланыс протоколында белгіленеді. Барлық протоколдар қолданбалық қабатта жұмыс істейді. Қолданбалық қабат протоколы диалогтың негізгі үлгілерін анықтайды. Деректер алмасуды одан әрі ресмилендіру үшін сервер қолданбалық бағдарламалау интерфейсін (API) іске асыруы мүмкін. API – қызметке қол жеткізу үшін абстракциялық қабат. Байланысты белгілі бір мазмұн форматымен шектеу арқылы деректерді талдау оңайлатылады. Қол жеткізуді абстракциялау арқылы платформалар аралық деректер алмасу жеңілдеді. Сервер қысқа мерзім ішінде көптеген клиенттерден сұраулар қабылдауы мүмкін. Компьютер бір мезгілде шектеулі санда ғана тапсырмаларды орындай алады және клиенттерден келіп түскен сұрауларды өңдеу үшін кезектілік жүйесіне сүйенеді. Қызметтен теріс пайдалануды болдырмау және қолжетімділікті арттыру үшін серверлік бағдарламалық құрал клиенттерге қолжетімділікті шектеуі мүмкін. Қызметтен бас тарту шабуылдары сервердің сұраныстарды өңдеу міндетін пайдаланып, оны шамадан тыс сұраныстармен жүктеуге бағытталған. Егер клиент пен сервер арасындағы байланыста құпиялы ақпарат алмасылса, шифрлау қолданылуы керек.

Мысал

Банктің клиенті веб-браузер арқылы онлайн-банкинг қызметтеріне қол жеткізген кезде (клиент), клиент банк веб-серверіне сұрау жібереді. Клиенттің кіру деректемелері деректер базасында сақталуы мүмкін, ал веб-сервер деректер базасы серверіне клиент ретінде жүгінеді. Қолданба сервері қайтарылған деректерді банк бизнестік логикасын қолдану арқылы өңдеп, нәтижені веб-серверге жібереді. Соңында веб-сервер нәтижені клиенттің веб-браузеріне қайтарады, осылайша оны көрсетуге болады. Клиент-сервер хабар алмасу тізбегінің әр қадамында компьютер сұрауды өңдеп, деректерді қайтарады. Бұл – сұрау-жауап хабарлама үлгісі. Барлық сұраулар орындалған соң тізбек аяқталады және веб-браузер деректерді клиентке көрсетеді. Бұл мысал клиент-сервер моделіне қолданылатын жобалау үлгісін көрсетеді: жауапкершілікті бөлу.

Сервер жағында

Серверлік жақ – серверде іске қосылатын бағдарламалар мен операцияларды білдіреді. Бұл клиенттік жақта іске қосылатын бағдарламалар мен операциялардан өзгеше.

Компьютерлік қауіпсіздік

Компьютерлік қауіпсіздік саласында серверлік жағынан болатын осалдықтар немесе шабуылдар клиенттік жақта немесе екеуінің арасында емес, серверлік компьютер жүйесінде пайда болатын жағдайларды білдіреді. Мысалы, шабуылшы веб-қосымшадағы SQL инъекциясының осалдығын пайдаланып, сервердің деректер базасындағы деректерді зардапты түрде өзгертуге немесе рұқсатсыз қол жеткізуге тырысуы мүмкін. Басқа жағдайда, шабуылшы негізгі операциялық жүйедегі осалдықтарды пайдаланып серверлік жүйеге бұзылып кіруі мүмкін, содан кейін сервердің уәкілетті әкімшілері сияқты деректер базасына және басқа да файлдарға қол жеткізе алады.

Клиенттік жағы

Клиент жағы – компьютерлік желіде клиент тарапынан орындалатын операцияларды білдіреді.

Жалпы түсініктер

Әдетте, клиент – бұл пайдаланушының жеке компьютерінде, смартфонында немесе басқа құрылғыда іске қосылатын, мысалы веб-браузер сияқты компьютерлік бағдарлама, және қажет болған жағдайда серверге қосылады. Операциялар клиенттік жағында орындалуы мүмкін, себебі олар клиентте бар, бірақ серверде жоқ ақпаратқа немесе мүмкіндіктерге қол жеткізуді талап етеді, пайдаланушы операцияларды бақылауы немесе деректер енгізуі керек болғандықтан, немесе сервердегі өңдеу қуаты барлық клиенттерге уақтылы түрде операцияларды орындау үшін жеткіліксіз болғандықтан. Сонымен қатар, егер операцияларды клиент желі арқылы деректерді жібермей-ақ орындай алса, олар аз уақыт алады, аз өткізу қабілетін пайдаланады және қауіпсіздік тәуекелі төмендейді. Сервер деректерді стандартты протоколдарға, мысалы HTTP немесе FTP сәйкес, әдеттегідей ұсынғанда, пайдаланушылар көптеген клиенттік бағдарламалардың арасынан таңдау жасай алады (мысалы, көптеген қазіргі заманғы веб-браузерлер HTTP және FTP арқылы деректерді сұрап алуға және қабылдауға болады). Көбірек мамандандырылған қолданбалар үшін бағдарламашылар өздерінің серверін, клиентін және бір-бірімен ғана қолданылатын байланыс протоколын жасай алады. Егер бағдарламалар желі арқылы деректерді жібермей немесе қабылдамай пайдаланушының жеке компьютерінде іске қосылса, олар клиенттер деп есептелмейді, сондықтан мұндай бағдарламалардың операциялары клиенттік жағындағы операциялар деп аталынбайды.

Компьютерлік қауіпсіздік

Компьютерлік қауіпсіздік тұрғысынан алғанда, клиенттік жағындағы осалдықтар немесе шабуылдар – бұл серверлік жақта немесе екеуінің арасында емес, клиенттің/пайдаланушының компьютерлік жүйесінде болатын қауіптер. Мысалы, егер серверде шифрланған файл немесе хабарлама болса және оны тек пайдаланушының компьютерлік жүйесінде сақталған кілт арқылы ғана ашуға болады, онда клиенттік шабуыл шабуылшыға шифрланған мазмұнға қол жеткізудің жалғыз мүмкіндігі болуы мүмкін. Мысалы, шабуылшы клиенттік жүйеге зиянды бағдарламаны орнатып, пайдаланушының экранын көруге, оның перне соғуларын жазуға және пайдаланушының шифрлау кілттерінің көшірмелерін ұрлауға мүмкіндік береді. Басқа жағдайда, шабуылшы клиенттік жүйеде зиянды кодты орындау үшін тұрақты түрде орналасқан зиянды бағдарламаны орнатудың қажеті болмайтын, сайттар аралық скрипттерді пайдалану арқылы осалдықтарды қолдануы мүмкін. және RFC 4. Бұл қолданыс 1970-жылдардың ортасында Xerox PARC-те жалғасты. Зерттеушілер бұл терминдерді компьютерлік желілерді бағдарламалау тілін (Decode Encode Language (DEL)) жобалау кезінде қолданды. 1992 жылға қарай «сервер» сөзі кеңінен қолданысқа енді.

Орталықтандырылған есептеу

Клиент-сервер моделі серверлердің клиенттерге қарағанда көбірек ресурстарға ие болуын талап етпейді. Керісінше, ол кез келген мақсатына сай компьютерге басқа хосттардың ортақ ресурстарын пайдалану арқылы өзінің мүмкіндіктерін кеңейтуге мүмкіндік береді. Дегенмен, орталықтандырылған есептеулер шағын саныдағы компьютерлерге көптеген ресурстарды бөліп береді. Клиенттік хосттардан орталық компьютерлерге қаншалықты көп есептеулер жүктелсе, клиенттік хосттар соншалықты қарапайым болады. Ол есептеу және сақтау үшін желілік ресурстарға (серверлер мен инфрақұрылымға) көп тәуелді. Дискі жоқ түйін тіпті операциялық жүйесін желіден жүктейді, ал компьютерлік терминалда операциялық жүйе мүлдем болмайды; ол тек серверге кіру/шығу интерфейсі болып табылады. Ал, жеке компьютер сияқты бай клиентке көптеген ресурстар беріледі және ол негізгі функцияларды орындау үшін серверге тәуелді емес. 1980 жылдардан 1990 жылдардың соңына дейін микрокомпьютерлердің бағасы төмендеп, қуаты артқан сайын көптеген ұйымдар есептеуді орталықтандырылған серверлерден, мысалы, мейнфреймдер мен миникомпьютерлерден бай клиенттерге көшірді. Бұл компьютерлік ресурстарға үлкен, жекешелендірілген бақылауды қамтамасыз етті, бірақ ақпараттық технологияны басқаруды қиындатты. 2000 жылдары веб-қосымшалар белгілі бір микроархитектура үшін жасалған қолданбалы бағдарламалық жасақтамамен бәсекелесуге жеткілікті деңгейде жетілді. Бұл жетілу, қолжетімді жаппай сақтау және қызметке бағытталған архитектураның пайда болуы 2010 жылдардағы бұлтты есептеу трендіне себеп болған факторлардың қатарында болды.

Теңдес-теңдес архитектурамен салыстыру

Клиент-серверлік модельден басқа, үлестірілген есептеу қолданбалары көбінесе өзара байланыс (P2P) қолданба архитектурасын пайдаланады. Клиент-серверлік модельде сервер көбінесе көптеген клиенттерге қызмет көрсететін орталықтандырылған жүйе ретінде құрылады. Сервердің есептеу қуаты, жады және сақтау көлемі күтілетін жүктемеге сәйкес масштабталуы керек. Жүктемені теңестіру және қатеге төзімді жүйелер серверді бір физикалық машинадан асырып масштабтау үшін жиі қолданылады. Жүктемені теңестіру – бұл серверлер тобындағы бірнеше серверлер арасында желілік немесе қолданба трафигін әдістемелік және тиімді тарату. Әрбір жүктемені теңестіруші клиенттік құрылғылар мен артқы серверлер арасында орналасып, келіп түсетін сұрауларды қабылдайды және оларды орындауға қабілетті кез келген қолжетімді серверге жібереді. Өзара байланыс желісінде екі немесе одан көп компьютер (пирлер) өз ресурстарын біріктіріп, орталықтандырылмаған жүйеде байланысады. Пирлер – иерархиялық емес желідегі теңдес немесе эквивалентті түйіндер. Клиент-серверлік немесе клиенттік кезек желісіндегі клиенттерден айырмашылығы, пирлер бір-бірімен тікелей байланысады. Өзара байланыс желісінде пирлік байланыс протоколындағы алгоритм жүктемені теңестіреді, тіпті қарапайым ресурстары бар пирлер де жүктемені бөлісуге көмектесе алады. Егер түйін қолжетімсіз болса, оның ортақ ресурстары басқа пирлер ұсынғанша қолжетімді болып қалады. Идеалды жағдайда, пирлерге жоғары қолжетімділікке қол жеткізудің қажеті жоқ, себебі басқа, резервтік пирлер кез келген ресурстың тоқтау уақытын өтеуге қабілетті; пирлердің қолжетімділігі мен жүктемесі өзгерген сайын, протокол сұрауларды қайта бағыттайды. Клиент-серверлік және бас-құл жүйелері үлестірілген өзара байланыс жүйелерінің кіші категориялары ретінде қарастырылады.