Однос клиент-опслужувач

**Клиент опслужувач комуникацијата** се одвива како соработка на програмска опрема што обезбедува некој сервис, наречена опслужувач, и побарувач на сервисот, наречен клиент. Ова е најчест вид на комуникација кај еден дистрибуиран компјутерски систем. Најчесто клиентите комуницираат со опслужувачите преку компјутерска мрежа, но некогаш можат и да припаѓаат и на ист систем. Вообичаено е тие да се инсталирани на различна машинска опрема. Затоа многу често машината на која се наоѓа опслужувачот се нарекува опслужувач, а таа на која функционира клиентот се нарекува клиент. опслужувач машината може да извршува една или повеќе опслужувачки програми кои ги делат своите ресурси со клиентите. Клиентот не дели ништо од сопствените ресурси, но побарува содржини или сервиси кои се наоѓаат на опслужувачот. Од тие потреби, клиентот иницира комуникација со опслужувачот.

## Опис
Клиент-опслужувач одликите ја опишуваат врската на кооперативните програми во апликацијата. опслужувачките компоненти овозможуваат функции или сервиси до еден или повеќе клиенти, што иницира барање за сервисот. 
Функциите како што се размената на меил, пристапот до веб и базите на податоци, се изградени на клиент-опслужувач моделот. На пример, пребарувачот е клиентска програма која работи на компјутерот на корисникот и која може да пристапи до информација зачувана на опслужувачот на Интернет. Корисниците кои пристапуваат до банкарските сервиси од нивниот компјутер користат пребарувач како клиент за да испратат барање до опслужувачот на банката.    
Овој програм може да го препрати барањето до сопствениот податочен клинтски програм кој праќа барање до податочен опслужувач на друга банка за да ги повика бараните информации. Балансот ќе биде вратен до податочниот клиент на банката, а резултатите од клиентскиот пребарувач ќе се испишат на екранот на корисникот. 
Секоја инстанца од клиентскиот софтвер може да испрати податочно барање до еден или повеќе поврзани опслужувачи. опслужувачите можат да го прифатат барањето, да го обработат, и да ја вратат бараната информација до клиентот. Иако овој концепт може да биде применет од различни причини на многу различни видови на апликации сепак архитектурата воглавном останува непроменета.

Повеќето базични типови на клиент-опслужувач архитектурата користат само два типа на домаќини: клиенти и опслужувачи. Оваа архитектура исто е позната и под името two-tier, и им дозволува на направите да делат податотекаови и ресурси. Two-tier архитектурата подразбира дека клиентот функционира како едно ниво и апликација во комбинација со опслужувачот кој функционира на друго ниво. Интернетот кој е во постојан пораст користи athree-tier архитектура.. Во оваа архитектура опслужувачката страна се состои од апликациски опслужувач (на пр. опслужувач) и податочен опслужувач (како што е SQL опслужувачот), така што трите нивоа се-клиент, апликациски опслужувач и податочна база. 
Специфичните типови на клиенти ги вклучуваат веб преварувачите, e-mail и online chat клиентите.
Специфичните типови на опслужувачи ги вклучуваат опслужувачите, ftp опслужувачите, апликациските опслужувачи, опслужувачите на податочните бази, name опслужувачите, меил и терминалните опслужувачи.
Повеќето веб сервиси се исто одреден тип на опслужувачи.

 
## Предности

-   Во повеќето случаи, клиент-опслужувач архитектурата овозможува улогите и одговорностите на компјутерскиот систем да бидат дистрибуирани на неколку независни компјутери кои меѓусебно мрежно комуницираат. 
-   Ова е голема предност за оваа архитектура затоа што овозможува лесно одржување. На пример, возможно е да се замени, поправи, догради или дури да се смени локацијата на опслужувачот додека неговите клиенти не се воопшто погодени од промената.
-   Сите податоци се чуваат на опслужувачот што овозможува нивна поголема сигурносна контрола. опслужувачите можат подобро да го контролираат пристапот и ресурсите за да гарантираат дека само оние клиенти кои имаат соодветна дозвола можат да пристапат до податоците и да ги променат.   
-   Чувањето на податоците е централизирано што ги прави лесни за администрирање.
-   Клиент-опслужувач технологиите се дизајнирани да обезбедат сигурност, лесен кориснички интерфејс и лесно користење.

