01.08. Klienta-servera modelis
01.08. Klienta-servera modelis
Vairums tīkla lietotņu ir uzrakstītas ar pieņēmumu, ka viena komunikācijas puse ir klients un otra - serveris. Lietotnes mērķis ir likt serverim sniegt kādu noteiktu servisu klientiem. Serverus var iedalīt divās kategorijās - vienpavediena jeb iteratīvie un daudzpavedienu jeb laiksakritīgie. Iteratīvs serveris veic iterācijas šādos soļos:
I1. Gaidīt, kamēr ierodas klienta pieprasījums. I2. Apstrādāt klienta pieprasījumu. I3. Nosūtīt atbildi atpakaļ klientam, kurš sūtīja pieprasījumu. I4. Iet atpakaļ uz I1 soli.
Vienpavediena servera galvenais ierobežojums ir tas, ka I2 solim ir vajadzīgs laiks. Šajā laikā citus klientus nevar apkalpot. Daudzpavedienu serveris toties veic sekojošus soļus:
Cl. Gaidīt, kamēr ierodas klienta pieprasījums. C2. Sākt jaunu servisa pavedienu, lai apstrādātu šī klienta pieprasījumu. (Tehniskās realizācijas līmenī tas var nozīmēt ne vien pavedienu, bet arī jaunu procesu jeb uzdevumu, atkarībā no tā, ko atbalsta konkrētā operētājsistēma.) Šis jaunizveidotais servisa pavediens apstrādā visu klienta pieprasījumu. Kad tas ir pabeigts, jaunais servisa pavediens beidz darbu. C3. Iet atpakaļ uz soli C1.
Daudzprocesoru servera priekšrocība ir tā, ka šāds serveris savairo servisa pavedienus, kas apstrādā klientu pieprasījumus. Katram klientam būtībā pieder savs neatkarīgs pavediens (kurš no klienta redzesviedokļa nav atšķirīgs no neatkarīga servera). Pieņemot, ka operētājsistēma pieļauj multiprogrammēšanu, vairākus klientus var apkalpot vienlaicīgi.
Iemesls, kādēļ mēs kategorizējam serverus, nevis klientus ir tāds, ka klients parasti nevar pateikt, vai tas sazinās ar iteratīvu (vienpavediena) serveri vai daudzpavedienu serveri.
Bieži ir spēkā likumsakarība - TCP serveri ir daudzpavedienu, bet UDP serveri ir vienpavediena, bet ir daži izņēmumi. UDP protokola iespaidu uz tā serveriem aplūkosim 11.12.nodaļā, un TCP iespaidu uz tā serveriem - 18.11. nodaļā.