You are on page 1of 26

26.11.2020.

Računalne mreže

SVEUČILIŠTE U ZAGREBU

FAKULTET PROMETNIH ZNANOSTI


predmet: Računalne mreže

Nastavnik: Prof. dr. sc. Zvonko Kavran zvonko.kavran@fpz.unizg.hr


Doc. dr. sc. Ivan Grgurević ivan.grgurevic@fpz.unizg.hr

1
Računalne mreže

Transportni sloj

1
26.11.2020.

Uvod
application
transport
network
data link
• nalazi se između aplikacijskog sloja i physical
Računalne mreže

mrežnog sloja
• omogućava usluge procesima na
sloju aplikacije
• osigurava logičku komunikaciju
između aplikacijskih procesa - iz
perspektive aplikacije izgleda kao da
su računala na kojima se procesi
izvršavaju direktno povezani) application
transport
network
• ostvaruje potporu komunikaciji data link
physical
između procesa, odnosno između
krajnjih računala

Koliko nam treba protokola?


3
Pouzdanost, upravljanje zagušenjem?

Network layer: logička komunikacija između računala

Transport layer: logička komunikacija između procesa (aplikacija)


Računalne mreže

Predajna strana:
- razdvajanje poruka (iz aplikacijskog sloja) u segmente, prosljeđivanje
mrežnom sloju

Prijemna strana:
- slaganje segmenata u poruke, prosljeđivanje aplikacijskom sloju

Analogija s poštanskim prometom:

12 osoba šalje poštanske pošiljke prema 12 osoba

proces = osobe
app messages = pisma u kuvertama/omotnicama
hosts = kuće
transport protocol = Ivica i Marica
network-layer protocol = poštanska usluga
4

2
26.11.2020.

Transportni sloj omogućava pružanje dva tipa transportne usluge:

• Spojna transportna usluga


Računalne mreže

• Nespojna transportna usluga

Segment – naziv za protokolnu podatkovna jedinica transportnog sloja

(TPDU, Transport Protocol Data Unit)

Segment payload

Zaglavlje Zaglavlje Zaglavlje


okvira paketa segmenta

Protokoli transportnog sloja imaju različita svojstva:

- Pouzdanost
Računalne mreže

- Upravljanje tokom podataka


- Očuvanje redosljeda paketa

Izbor protokola ovisi o aplikaciji (vrsti).

TCP protokol (eng. Transmission Control Protocol)

• uspostava konekcije
• pouzdani prijenos

UDP protokol (eng. User Datagram Protocol)

• beskonekcijska usluga
• ne osigurava se pouzdanost prijenosa

Postoji li garancija za „Bandwith” i „Delay”? 6

3
26.11.2020.

Uspostava veze s kraja na kraj mreže je moguća na principu


unaprijed poznatih priključnih točaka.

Poslužitelj
Računalne mreže

10.1.1.5 10.1.100.5 2345 80


:
WEB
IBM Compatible

IP
TELNET IBM Compatible

10.1.1.5 FTP 10.1.100.5

10.1.100.5 10.1.1.5 80 2345


65535 65535

2345

1023 1023
255 255
80
Svaka priključnica (socket) definirana je s tri parametra:
-protokol (UDP, TCP),
-IP adresa (npr. 161.53.97.2) 7
-oznaka porta (broj vrata) (npr. 21 za FTP).

= socket = proces
Računalne mreže

application P3 P1
P1 application P2 P4 application

transport transport transport

network network network

link link link

physical physical physical

host 2 host 3
host 1
Zaglavlje protokola transportne razine
- nosi brojeve priključnih točaka (port) izvorišta i odredišta

- IP adresa i broj priključne točke čine priključnicu (socket) izvorišta ili


odredišta

- dvije priključnice identificiraju tok podataka, odnosno vezu (connection)

4
26.11.2020.

Multipleksiranje i demultipleksiranje

Demultipleksiranje (rcv host) zadatak isporučivanja podataka u


odgovarajući socket

Multipleksiranje (send host) zadatak prikupljanja podataka sa različitih


Računalne mreže

socketa, enkapsuliranje svakog dijela zaglavljem, i predavanje segmenta


mrežnom sloju (kasnije iskorišteno za demultipleksiranje)

TCP/UDP segment format