## Недостатоци

-   Како што симултано расте бројот на клиентските барања до опслужувачите, така се зголемува и опасноста од нивно преоптоварување.
-   Клиент-опслужувач парадигмата има недостаток на робусност.  Кога во овој систем одреден критичен опслужувач ќе падне, клиентските барања нема да можат да бидат извршени, за разлика од Р2Р мрежите каде што ресурсите се дистрибуирани низ повеќе јазли, така што дури и ако еден од нив го напушти на пр. податотекаот којшто се симнува (download) некој од останатите јазли сè уште ќе ги има потребните податоци за да се комплетира симнувањето на податотекаот.

## Преглед на протоколот

опслужувачите “слушаат“ за врска на TCP/IP порта или на локален сокет. Кога клиентот се поврзува, најпрво се извршува автентицирање, кое ако е успешно сесијата може да започне. Клиентот испраќа наредба и опслужувачот одговара со податоци или со соодветна порака на командата која била зададена. Кога клиентот е готов, праќа специјална команда со која му кажува на опслужувачот дека сесијата може да биде затворена.

Базичната единица за комуникација е пакетот во апликацискиот-слој. Командите се состојат од еден пакет, а одговорите можат да содржат и по неколку пакети.

## Формат на пакетот

Има два типа на пакети: компресирани и некомпресирани. Одлуката кој од нив ќе биде користен во текот на сесијата се прави во handshake фазата заедно со автентифицирањето, и зависи од сетинзите и можностите на клиентот и опслужувачот. 
Независно од тоа дали пакетите се компресирани или не, тие се поделени во две категории:
-   команди испратени од клиентот и
-   одговори испратени од опслужувачот.
опслужувачките пакети се поделени во четири категории:
-   data packets  (податочни пакети)
-   end-of-data stream пакети
-   success report (OK) пакети и 
-   error message пакети (порака дека има грешка)

## Пример за конкретна употреба на клиент-опслужувач моделот
Да претпоставиме дека се кликнува на линк кој треба да не однесе до одредена статија на Ezinearticles страната.
1.   Најпрво се кликнува на линкот кој би требало да не однесе до саканата страна
2.   Клиентот (пребарувачот на корисникот) ја чита содржината на линкот, и ја знае адресата на опслужувачот кој ја содржи страната која корисникот сака да ја посети. 
3.   Во овој случај, опслужувачката адреса е наоѓалиштето на мрежното место, а страната која опслужувачот треба да ја врати е страната со статијата која корисникот сака да ја прочита.
4.   Пребарувачот испраќа http барање до EzineArticles опслужувачот.
5.   опслужувачот проверува дали бараната страна постои и ја враќа содржината на статијата до пребарувачот на корисникот со http ressponse порака.

## Заклучок

Клиент-опслужувач моделот генерално беше развиен за да дозволи повеќе корисници да имаат пристап до податочните апликации. Нуди зголемена размерливост, и поддржува модуларни апликации што ја олеснува работата при создавање на софтвер.   
Клиент-опслужувач е само еден пристап за менаџирање на мрежните апликации. Примарната алтернатива, peer-to-peer мрежното работење, каде што сите направи имаат еднаква способност за разлика од сцецилизираните клиент и опслужувач улоги. Споредено со клиент-опслужувач архитектурата, peer-to-peer мрежното работење нуди некои предности како што се поголема флексибилност за справување со големиот број на клиенти. 
Клиент-опслужувач архитектурата генерално нуди предност за сигурно чување на податоците.

## Наводи

## Надворешни врски
http://www.codewalkers.com/c/a/Server-Administration/Client-Server-Communication/