VIII. PRIJENOSNI SLOJ (Transport)
- prijenosni sloj (transport layer) zadužen je za
prijenos podataka od izvorišnog do odredišnog računala
- zadatak prijenosnog sloja je osigurati efikasnu i
pouzdanu uslugu za aplikacijski sloj (ili sloj sjednice, ako postoji)
- zadaci:
- usluge za više slojeve
- adresiranje
- uspostavljanje veze
- oslobađanje veze
- kontrola toka
- multipleksiranje
- obnavljanje nakon pada
1.1 Usluge za više slojeve
- prijenosni entitet (transport entity) -
hardver i/ili softver u prijenosnom sloju (u jezgri operacijskog sustava,
kao poseban korisnički proces, na sučelju mrežne kartice...) koji obavlja
usluge za više slojeve
- logički odnos između mrežnog, prijenosnog i
aplikacijskog sloja:
Slika: Odnos
mrežnog, prijenosnog i aplikacijskog sloja:
(Tanenbaum, 1996)
- kao što postoje 2 tipa mrežnih usluga (spojna -
connection-oriented i bespojna - conectionless), tako postoje i
2 tipa prijenosnih usluga
- općenito vrijedi da su usluge mrežnog i prijenosnog
sloja slične s tom razlikom da prijenosni sloj nudi bolju kvalitetu tih
usluga
- primitivi prijenosnog sloja trebaju biti dizajnirani
neovisno od primitiva mrežnog sloja koji se razlikuju od mreže do mreže;
tako se programi aplikacijskog sloja mogu pisati i mijenjati neovisno o
tipu mreže
=> gornji slojevi su izolirani od tehnologije, dizajna i implementacije
podmreže
- iz tog razloga se često razlikuju slojevi od 1-4 kao
niži slojevi koji osiguravaju uslugu prijenosa (transport service
provider) od viših slojeva koji su korisnici usluge prijenosa (transport
service user)
- prijenosni sloj ima ključnu poziciju u toj podjeli jer
je na granici između davanja i korištenja usluge pouzdanog prijenosa
podataka
1.2 Primitivi prijenosne usluge
- primitivi dozvoljavaju korisniku prijenosnog sloja (to
je aplikacijski program) da dohvati prijenosnu uslugu; svaka prijenosna
usluga ima svoje vlastite primitive
- glavne razlike u odnosu ne mrežnu uslugu:
- spojna prijenosna usluga (connection-oriented)
je pouzdana i tako nadograđuje nepouzdanu mrežu
- mrežnu uslugu koriste samo prijenosni entiteti i
korisnici ne moraju poznavati mrežne primitive
- prijenosne primitive koriste aplikacijski programi,
te ih programeri
moraju poznavati
- TPDU (Transport Protocol Data Unit) -
poruke koje prijenosni entitet šalje drugom prijenosnom entitetu;
razmjenjuju ih prijenosni slojevi na različitim računalima i sadržane su u
paketima koje razmjenjuju mrežni slojevi, paketi su uključeni u okvire (frames)
koje razmjenjuju slojevi prijenosa podataka:

Slika: TPDU,
paketi i okviri
(Tanenbaum, 1996)
- primjer primitiva prijenosne usluge koji dozvoljavaju
aplikaciji (npr. sa serverom i više udaljenih klijenata) da uspostavi,
koristi i oslobodi vezu:
|
Primitiv |
Poslani TPDU |
Značenje |
| LISTEN |
(ništa) |
Blokira dok neki proces ne pokuša uspostaviti vezu |
| CONNECT |
CONNECTION REQ. |
Aktivni pokušaj
uspostavljanja veze |
| SEND |
DATA |
Slanje informacija |
| RECEIVE |
(ništa) |
Blokira dok ne stigne DATA TPDU |
| DISCONNECT |
DISCONNECTION REQ. |
Ova strana želi osloboditi
vezu |
- LISTEN primitiv izvršava server obično pozivajući
proceduru koja uzrokuje da se server blokira dok klijent pokušava
uspostaviti vezu
- CONNECT izvršava klijent koji želi uspostaviti vezu sa
serverom i pri tome šalje serveru CONNECTION REQUEST TPDU
- prijenosni entitet deblokira server koji je u LISTEN i
šalje CONNECTION ACCEPTED TPDU natrag klijentu, kad taj TPDU stigne do
klijenta, uspostavljena je veza
- sada s podaci izmjenjuju korištenjem SEND i RECEIVE
primitiva, kod RECEIVE je jedna strana blokirana dok čeka da druga izvrši
SEND i pošalje TPDU
- veza se oslobađa korištenjem DISCONNECT primitiva;
razlikuje se asimetrično oslobađanje veze (bilo koji korisnik šalje
DISCONNECT TPDU drugoj strani) od simetričnog (u oba smjera se veza
prekida kao da je riječ o 2 samostalne veze, tj. obje strane vrše
DISCONNECT)
Berkeley Sockets (spojne točke)
- skup prijenosnih primitiva (socket primitiva)
koje koristi Berkeley UNIX za TCP:
| Primitive |
Značenje |
| SOCKET |
Kreira novu komunikacijsku krajnju
točku (end point) - bez adrese |
| BIND |
Socket-u pridružuje lokalnu
adresu |
| LISTEN |
Oglašava spremnost za prihvaćanjem
veze; daje veličinu stoga za spremanje dolazećih poziva |
| ACCEPT |
Prihvaća se veza |
| CONNECT |
Aktivni pokušaj
uspostavljanja veze |
| SEND |
Slanje nekih podataka preko veze |
| RECEIVE |
Primanje
nekih podataka preko veze |
| CLOSE |
Simetrično oslobađanje veze |
- prijenosna usluga se implementira pomoću prijenosnog
protokola (transport protocol) koji se koristi između 2
prijenosna entiteta
- prijenosni protokol sličan je protokolu podatkovne veze
(data link) jer oba trebaju osigurati i pravilan slijed podataka,
te kontrolu pogreški i toka

Slika: Okolina
sloja podatkovne veze
i podatkovnog sloja
(Tanenbaum, 1996)
- glavne razlike ovise o okolini u kojoj ta dva
protokola djeluju:
- kod sloja podatkovne veze ne treba specificirati čvor
s kojim se komunicira (svaka izlazna linija jedinstveno određuje taj
čvor); kod prijenosnog sloja potrebno je adresiranje odredišta
- početno uspostavljanje veze kompliciranije je kod
prijenosnog sloja
- sposobnost podmreže da sprema pakete (“sakrije” paket
koji se nakon nekog vremena iznenada ponovo pojavi) zahtjeva kod
prijenosnog sloja posebne protokole
- pohranjivanje podataka (buffering) i kontrola
toka zahtijevaju kod prijenosnog sloja poseban pristup zbog velikog
broja različitih veza
2.1 Adresiranje
- kad aplikacijski proces želi uspostaviti vezu sa drugim
udaljenim aplikacijskim procesom, mora točno navesti koji je to proces
- metoda koja se za to koristi je da se definiraju
krajnje točke na kojoj procesi osluškuju da li ima zahtjeva za
uspostavljenjem veze - npr. na Internetu su te krajnje točke parovi (IP
adresa, lokalni port)
- općeniti naziv za prijenosne krajnje točke je TSAP
(Transport Service Access Point) - npr. port - dok je analogna krajnja točka
mrežnog sloja NSAP (Network Service Access Point) - npr. IP adresa
- odnos između NSAP, TSAP, mrežne veze (od NSAP do NSAP)
i prijenosne veze (od TSAP do TSAP) za podmrežu:

Slika: TSAP, NSAP
i veze
(Tanenbaum, 1996)
- TSAP imaju pridružene adrese, a određene usluge
(procesi na serveru) vežu se na TSAP sa nekom adresom
- da bi se pronašla TSAP adresa koja odgovara danom imenu
usluge, mogu se koristiti ili stalne TSAP adrese za usluge (moraju
ih unaprijed znati korisnički procesi koji zahtijevaju usluge od
servera) ili neke
drugačije sheme:
- initial connection protocol - umjesto da svaki
server osluškuje na unaprijed poznatom TSAP, na računalu postoji posebni
poslužitelj procesa (process server) na koji se spoje
potencijalni korisnici neke usluge, zatim taj poslužitelj pronalazi TSAP
koji odgovara traženoj usluzi
- postoji posebni proces koji se zove poslužitelj
imena (name server) (ili poslužitelj kazala -
directory server), korisnik uspostavlja vezu sa tim poslužiteljem
i navodi ime usluge, a poslužitelj mu natrag šalje TSAP adresu; klijent
oslobađa vezu s poslužiteljem imena i uspostavlja novu s traženom
uslugom
2.2 Uspostavljanje veze
- prijenosni entitet šalje CONNECTION REQUEST TPDU
odredištu i čeka na CONNECTION ACCEPTED odgovor
=> problem se javlja jer mreža može izgubiti, spremiti ili duplicirati
pakete
- potrebno je koristiti posebne algoritme za pouzdano
uspostavljanje veze, posebno kako ne bi došlo do duplikata zbog zastoja
podmreže (delayed duplicate problem)
- da bi se spriječilo iznenadno pojavljivanje paketa za
koje se mislilo da su izgubljeni, a koji su bili samo dugo spremljeni u
podmreži (zakašnjeli paketi), ograničava se životni vijek paketa (packet
lifetime) na neki poznati maksimum koristeći neku od tehnika:
- ograničavanje dizajna podmreže - koriste se
metode koje sprečavaju da paketi kruže po mreži
- stavljanje brojača skokova u svaki paket -
brojač se povećava pri svakom novom prosljeđivanju paketa, a nakon što
prijeđe određenu vrijednost, paket se odbacuje
- označavanje paketa s vremenom kreiranja -
čvorovi odbacuju pakete starije od nekog propisanog vremena (zahtjeva da
satovi čvorova budu sinkronizirani)
- potrebno je ne samo uništiti zakašnjeli paket, nego i
sve njegove potvrde
- uvodi se vrijeme T jednako umnošku životnog vijeka
paketa i nekog unaprijed odabranog malog broja n
- ako se nakon slanja paketa čeka vrijeme T, neće se
pojaviti ni kopije niti njihove potvrde
Metoda za rješavanje problema zakašnjelih kopija TPDU
podataka (Tomlinson)
- osnovna ideja: osigurati da dva jednako numerirana TDPU
nikada ne mogu postojati istovremeno
- svaki host se oprema satom (binarni brojač) koji se povećava u jednakim vremenskim intervalima
- broj bitova brojača veći je ili jednak broju bitova u
rednim brojevima
- kod uspostavljanja veze TPDU su numerirani različitim
rednim brojevima, a početni redni broj je jednak nižim k bitovima
brojila
- prostor rednih brojeva mora biti dovoljno velik da
nakon isteka kruga niza brojeva nestanu TPDU s istim rednim brojem
- kada se oba prijenosna entiteta dogovore o početnom
rednom broju, dalje se za kontrolu toka koristi bilo koji protokol s
prozorom
- problem: pad hosta nakon čega prijenosni entitet ne zna
kako nastaviti niz brojeva
=> moguće rješenje: dozvoliti da nakon obnavljanja host miruje T sekundi
kako bi svi stari TPDU nestali
Sinkronizacija u tri koraka (three-way handshake)
- jedan od protokola za uspostavljanje veze koji rješava
problem vezan uz dogovor obaju strana o početnom rednom broju
- svaka strana može imati svoj redni broj

Slika:
Sinkronizacija u tri koraka
(Tanenbaum, 1996)
- kod normalne setup procedure, host 1 šalje
CONNECTION REQUEST TPDU hostu 2 i bira redni broj x; host 2
odgovara sa CONNECTION ACCEPTED TPDU (potvrđuje x i predlaže svoj
redni broj y) te host 1 potvrđuje y u prvom DATA TPDU kojeg
šalje
- ako hostu 2 stigne duplicirani CONNECTION REQUEST
TPDU (za kojeg ne zna host 1), host 2 šalje CONNECTION ACCEPTED TPDU
tražeći potvrdu od hosta 1, ali host 1 odbacuje (REJECT) pokušaj da se
veza uspostavi
- ako su duplicirani i CONNECTION REQUEST i CONNECTION
ACCEPTED TPDU, na osnovu neslaganja rednog broja TPDU (z
¹
y), host 2 će ustvrditi
da je DATA TPDU stari duplikat
kod ovog protokola ne postoji takva kombinacija starih
TPDU koja će dovesti do toga da protokol ne uspije i da se veza uspostavi
slučajno kada je hostovi ne žele
2.3 Oslobađanje (raskidanje) veze
- lakše od uspostavljanja
- razlikuju se dva stila prekidanja veze:
- simetrično - veza se promatra kao da se
sastoji od dvije jednosmjerne veze i svaka se mora osloboditi posebno
- asimetrično - veza se prekida čim je jedna
strana prekine
- asimetrično prekidanje veze može dovesti do
gubitaka podataka, na primjer:

Slika: Prekid veze
s gubitkom podataka
(Tanenbaum, 1996)
- host 2 je poslao zahtjev za prekidom veze (DR) još
dok je host 1 slao podatke, pa je došlo do gubitaka podataka
- kod simetričnog prekidanja veze host bi
nastavio primati podatke i nakon što je poslao DISCONNECT TPDU
- taj način je dobar ako svaki proces ima stalnu količinu
podataka za slanje i točno zna kada ih šalje
- inače je problem kako da se 2 hosta dogovore kada su
gotovi sa slanjem te da se veza može prekinuti
- problem koji odgovara tome je tzv. problem dvije
vojske (two-army problem)

Slika: Problem
dvije vojske
(Tanenbaum, 1996)
- plava vojska je podijeljena na 2 međusobno udaljena
dijela i može pobijediti bijelu samo ako oba dijela napadnu zajedno,
problem je kako sinkronizirati napad (tj. izmijeniti poruke između
dvaju dijelova vojske)?
- koristi nepouzdani komunikacijski kanal (put kroz
bijelu vojsku)
- ne postoji protokol koji bi omogućio takav dogovor, tj.
ako niti jedna strana nije spremna napasti (raskinuti vezu) dok nije
sigurna da će to učiniti i druga strana, do napada (raskidanja veze)
nikada neće ni doći
- u praksi se zato koriste manje pouzdani protokoli, na
pr. sinkronizacija u tri koraka (three-way handshake)
- primjeri 4 scenarija raskidanja veze:

Slika:
Primjeri 4 scenarija raskidanja veze
(Tanenbaum, 1996)
a) normalni slučaj kad host 1 šalje zahtjev za
prekid i ujedno pokreće timer za slučaj da se DR izgubi; kad DR
stigne, host 2 isto šalje DR; kad host 1 primi taj DR oslobađa vezu i
šalje potvrdu ACK; pri primitku potvrde host 2 isto prekida vezu
b) ako se izgubi ACK, veza se prekida kad
istekne timer
c) ako se drugi DR izgubi, host 1 neće primiti
očekivani odgovor, isteći će njegov timer pa će ponovo poslati
novi DR
d) slučaj kao c), samo što nisu uspjeli ni slijedeći
pokušaji slanja DR; nakon N pokušaja host 1 odustaje i prekida vezu, a
to čini i host 2 nakon što istekne njegov timer
- mogući neuspjeh protokola ako se izgube svi inicijalni
DR
=> host 1 će odustati i osloboditi vezu, ali će druga strana i dalje
ostati aktivna - dolazi do poluotvorene veze (half-open connection)
2.4 Kontrola toka i spremanje TPDU
(buffering)
- sličnost kontrole toka sa slojem podatkovne veze:
koristi se tehnika protokola s prozorima ili slična za svaku vezu kako bi
se spriječilo da pošiljaoc šalje podatke brže nego što ih primaoc može
prihvaćati
- glavna razlika: čvor ima samo nekoliko linija, dok host
može imati veliki broj veza što čini nepraktičnom upotrebu strategije sa
spremnicima (buffering ) sloja podatkovne veze
- mrežna usluga nepouzdana: TPDU se spremaju u
spremnike (buffere) na strani pošiljaoca
- kod pouzdane usluge gdje primaoc garantira da će
primiti svaki poslani TPDU, moguće je da pošiljaoc ne drži kopije TPDU
- općenito vrijedi:
- pri manjoj propusnosti i prometu u rafalima koriste
se spremnici na strani pošiljaoca (jer nije sigurno da će primaoc moći
primiti svaki TPDU)
- pri većoj propusnosti i ujednačenom prometu koriste
se spremnici na strani primaoca (kako bi podaci mogli stizati
maksimalnom brzinom)
- ako se odluči da primaoc vrši spremanje , postavlja se
pitanje veličine buffera:
- svi spremnici su jednake veličine (po jedan za svaki
TPDU),
- spremnici su varijabilne veličine
- koristi se jedan veliki buffer za svaku vezu:

Slika: Spremnici
za TPDU
(Tanenbaum, 1996)
- pored ograničenja pri slanju zbog veličine spremnika
koje ima primaoc, problem može biti i kapacitet podmreže kod koje isto
može doći do zagušenja
2.5 Multipleksiranje (Multiplexing)
- uobičajeno je da prijenosni sloj kreira 1 prijenosnu
vezu za 1 mrežnu vezu
- ponekad može:
- za više prijenosnih veza koristiti 1 mrežnu čime se
smanjuju troškovi prijenosa (multipleksiranje prema gore -
upward multiplexing)
- raspodijeliti 1 prijenosnu vezu na više mrežnih da se
poveća propusnost (multipleksiranje prema dolje - downward
multiplexing)

Slika:
Multipleksiranje
(Tanenbaum, 1996)
|