32 bits
Demultipleksiranje
Računalo prima IP datagrame source port # dest port #
– Svaki datagram ima izvorišnu i
odredišnu IP adresu
– svaki datagram nosi 1 other header fields
segment transportne razine
– Svaki segment ima izvorišni i
odredišni broj porta
application
Računalo koristi IP adrese & brojeve data
portova kako bi usmjerilo segmente (message)
na odgovarajući socket

Demultipleksiranje – bez uspostave konekcije (eng. Connectionless)

Kreiranje socketa sa brojevima portova:


Računalne mreže

DatagramSocket mySocket1 = new DatagramSocket(12534)


DatagramSocket mySocket2 = new DatagramSocket(12535)

UDP socket identificira:


- odredišna IP adresa
- odredišni broj porta

Kada odredišno računalo primi UDP segment:

– provjerava odredišni broj porta u segmentu


– usmjerava UDP segment prema socketu sa tim brojem porta

IP datagrami sa različitim izvorišnim IP adresama i/ili izvorišnim brojevima


portova usmjeravaju se prema istom socketu

10

5
26.11.2020.

DatagramSocket serverSocket = new DatagramSocket(6428);

P2 P1
P1
Računalne mreže

P3

SP: 6428 SP: 6428


DP: 9157 DP: 5775

SP: 9157 SP: 5775


klijent DP: 6428 DP: 6428 klijent
server
IP: A IP: C IP:B

SP osigurava “adresu povratka”

11

Demultipleksiranje – uspostave konekcije (eng. connection-oriented)

TCP socket identificiran sa 4 podatka:


Računalne mreže

– izvorišna IP adresa
– izvorišni broj porta
– odredišna IP adresa
– odredišni broj porta

Odredišno računalo koristi sve vrijednosti za usmjeravanje segmenta u


odgovarajući socket

Server računalo može podržavati više simultanih TCP socketa:


– svaki socket je identificiran sa svoja 4 podataka

Web serveri imaju različite sockete za svakog klijenta koji se spaja


– non-persistent HTTP će imati različiti socket za svaki zahtjev

12

6
26.11.2020.

P1P3
Računalne mreže

P1 P4 P5 P6 P2

SP: 5775
DP: 80
S-IP: B
D-IP:C

SP: 9157 SP: 9157


klijent DP: 80 DP: 80 klijent
server
IP: A S-IP: A
IP: C S-IP: B IP:B
D-IP:C D-IP:C

Prema slici tri segmenta imaju isti odredišni port 80

- demultipleksirani su u različite ( ne iste) socket-e

13

UDP – Prijenos bez uspostavljanja konekcije

-Definiran u specifikaciji RFC-u 768


Računalne mreže

- nema uspostave konekcije (što može uzrokovati kašnjenje)

- jednostavnost: nema stanja konekcije kod pošiljatelja

- nema kontrole zagušenja

- ne omogućava pouzdan prijenos paketa – o pouzdanosti prijenosa (ukoliko je


navedeno potrebno) brine se aplikacija.

- izvršava minimum koji se očekuje od transportnog protokola


(„best effort” usluga, UDP segmenti mogu biti izgubljeni ili dostavljeni izvan
redosljeda)

- osim funkcije multipleksiranja i demultipleksiranja i vrlo ograničene provjere


grešaka, ništa ne dodaje IP-u

- ako se izabere UDP umjesto TCP-a, aplikacija se “skoro direktno” obraća IP-u
14

14

7
26.11.2020.

UDP se često koristi za multimedijske aplikacije, kao što su telefoniranje


preko Interneta, video konferencije u realnom vremenu i protok audio i video
datoteka
Računalne mreže

15

15

UDP dodaje polja sa brojevima izvornog i odredišnog porta za


multipleksiranje i demultipleksiranje, dodaje još dva mala polja i predaje
dobiveni segment mrežnom sloju. Mrežni sloj enkapsulira segment u IP
Računalne mreže

datagram i zatim na najbolji mogući način nastoji isporučiti segment


odredišnom čvoru. Ako segment stigne do odredišnog čvora, UDP koristi broj
odredišnog porta kako bi isporučio podatke iz segmenta ispravnom
aplikacijskom procesu.

Nema međusobne sinkronizacije

između entiteta otpremnog i prijamnog

transportnog sloja prije slanja

segmenta

