PPP

**PPP** (engl. *Point-to-Point Protocol*) koristi se za izravno povezivanje dvaju čvorova računalne mreže. Omogućuje povezivanje računala serijskim, telefonskim ili optičkim kabelom, pomoću mobilnih telefona te posebno oblikovanom radio ili satelitskom vezom. Većina ISP (engl. *Internet Service Provider*) poslužitelja koristi ovaj protokol za omogućavanje pristupa Internetu preko telefonskog priupključka korištenjem modema (engl. *dial-up*). LUgrađena (enoioouuiugl. *encapsulated*) inačica PPP protokola, PPPoE (engl. *Point-to-Point over Ethernet*) protokol, se na sličan način koristi kod DSL (engl. *Digital Subscriber Line*) pristupa Internetu. Kod ovog protokola se PPP podatkovni paketi umeću u Ethernet pakete.

PPP protokol se koristi na drugom, podatkovnom, sloju OSI (engl. *Open System Interconnection*) mrežnog modela za povezivanje preko sinkronih i asinkronih veza. Ovaj je protokol u velikoj mjeri zamijenio starije protokole, kakav je npr. SLIP (engl. *Serial Line Internet Protocol*) protokol, i protokole telefonskih kompanija, kao što je LABP (engl. *Line Access Balanced Protocol*) protokol iz X.25 skupine protokola. PPP je građen tako da omogućuje rad s brojnim protokolima mrežnog sloja, uključujući IP (engl. *Internet Protocol*), IPX (engl. *Internetwork Packet Exchange*) i AppleTalk protokole.

## Osnove serijske komunikacije
U kontekstu telekomunikacije i računalnih znanosti pod pojmom serijske komunikacije podrazumijeva se prijenos podataka slijednim slanjem pojedinačnih bitova komunikacijskim medijem. Oprečan pristup ovome je paralelna komunikacija kod koje se svi bitovi pojedinog simbola šalju istovremeno. Zbog skupoće kablova i poteškoća sa sinkronizacijom signala serijski prijenos podataka koristi se za komunikaciju preko većih udaljenosti (eng. long-haul) i kod većine računalnih mreža.

Napredak tehnologije kojim se omogućuju veće brzine prijenosa kao i smanjenje broja priključaka, a samim time i cijene, razlog su sve češće primjene serijske komunikacije kod integriranih sklopova. Kod računalnih mreža pojedini bitovi koji tvore paket podatkovnog sloja OSI modela, šalju se posredstvom prvog sloja prema fizičkom mediju.

Podaci se fizičkim medijem prenose:
* NRZ-L (engl. *Nonreturn to Zero Level*),
* DHB3 (engl. *High Density Binary 3*) ili
* AMI (engl. *Alternate Mark Inversion*) prijenosnim kodom.

Primjeri standarda koji definiraju serijsku komunikaciju su:
* RS-232 (engl. *Recommended Standard 232*),
* V.35 i
* HSSI (engl. *High Speed Serial Interface*).
 
Serijski komunikacijski kanal moguće je dijeliti između više uređaja ispreplitanjem signala podjelom vremena (engl. *Time-Division Multiplexing* - TDM). TDM ispreplitanje omogućuje prijenos više signala, ili podataka iz više izvora, preko zajedničkog komunikacijskog kanala te rekonstrukciju izvornih podataka na odredištu.

Postupak ispreplitanja provodi se odabirom dijela ulaznih signala. To je najčešće jedan bit ili jedan oktet (engl. byte) svakog signala pa se TDM postupci dijele na:
* one koji isprepliću bitove (engl. *bit-interleaving*) i 
* one koji isprepliću oktete (engl. *byte-interleaving*).
 
## Osnove funkcionalnosti PPP protokola
PPP protokol namijenjen je jednostavnom povezivanju dvaju ravnopravnih korisnika dvosmjernom (engl. *full-duplex*) vezom koja omogućuje simultano dvosmjerno dostavljanje paketa redoslijedom kojim su poslani. Ovaj protokol omogućuje povezivanje različitih računala, premosnika i usmjerivača, a njegove osnovne funkcionalnosti su:
* ovijanje (engl. *encapsulation*) protokola mrežnog sloja,
* upravljanje vezom,
* interakcija s mrežnim slojem i
* podesivost.

