Računalne mreže
 Studij elektrotehnike
 Tehnički fakultet Sveučilišta u Rijeci
 
 

 

PRIJENOSNE USLUGE

ELEMENTI PROTOKOLA

 

 

 

 

Home : O kolegiju : Predavanja : Vježbe : Ocjenjivanje

 

VIII. PRIJENOSNI SLOJ (Transport)

  • prijenosni sloj (transport layer) zadužen je za prijenos podataka od izvorišnog do odredišnog računala

1. PRIJENOSNE USLUGE

  • 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

 


2. ELEMENTI PRIJENOSNIH PROTOKOLA 

  • 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:
  1. 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
  2. početno uspostavljanje veze kompliciranije je kod prijenosnog sloja
  3. sposobnost podmreže da sprema pakete (“sakrije” paket koji se nakon nekog vremena iznenada ponovo pojavi) zahtjeva kod prijenosnog sloja posebne protokole
  4. 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:
  1. 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
  2. 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:
  1. ograničavanje dizajna podmreže - koriste se metode koje sprečavaju da paketi kruže po mreži
  2. 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
  3. 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:
    1. simetrično - veza se promatra kao da se sastoji od dvije jednosmjerne veze i svaka se mora osloboditi posebno
    2. 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)

 


© 2004. N.Hoić-Božić