Checksum: Segment se tretira kao niz


16
16 bitnih cjelih brojeva Struktura UDP segmenta

16

8
26.11.2020.

Računalne mreže

17

17

UDP checksum

Cilj: detekcija pogrešaka


Računalne mreže

Pošiljatelj: Primatelj:
• Sadržaj segmenta tretira kao • računa checksum of primljenog
16-bitne cijele brojeve segmenta
• checksum: zbrajanje sadržaja • Provjera da li je izračunati
segmenta checksum jednak onom u polju
• Pošiljatelj stavlja vrijednost – NE – detekcija pogreške
checksuma u UDP checksum
– DA – nema pogrešaka
polje

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1

suma 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
checksum 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

18

9
26.11.2020.

RTP protokol (eng. Real-time Transport Protocol)

Definiran u specifikaciji RFC 3550.

Osnovna namjena za paketski način prijenosa podataka u realnom


Računalne mreže

(stvarnom) vremenu

Izvršava se „iznad” UDP protokola (unutar operacijskog sustava)

Podaci (multimedijski) se pohranjuju u RTP biblioteku (na strani korisničke


aplikacije) –zatim se putem odgovarajuće priključnice (socket) povezuju sa
UDP protokolom na razini operacijskog sustava

Dešava se multipleksiranje podataka u stvarnom vremenu i formiranje RTP


paketa, koji se putem priključne točke šalju operacijskom sustavu

Slijedi stvaranje UDP paketa koji omataju RTP pakete, i prosljeđuju prema
mrežnom sloju

Na strani prijemnika odvija se suprotni proces

19

19

RTP payload
Računalne mreže

Ethernet IP UDP RTP


zaglavlje zaglavlje zaglavlje zaglavlje

Aplikacija
Korisnička
razina RTP

Slojevita
arhitektura
UDP

Razina operacijskog IP
sustava

Ethernet 20

20

10
26.11.2020.

RTP protokol multipleksira više podatkovnih tokova u jedinstveni tok UDP


paketa

Mogućnost slanja na jedno odredište (unicasting) ili više odredišta


Računalne mreže

(multicasting)

Paketi (RTP) se numeriraju -prijemnik je u mogućnosti otkriti ukoliko neki od


paketa nedostaje

Omogućeno je i umetanje vremenske oznake, kako bi se omogućila ispravna


sinkronizacija na prijemnoj strani

RTCP protokol (eng. Real-time Transport Control Protocol) - kontrolni protokol

Definiran u specifikaciji RFC 3550.

Omogućava povratne informacije izvoru informacije o različitim parametrima


poput kašnjenja, varijacije kašnjenja (jitter), propusnosti, zagušenja
21

21

Princip pouzdanog prijenosa podataka


Računalne mreže

Karakteristike nepouzdanog kanala određuju kompleksnost


pouzdanog protokola za prijenos podataka (reliable data transfer
protocol -rdt)

22

22

11
26.11.2020.

rdt_send(): pozvan odozgo, deliver_data():pozvan od


(e.g., by app.). Dostava podataka rdt za dostavu podataka gore
Računalne mreže

za gornji sloj na prijemnoj strani

Predajna Prijemna
strana strana

udt_send(): pozvan od rdt, rdt_rcv(): pozvan kada stignu


za prijenos paketa preko paketi na rcv-side kanala
nepouzdanog kanala prijemniku

23

Pošiljatelj Primatelj

Wait for rdt_send(data) Wait for rdt_rcv(packet)


Računalne mreže

call from call from extract (packet,data)


above packet = make_pkt(data) below deliver_data(data)
udt_send(packet)

Aktivnost koja uzrokuje promjenu stanja


Stanje: kada je u ovom
stanju “state” stanje
sljedeće stanje stanje
1 event
određeno je 2
sljedećom „event” akcije
aktivnošću

24

24

12
26.11.2020.

rdt_send(data)
rdt_rcv(rcvpkt) &&
sndpkt = make_pkt(0, data, checksum) ( corrupt(rcvpkt) ||
udt_send(sndpkt) isACK(rcvpkt,1) )
start_timer
rdt_rcv(rcvpkt) L
Računalne mreže

L Wait for Wait