### Ovijanje protokola mrežnog sloja
Ovijanje omogućuje istovremeni prijenos podatkovnih paketa različitih protokola preko iste veze. Postupak omatanja je osmišljen tako da podržava širok raspon arhitektura mrežnih uređaja. Ako se ovijanje izvodi korištenjem uobičajenog HDLC oblika podatkovnih paketa izvornim podacima dodaje se 8 okteta dodatnih informacija. U primjenama s ograničenom propusnošću komunikacijskog kanala ovijanje je moguće implementirati uz samo 2 ili 4 dodatna okteta. Veličina zaglavlja stvorenog ovijanjem ograničena je na 32 bita dok duljina podataka dodanih na kraju paketa nije ograničena.

### Upravljanje vezom
Upravljanje vezom definirano je LCP (engl. *Link Control Protocol*) protokolom. Ovaj protokol provodi usuglašavanje postavki formata ovijanja i veličine podatkovnih paketa, uočava pogreške proizišle iz neispravnih postavki, prekida vezu te omogućuje autorizaciju korisnika i otkrivanje neispravnog funkcioniranja veze.

### Interakcija s mrežnim slojem
PPP veze često imaju poteškoće u interakciji s protokolima mrežnog sloja. Na primjer, pridjeljivanje IP adresa i upravljanje njima složene su zadaće i u LAN (engl. *Local Area Network*) okruženjima, a kod PPP veza s prospajanjem krugova (engl. *circuit switched*) ovo je naročito težak problem. Za svaki protokol mrežnog sloja postoji poseban NCP (engl. *Network Control Protocol*) protokol koji rješava specifične poteškoće u interakciji s PPP vezama.

### Podesivost
PPP veze su osmišljene kao vrlo podesive te su građene tako da prvotne postavke zadovoljavaju većinu uobičajenih konfiguracija. Prilikom implementacije moguće je unaprijediti izvorne postavke, a nove postavke se prilikom povezivanja automatski šalju drugoj strani. Također je moguće podesiti posebne postavke veze koje joj omogućuju rad u inače neprikladnim uvjetima. Samopodešavanje PPP veza implementirano je opsežnim mehanizmom usuglašavanja postavki kod kojega svaka strana veze drugoj prenosi svoje mogućnosti i zahtjeve. Ovakvi mehanizmi ugrađeni su u LCP protokol, u skupinu NCP protokola i u druge kontrolne protokole.

## Ovijanje PPP protokola i sadržaj paketa
PPP ovijanje koristi se za ujednačavanje podatkovnih paketa različitih protokola mrežnog sloja. Na taj način nastaju novi paketi s oznakama kraja i početka.  PPP podatkovni paket sastoji se od sljedećih elemenata:
* oznaka protokola ,
* podaci i
* dopuna.

### Ovijanje PPP paketa na nižem OSI sloju
PPP paketi opisani u prethodnim poglavljima ovijaju se ovojnicom protokola nižeg OSI sloja koji mogu osigurati dodatne funkcije kao što je npr. provjera integriteta poruke dodavanjem kontrolne sume. PPP paketi u serijskoj komunikaciji obično su ovijeni ovojnicom sličnom onoj koju daje HDLC protokol i koja sadrži sljedeće elemente:
* zastavica predstavlja binarni niz „01111110“ koji označuje početak i kraj paketa,
* adresa je binarni niz „11111111“, a predstavlja standardnu adresu emitiranja (engl. *broadcast address*) pri čemu PPP protokol ne pridjeljuje jedinstvene adrese pojedinim mrežnim čvorovima,
* kontrolni oktet sadrži binarni niz „00000011“ i predstavlja zahtjev za slanjem korisničkih podataka,
* datagram sadrži PPP paket,
* FCS oktet sadrži kontrolnu sumu za provjeru integriteta.

## LCP i NCP upravljački protokoli
PPP protokol građen je slojevito.  PPP protokol je većim dijelom protokol drugog, podatkovnog, sloja OSI modela. Komunikaciju s fizičkim slojem provodi LCP protokol, a interakcijom s nadređenim protokolima mrežnog sloja upravlja odgovarajući NCP protokol, ovisno o korištenim protokolima mrežnog sloja. 
 
### LCP protokol
LCP protokol se naslanja na fizički sloj OSI modela. Moguće ga je podesiti tako da koristi jedno od sljedećih sučelja:
* asinkrono serijsko,
* sinkrono serijsko,
* HSSI ili
* ISDN sučelje.
 
Služi za uspostavu linka, testiranje linka, pregovaranje o opcijama, te za raskid linka po završetku prijenosa.

Pored oblikovanja komunikacije u skladu s korištenim fizičkim sučeljem ovaj protokol provodi sljedeće zadatke:
* Autorizacija – od pozivatelja, korisnika koji otvara vezu, se zahtijevaju identifikacijski podaci kako bi se utvrdilo ima li on dozvolu mrežnog administratora za uspostavljanje određene PPP veze. Autorizacijske poruke prenose se PAP ili CHAP protokolom.
* Kompresija – njome se postiže veća propusnost PPP veze smanjenjem količine podataka unutar pojedinog paketa. LCP protokol na odredištu vrši dekompresiju paketa. Moguće je korištenje različitih kompresijskih algoritama, npr. Stacker i Predictor algoritama.
* Otkrivanje pogrešaka – omogućuje stvaranje pouzdanih PPP veza bez petlji (engl. *loop-free*). 
* Upravljanje višestrukim vezama – uspostavljanjem višestrukih PPP veza (engl. *multilink*) između dva mrežna čvora postiže se veća propusnost. Na ovaj način moguće je iskoristiti propusnost dvaju ili više fizičkih komunikacijskih kanala, kakvi su npr. analogni ili ISDN modemi. 
* Ostvarivanje povratnih poziva – povratni pozivi (engl. *callback*) implementiraju se u slučaju potrebe za povišenom razinom sigurnosti. Klijent u tom slučaju poziva poslužitelja, predaje zahtjev za uspostavom veze i prekida poziv. Na temelju klijentova zahtjeva i vlastitih postavki poslužitelj tada otvara ili ne otvara vezu prema klijentu, odnosno ostvaruje povratni poziv.

### NCP protokol
Osnovne prednosti PPP protokola su njegova prilagodljivost i nadogradivost. Iako je prvotno osmišljen za prenošenje IP podatkovnih paketa ostavljena je mogućnost proširenja funkcionalnosti i na prenošenje paketa drugih protokola mrežnog sloja te na istovremeno prenošenje paketa različitih protokola.

Podržavanje višestrukih protokola 3. sloja jedinstvenim i kompaktnim PPP protokolom zahtijevalo bi poznavanje specifičnih karakteristika svakog podržanog protokola. Osim toga, u opisanom slučaju bila bi potrebna neprestana nadogradnja takvog PPP protokola kako bi se podržali novi protokoli mrežnog sloja i kako bi se održala kompatibilnost s postojećim protokolima za koje su definirani novi parametri.

Umjesto opisanog neprilagodljivog modela, PPP protokol je građen modularno tako da je za svaki podržani protokol mrežnog sloja definiran poseban NCP protokol. Pojedini NCP protokol upravlja interakcijom s pridruženim mu protokolom mrežnog sloja rješavajući pri tom specifične poteškoće vezane uz njega.

Primjeri NCP protokola su: IPCP (engl. *Internet Protocol Control Protocol*), IPXCP (engl. *Internetwork Packet Exchange Control Protocol*) i ATCP (engl. *AppleTalk Control Protocol*) protokoli koji su redom namijenjeni uspostavljanju, podešavanju i prekidanju komunikacije prema IP, IPX, odnosno AppleTalk protokolu preko PPP veze. Navedeni protokoli, kao i ostali NCP protokoli, koriste mehanizam razmjene podatkovnih paketa jednak onom LCP protokola, a prihvaćaju se samo paketi pristigli nakon početka mrežne faze PPP protokola.

## Dijagram stanja PPP protokola
Postupak uspostavljanja, podešavanja, održavanja i prekidanja PPP veze provodi se u pet faza:
# veza prekinuta,
# uspostavljanje veze,
# autorizacija,
# mrežna faza i
# prekidanje veze.

### Faza prekinutosti veze
Svaka PPP veza nužno započinje i završava ovom fazom. Faza prekinutosti veze (engl. *link dead*) završava obaviješću o spremnosti fizičkog sloja na uspostavljanje veze. Takva obavijest može na primjer potjecati od algoritma uočavanja nosioca signala ili može nastati uslijed djelovanja administratora. Završetak ova faze znači prelazak PPP algoritma u fazu uspostavljanja veze.

### Faza uspostavljanja veze
Tijekom faze uspostavljanja veze (engl. *link establishment phase*) LCP protokol se koristi za razmjenu *Configure* podatkovnih paketa kojima se prenose postavke veze. Razmjena takvih paketa je završena kada su obje strane poslale i primile *Configure-Ack* pakete. Pretpostavljeni su izvorni iznosi svih postavki veze koje nisu izmijenjene *Configure* paketima.