for timeout
call 0from
above ACK0 udt_send(sndpkt)
start_timer
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt) rdt_rcv(rcvpkt)
&& isACK(rcvpkt,1) && notcorrupt(rcvpkt)
&& isACK(rcvpkt,0)
stop_timer
stop_timer
Wait Wait for
timeout for call 1 from
udt_send(sndpkt) ACK1 above
start_timer rdt_rcv(rcvpkt)
L
rdt_send(data)
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) || sndpkt = make_pkt(1, data, checksum)
isACK(rcvpkt,0) ) udt_send(sndpkt)
start_timer
L

Riješeni problemi detekcije pogreške, prijema paketa, gubitka paketa, dupliciranja paketa

25

Princip pouzdanog prijenosa podataka – poduzete akcije


Računalne mreže

Bez gubitaka

Izgubljen paket

26

26

13
26.11.2020.

Princip pouzdanog prijenosa podataka – poduzete akcije


Računalne mreže

Izgubljena potvrda ACK Istek vremena čekanja

27

27

TCP – Prijenos sa uspostavljanjem konekcije

Definiran u dokumentima RFC 793, RFC 1122, RFC 1323, RFC 2018 i RFC 2581
Računalne mreže

Osigurava pouzdan transport s kraja na kraj - mehanizmi potvrde i


retransmisije (handshaking razmjena kontrolnih poruka)

Point-to-point: jedan pošiljatelj, jedan primatelj

Full duplex podaci: bi-direkcijski tok podataka za istu konekciju

28

28

14
26.11.2020.

Osnovne zadaće TCP protokola:


- Prijenos podataka slaganjem byte-ova podataka u segmente

- Adresiranje i multipleksiranje
više procesa na istom računalu može simultano koristiti TCP
Računalne mreže

- Pouzdanost
sposobnost oporavka od gubitka, poduplavanja, pogrešaka ili pogrešnog
redosljeda u toku byte-ova

Mehanizam rednih brojeva: svakom byte-u se dodjeljuje redni broj, sequence


number, i traži se da prijemna strana potvrdi ispravan prijem

- Upravljanje tokom
onemogućava se bržem pošiljatelju „preplavljivanje” sporijeg primatelja
byte-ovima koje isti ne stiže obraditi (svaka potvrda popraćena je informacijom
o veličini prozora, window, koja određuje koliko byte-ova predajnik smije
odaslati prije prijema potvrde)

- Upravljanje vezom
logička veza između procesa uspostavlja se prije i raskida nakon obavljene
komunikacije (uporabom posebnih statusnih podataka)

- Prioritet 29
posebni zahtjevi koje specificiraju procesi
29

MSS: maximum segment size zavisi o fizičkoj izvedbi mreže, i odgovara


veličini MTU umanjenoj za duljinu TCP i IP zaglavlja

TCP programska podrška određuje potrebnu veličinu segmenta na način de


Računalne mreže

može:

- akumulirati podatke iz više unosa ili


- podatke iz jednog unosa razdijeliti u više segmenata

Svaki segment (uključujući i TCP zaglavlje) mora stati unutar podatkovnog


dijela IP datagrama

Zaglavlje TCP protokola - pseudo zaglavlje


0 7 8 15 16 23 24 31
izvorišna IP adresa
odredišna IP adresa
nule protokol TCP duljina

30

30

15
26.11.2020.

Struktura TCP segmenta

Logička veza između procesa definirana je pomoću para 16-bitnih


transportnih adresa –port (vrata)

32 bits
URG: urgent data counting
Računalne mreže

(generally not used) source port # dest port # by bytes


ACK: ACK #
sequence number of data
(not segments!)
valid acknowledgement number
head not
PSH: push data now len used
UA P R S F Receive window
(generally not used) # bytes
checksum Urg data pnter rcvr willing
to accept
RST, SYN, FIN: Options (variable length)
connection estab
(setup, teardown
commands)
application
Internet data
checksum (variable length)
(as in UDP)

31

TCP seq. #’s and ACKs

Seq. #’s:
Host A Host B
– byte stream “number”
prvog byte-a u
Računalne mreže

User
podatkovnom types
segmentu ‘C’
ACKs: host ACKs
– seq # sljedećeg byte-a receipt of
očekivanog od druge ‘C’, echoes
strane back ‘C’

host ACKs
receipt
of echoed
‘C’

time
jednostavni telnet scenario

32

32