Tijekom ove faze podešavaju se samo postavke neovisne o pojedinim protokolima mrežnog sloja. Podešavanje postavki vezanih uz protokole trećeg sloja provodi se tijekom mrežne faze od strane odgovarajućih NCP protokola.

U ovu fazu moguće je, osim iz faze prekinutosti veze, ući i iz mrežne faze te iz faze autorizacije u slučaju primitka *Configure-Request* paketa koji predstavlja zahtjev za ponovnim podešavanjem postavki PPP veze.

### Faza autorizacije
Izvorne postavke PPP protokola ne zahtijevaju autorizaciju mrežnih čvorova koji uspostavljaju PPP vezu. U pojedinim primjenama moguće ju je zahtijevati prije razmjene paketa protokola mrežnog sloja. Tada je tijekom faze uspostavljanja veze potrebno odrediti korišteni autorizacijski protokol. Autorizaciju je poželjno provesti čim prije nakon završetka faze uspostave veze. U isto vrijeme moguć je početak postupka utvrđivanja kvalitete uspostavljene veze. Zbog toga je unutar pojedine implementacije PPP protokola potrebno spriječiti onemogućavanje autorizacije uslijed razmjene paketa za određivanje kvalitete veze.

Prelazak u mrežnu fazu nije dozvoljen do uspješnog okončanja autorizacije. U slučaju neuspjele autorizacije iz ove faze prelazi se u fazu prekidanja veze. Tijekom autorizacije dozvoljena ja razmjena isključivo LCP paketa, autorizacijskih paketa i paketa kojima se nadzire kvaliteta veze. Svi ostali paketi primljeni tijekom ove faze zanemaruju se.

Autorizaciju je preporučeno implementirati tako da se izostanak odgovora na zahtjev ne interpretira kao neuspjela autorizacija već da se u takvom slučaju provodi neki od mehanizama ponovnog slanja zahtjeva. Kod takvih implementacija autorizacija se smatra neuspjelom tek nakon određenog broja pokušaja.

### Mrežna faza
Nakon završetka prethodno opisanih faza potrebno je posebno podesiti sve korištene protokole mrežnog sloja. Ovu zadaću rješavaju NCP protokoli, čije djelovanje je moguće pokrenuti i prekinuti u bilo kojem trenutku unutar ove faze.

Nakon završetka podešavanja potrebnih NCP protokola PPP protokol prenosi podatkovne pakete odgovarajućih protokola mrežnog sloja. Primljeni paketi podržanog protokola mrežnog sloja za kojega odgovarajući NCP protokol nije podešen se zanemaruju, a paketi nepodržanih protokola vraćaju se unutar *[[Protocol-Reject]]* paketa.

Tijekom ove faze preko uspostavljene veze prenose se LCP, NCP i paketi protokola mrežnog sloja.

### Faza prekidanja veze
PPP protokol može prekinuti vezu u bilo kojem trenutku. Prekid može biti uzrokovan gubitkom signala nosioca, neuspjelom autorizacijom, degradacijom kvalitete veze ili njenom neaktivnošću, a moguće je i zatvaranje PPP veze od strane administratora. PPP protokol aktivne protokole mrežnog sloja obavještava o prekidanju veze kako bi mogli izvršiti potrebne postupke prije konačnog zatvaranja veze.

Prekidanje veze provodi LCP protokol razmjenom Terminate paketa. Nakon razmjene ovih paketa fizičkom sloju šalje se zahtjev za isključivanjem kako bi se osiguralo prekidanje PPP veze. Ovo je naročito bitno u slučaju zatvaranja veze uslijed neuspjele autorizacije. Pošiljatelj *Terminate-Request* paketa, kojim se zahtjeva gašenje veze, isključuje se nakon primitka *Terminate-Ack* paketa, kojim druga strana potvrđuje primitak zahtjeva, ili nakon isteka određenog vremena (određenog Restart parametrom) od slanja spomenutog zahtjeva. Primatelj *Termonate-Request* paketa čeka isključenje druge strane i istjecanje najmanje jednog Restart vremenskog perioda prije vlastitog isključivanja. Svi paketi primljeni tijekom ove faze koji ne pripadaju LCP protokolu zanemaruju se.