16
26.11.2020.

Zaglavlje TCP protokola

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Izvorišna priključna točka Odredišna priključna točka
Računalne mreže

Redni broj
Potvrdni broj
Pomak Reserved UAP R S F Prozor prijemnika
podataka R C S S Y I
GKH T N N
Kontrolna suma Pokazivač hitnih podataka
Opcije Nadopuna
Podaci

Izvorišna priključna točka (Source Port) - identificira proces koji šalje podatke
Odredišna priključna točka (Destination Port) - identificira proces koji prima
podatke
Redni broj (Sequence Number) - je redni broj početnog byta (okteta) segmenta
Potvrdni broj (Acknowledgment Number) - broj slijedećeg okteta korisnikove
poruke, ujedno i kumulativna potvrda
33

33

Zaglavlje TCP protokola

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Izvorišna priključna točka Odredišna priključna točka
Računalne mreže

Redni broj
Potvrdni broj
Pomak Reserved UAP R S F Prozor prijemnika
podataka R C S S Y I
GKH T N N
Kontrolna suma Pokazivač hitnih podataka
Opcije Nadopuna
Podaci

Pomak podataka (Data Offset) - predstavlja duljinu TCP zaglavlja u 32


bitnim riječima
ACK potvrdni broj je ispravan (mora biti postavljen uvijek, osim kod
uspostave veze)
PSH podatke odmah isporučiti korisniku
URG segment sadrži hitne podatke
RST reinicijalizacija veze, najčešće rezultira raskidom veze
FIN zahtjev za raskidom veze 34
SYN zahtjev za uspostavom veze

34

17
26.11.2020.

Zaglavlje TCP protokola

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Računalne mreže

Izvorišna priključna točka Odredišna priključna točka


Redni broj
Potvrdni broj
Pomak Reserved UAP R S F Prozor prijemnika
podataka R C S S Y I
GKH T N N
Kontrolna suma Pokazivač hitnih podataka
Opcije Nadopuna
Podaci

Prozor prijemnika (Window) - u oktetima, 0-65535

Kontrolna suma (Checksum) - komplement sume komplementa 16-bitnih


riječi, obuhvaća
podatke i zaglavlje
dio zaglavlja IP protokola (pseudo zaglavlje)
35

35

Zaglavlje TCP protokola

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Računalne mreže

Izvorišna priključna točka Odredišna priključna točka


Redni broj
Potvrdni broj
Pomak Reserved UAP R S F Prozor prijemnika
podataka R C S S Y I
GKH T N N
Kontrolna suma Pokazivač hitnih podataka
Opcije Nadopuna
Podaci

Pokazivač hitnih podataka (Urgent Pointer) pokazuje gdje se nalaze hitni


podaci unutar segmenta
Opcije (Options) za realizaciju nekih posebnih mogućnosti
Nadopuna (Padding) - popunjava nulama zaglavlje do širine 32-bitne riječi
Podaci (Data) - korisnički podaci (poruke)
36

36

18
26.11.2020.

Računalne mreže

37

37

TCP Round Trip Time and Timeout


DILEMA - Kako postaviti vrijeme čekanja na potvrdu?
Dulje u odnosu na RTT (koji je ujedno i promjenjiv)
Prekratko: (premature timeout)
Računalne mreže

– Neželjene retransmisije
Predugo: spora reakcija na gubitak segmenta

Kako procijeniti vrijeme obilaska RTT?


SampleRTT: mjerenjem vremena do primitka potvrde
SampleRTT je promjenjiv, želimo tzv. glađi RTT “smoother”
– Srednja vrijednost nekoliko prošlih mjerenja, ne samo trenutnog

EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT

Na osnovi stare vrijednosti i nove vrijednosti M

Metoda: Exponential weighted moving average


• Utjecaj prošlih uzoraka smanjuje se eksponencijalno
• Tipična vrijednost:  = 0.125

38

19
26.11.2020.

Određivanje vremena čekanja na potvrdu

EstimtedRTT plus “zaštitna margina”


– velike varijacije u EstimatedRTT -> veća zaštitna margina
Računalne mreže

Prvo procjena koliko se SampleRTT razlikuje od EstimatedRTT (devijacija):

DevRTT = (1-)*DevRTT + *|SampleRTT-EstimatedRTT|

(tipično,  = 0.25)

Slijedi timeout interval: TimeoutInterval = EstimatedRTT + 4*DevRTT


350

300

250
RTT (milliseconds)

200

150

100
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)

39

Slijed događaja kod TCP pošiljatelja:

Podatak primljen od strane aplikacije:


Računalne mreže

• Kreiranje segmenta seq #


• seq # je byte-stream broj prvog podatkovnog byta u segmentu
• pokreni timer ukoliko već nije pokrenut (timer kao za najstariji nepotvrđeni
segment)
• Interval timera: TimeOutInterval

Timeout (vrijeme čekanja na potvrdu):

• Retransmisija segmenta koji je uzrokovao timeout


• restart timera

Ack primljen:

• Ukoliko se potvrđuje prethodno nepotvrđeni segment


– update što se treba potvrditi
– start timer ukoliko su segmenti „outstanding”

40

20
26.11.2020.

NextSeqNum = InitialSeqNum
SendBase = InitialSeqNum
loop (forever) {
switch(event)
Računalne mreže

event: data received from application above


create TCP segment with sequence number NextSeqNum
if (timer currently not running) • SendBase-1: zadnji
start timer kumulativno
pass segment to IP potvrđeni byte
NextSeqNum = NextSeqNum + length(data)
Primjer:
• SendBase-1 = 71;
event: timer timeout y= 73, prijemnik želi
retransmit not-yet-acknowledged segment with 73+ ;
smallest sequence number y > SendBase, novi
start timer podatak
je potvrđen
event: ACK received, with ACK field value of y
if (y > SendBase) {
SendBase = y
if (there are currently not-yet-acknowledged segments)
start timer
}
} /* end of loop forever */

41

Host A Host B Host A Host B


Računalne mreže

Seq=92 timeout
timeout

X
loss

Sendbase
= 100
Seq=92 timeout

SendBase
= 120
SendBase
= 100
SendBase
= 120 premature timeout
vrijeme vrijeme
Izgubljeni ACK scenario
42

42

21
26.11.2020.

Host A Host B
Računalne mreže

timeout X
loss

SendBase
= 120

vrijeme
Kumulativni ACK scenario

43

Kontrola toka
TCP koristi gubitak segmenta kao indikaciju zagušenja
održava mrežu u radnoj točki s prosječno punim redovima čekanja

TCP raspolaže s nekoliko algoritama za postupke (često mijenjani i


Računalne mreže

nadopunjavani)
- upravljanja prometom
- sprječavanje zagušenja

Prijemna strana TCP konekcije –buffer

Prijemnik oglašava slobodno mjesto

Ograničenje unACKed podataka u RcvWindow – garancija da nema overflowa

44

22
26.11.2020.

Detekcija pojave zagušenja u mreži moguće je detektirati na mrežnom sloju


Računalne mreže

- Redovi čekanja na usmjeriteljima

Temeljem povratne informacije – transportni sloj utječe (regulira, smanjuje)


brzinu slanja podataka prema mrežnom sloju

Primjena algoritma za kontrolu zagušenja

Cilj: onemogućiti predajniku da pri odašiljanju podataka prekorači kapacitet


mreže, odnosno intenzitet slanja prilagođava se prema kapacitetu mreže

45

45

Upravljanje vezom

- TCP pošiljatelj i prijemnik uspostavljaju konekciju prije slanja podataka


Inicijalizacija TCP varijabli:
Računalne mreže

– seq. #s
– buffers, flow control info (e.g. RcvWindow)

Klijent: connection initiator


Socket clientSocket = new Socket("hostname","port number");
Server: contacted by client
Socket connectionSocket = welcomeSocket.accept();

Kod uspostave veze dva TCP procesa moraju sinkronizirati početne redne
brojeve
(razmjenom segmenata za uspostavu veze, segmenti nose slučajno odabran
kontrolni bit SYN ISN (Initial Sequence Number)
Prilikom sinkronizacije obje strane moraju poslati svoj ISN, te primiti potvrdu
za to od druge strane

46

23
26.11.2020.

Upravljanje vezom

Three way handshake:


Računalne mreže

stanje TCP A TCP B stanje Korak 1: klijent šalje TCP SYN


CLOSED LISTEN segment serveru
SYN-SENT – specifies initial seq #, no
(SEQ=X
)(C TL=SY
N) data
SYN-
K)
YN,AC RECEIVED
CTL=S
(SEQ=Y )(ACK
=X+1)( Korak 2: server prima SYN,
ESTABLISHED odgovara sa SYNACK segmentom
(SEQ=X
+1)(ACK
=y+1)(C
TL=A CK) – server allocates buffers,
TL=ACK
)(DATA) ESTABLISHED specifies server initial seq. #
=Y+1)(C
+1)(ACK
(SEQ=X
ESTABLISHED
Korak 3: klijent prima SYNACK,
odgovara sa ACK segmentom koji
može sadržavati podatke

47

client server
close

Zatvaranje konekcije

close
client closes socket:
clientSocket.close();
Računalne mreže

timed wait

Korak 1: klijent šalje TCP FIN kontrolni


segment serveru

closed
closing
Korak 2: server prima FIN, odgovara sa
ACK. Zatvara konekciju, šalje FIN.

closing
Korak 3: klijent prima FIN, odgovara sa
ACK.
– unosi “timed wait” – odgovoriti
timed wait

će sa ACK na primljene FINs


Step 4: server, prima ACK. Konekcija closed
zatvorena.
closed
48

24
26.11.2020.

CLOSED LISTEN

korisnik poslužitelj
SYN_SENT SYN k
Računalne mreže

SYN_RCVD

SYN,ACK p,k+1

ESTABLISHED

ACK k+1,p+1

ESTABLISHED

IZMJENA
PODATAKA

FIN_WAIT1 FIN,ACK k+N,p+M

CLOSE_WAIT

ACK p+M, k+N+1

FIN_WAIT2 FIN,ACK p+M, k+N+1 LAST_ACK

TIME_WAIT

FIN,ACK k+N+1, p+M+1

CLOSED

49

49

Životni ciklus TCP klijenta


Računalne mreže

Životni ciklus TCP servera

50

25
26.11.2020.

Stanja TCP veze


– proces TCP protokola održava niz varijabli
– prolazi kroz niz stanja:
Računalne mreže

STANJE: ZNAČENJE:
CLOSED Veza je neaktivna (raskinuta)
LISTEN Stanje čekanja zahtjeva za vezu
SYN-SENT Poslan je zahtjev za vezu; čeka se da druga strana odgovori zahtjevom za vezu
SYN-RECEIVED Primljen je zahtjev za vezu; čeka se potvrda zahtjeva za vezu
ESTABLISHED Stanje normalnog prijenosa podataka
FIN-WAIT-1 Odaslan je zahtjev za raskidanje veze
FIN-WAIT-2 Čeka se zahtjev za raskidanje veze od udaljenog TCPa
CLOSE-WAIT Čekanje na zahtjev za raskidanje veze od lokalnog korisnika
CLOSING Čeka se potvrda na poslani zahtjev za prekid veze
LAST-ACK Čeka se potvrda na zahtjev za raskid veze od udaljenog TCPa
TIME-WAIT Čeka se dva maksimalna vremena života segmenta (MSL), kako bismo se
uvjerili da su svi zaostali segmenti stigli do udaljenog TCPa. Za to vrijeme se
ne može ponovo uspostaviti veza između ove dvije priključnice.
51

51

aktivni OPEN
napravi TCB & šalji SYN
CLOSED
CLOSE
izbriši TCB
pasivni OPEN CLOSE
napravi TCB izbriši
TCB

primljen RST
LISTEN
Računalne mreže

primljen SYN SEND


šalji SYN,ACK šalji SYN
SYN-RCVD SYN-SENT
primljen SYN
šalji SYN, ACK

primljen SYN+ACK
primljena potvrda šalji ACK
CLOSE
SYNa ESTABLISHED
šalji FIN

CLOSE
šalji FIN primljen FIN
šalji ACK

Active Close Passive Close

primljen FIN
šalji ACK
FIN-WAIT-1 CLOSING CLOSE-WAIT

primljena primljen primljena


FIN+ACK potvrda CLOSE
potvrda
šalji ACK FINa šalji FIN
FINa

FIN-WAIT-2 TIME-WAIT LAST ACK


primljen FIN
šalji ACK

Timeout = 2MSL
izbriši TCB
primljena potvrda
FINa
CLOSED
52

52

26

You might also like