54
TCP/IP TCP/IP - Transportni sloj

TCP/IP - Transportni sloj

Embed Size (px)

DESCRIPTION

TCP/IP - Transportni sloj. Transportni sloj. Portovi UDP TCP. ˝Host-host˝ v . s. ˝proces-proces˝ komunikacija. Procesi. Procesi. Domen IP protokola. Domen UDP i TCP protokola. Brojevi portova. ˝Dobro-poznati˝ port. Privremeni port. IP adrese v . s. Brojevi portova. - PowerPoint PPT Presentation

Citation preview

Page 1: TCP/IP -   Transportni sloj

TCP/IP

TCP/IP - Transportni sloj

Page 2: TCP/IP -   Transportni sloj

TCP/IP

Transportni sloj Portovi UDP TCP

Page 3: TCP/IP -   Transportni sloj

TCP/IP

˝Host-host˝ v.s. ˝proces-proces˝ komunikacija

Procesi Procesi

Domen IP protokola

Domen UDP i TCP protokola

Page 4: TCP/IP -   Transportni sloj

TCP/IP

Brojevi portova

52,000

UDP

Daytimeklijent

13

UDP

Daytimeserver

52,00013Podaci

52,00013 Podaci

Privremeni port

˝Dobro-poznati˝ port

Page 5: TCP/IP -   Transportni sloj

TCP/IP

IP adrese v.s. Brojevi portova

Broj porta procesa

IP adresa hosta

Page 6: TCP/IP -   Transportni sloj

TCP/IP

Opsezi portova

Nisu dodeljeni (organizacija ICANN nije definisala njihvou namenu), ali koje neke druge organizacije mogu registrovati kod ICANN da bi se predupredila dupliciranja

˝dobro-poznati˝ portovi - Dodeljuje ih (definiše njihovu namenu) organizacija ICANN

Mogu se koristiti kao privremeni ili privatni portovi

Dodela portova je pod kontrolom međunarodne neprofitne organizacije koja se zove ICANN (Internet Corporation for Assigned

Names and Numbers)

Page 7: TCP/IP -   Transportni sloj

TCP/IP

Adresa soketa

200.23.56.8 69

200.23.56.8 69

IP adresa Broj porta

Adresa soketa

Page 8: TCP/IP -   Transportni sloj

TCP/IP

UDP

UDP (User Datagram Protocol - Protokol korisničkih datagrama) koji omogućava udaljenim aplikacijama da razmenjuju enkapsulirane IP

datagrame.

Konceptualno, jedina bitna razlika između UDP datagrama i IP datagrama je u tome što UDP sadrži brojeve portova, što omogućava predajnoj aplikaciji da se obrati tačno određenoj aplikaciji na odredišnoj mašini. UDP se ne bavi

kontrolom toka, kontrolom grešaka i retransmisijom nakon prijema lošeg datagrama, baš kako ni IP

Page 9: TCP/IP -   Transportni sloj

TCP/IP

Korisnički datagram

Source Port Destination Port

Total Length Checksum

0 3116

Format zaglavlja

Veličina UDP datagrama u bajtovima, uključujući i zaglavlje i podatke

Page 10: TCP/IP -   Transportni sloj

TCP/IP

Kontrolna suma - pseudo-zaglavlje

Source IP Address

Podaci(plus padding ako broj bajtova nije paran)

0 8 16 31

Destination IP Address

Sve nule Protocol UDP Total Length

Source Port Destination Port

UDP Total Length Checksum

Pse

udo

zagl

avlje

UD

Pza

glav

lje

komplement

Page 11: TCP/IP -   Transportni sloj

TCP/IP

Kontrolna suma - primer

Page 12: TCP/IP -   Transportni sloj

TCP/IP

Karakteristike UDP-a Beskonekcioni servis

Svaki korisnički datagram poslat preko UDP-a tretira kao nezavisni datagram.

Korisnički datagrami nisu numerisani, a pošto do odredišta mogu stići izvan redosleda, UDP nije u mogućnosti da rekonstruiše njihov prvobitni redosled.

Svaka poruka koju proces šalje mora biti dovoljno kratka da može stati u jedan UDP datagram

Page 13: TCP/IP -   Transportni sloj

TCP/IP

Karakteristike UDP-a Ne postoje mehanizmi za kontrolu protoka

Ne postoji zaštita od zagušenja prijemnika velikim brojem poruka

Ne postoje mehanizmi za kontrolu grešaka Pošiljalac ne može znati da li je poruka koju je

poslao uspešno preneta, ili je možda izgubljena ili duplicirana u prenosu.

Page 14: TCP/IP -   Transportni sloj

TCP/IP

Enkapsulacija korisničkih datagrama

Poruka

UDPzaglavlje

UDPpodaci

UDPzaglavlje

IPpodaci

Zaglavljeokvira

Podaci okvira

Poruka

UDPzaglavlje

UDPpodaci

UDPzaglavlje

IPpodaci

Zaglavljeokvira

Podaci okvira

Proces Proces

Page 15: TCP/IP -   Transportni sloj

TCP/IP

Multipleksiranje i demultipleksiranje

Procesi

UDP(Multiplekser)

IP

UDP(Demultiplekser)

IP

Procesi

Page 16: TCP/IP -   Transportni sloj

TCP/IP

UDP - Primena Jednostavne klijent-server aplikacije:

Klijent šalje kratak upit serveru i očekuje kratak odgovor Ako se upit ili odgovor izgube u prenosu, klijent čeka neko

vreme i pokušava ponovo Primer DNS:

Upit: klijent traži od servera IP adresu hosta www.elfak.ni.ac.yu Odgovor: Server odgovara UDP datagramom sa IP adresom hosta Nije potrebna nikakva prethodna priprema ili uspostavljanje

konekcije, dovoljno je razmeniti dve kratke poruke

Page 17: TCP/IP -   Transportni sloj

TCP/IP

UDP - Primena Real-time multimedijalne aplikacije

Internet radio, Internet telefonija, muzika-na-zahtev, video konferencije, video-na-zahtev ...

Prenos kontinualnog toka digitalizovanog zvuka i/ili videa (na predaji zvuk/video se digitalizuje i pakuje u UDP datagrame, na predaji datagrami se raspakuju i rekonstruiše tok odmeraka)

Nema vremena za retransmisiju izgubljenih paketa Gubitak pojedinih paketa nije katastrofalan

Page 18: TCP/IP -   Transportni sloj

TCP/IP

UDP - Primena kod real-time multimedijnih aplikacija

mikrofon

Internet

Bafer

ReprodukcijaUDP datagrami

Gubitak datagrama, džiter, prenos izvan redosleda

Rekonstrukcija izgubljenih datagrama

Uredjenje datagrama, eliminacija

džitera

Page 19: TCP/IP -   Transportni sloj

TCP/IP

TCP

TCP (Transmission Control Protocol - Protokol za kontrolu prenosa) je konekcioni, pouzdani proces-proces transportni protokol koji pruža puni

transportni servis udaljenim aplikacijama.

TCP sprovodi kontrolu protoka i kontrolu grešaka, a projektovan je tako da se može dinamički prilagoditi promenljivim karakteristikama Interneta i

održi pouzdanu vezu čak i u slučajevima pojave raznih vrsta otkaza u mrežnoj infrastrukturi

Page 20: TCP/IP -   Transportni sloj

TCP/IP

TCP

Page 21: TCP/IP -   Transportni sloj

TCP/IP

TCP Sadržaj

Servisi Mehanizmi Segment Konekcija Dijagram stanja Kontrola protoka Kontrola grešaka Kontrola zagušenja

Page 22: TCP/IP -   Transportni sloj

TCP/IP

TCP servisi Koje servise TCP pruža aplikacijama?

Proces-proces komunikacija Orijentacija na tok (prenos toka podataka, a ne

pojedinačnih poruka) Puna dupleks komunikacija Konekcioni servis (uspostavljanje veze, prenos

podataka, raskidanje veze) Pouzdani servis (pouzdanost prenos podataka je

odgovornost TCP-ja, a ne aplikacije)

Page 23: TCP/IP -   Transportni sloj

TCP/IP

Proces-proces komunikacija

Slično UDP-u, TCP omogućava komunikaciju od procesa do procesa korišćenjem 16-bitnih brojeva portova za identifikaciju

procesa. Opsezi portova (dobro-poznati, registrovani i dinamički) su identični kao kod UDP-a

Page 24: TCP/IP -   Transportni sloj

TCP/IP

Orijentacija na tok

Tok bajtova

TCP TCP

Predajni proces

Prijemni proces

Page 25: TCP/IP -   Transportni sloj

TCP/IP

Prijemni i predajni baferi

Tok bajtova

Bafer

poslati

neposlati

Lokacija za upis sledećeg

bajta

Lokacija iz koje se šalje sledeći bajta

TCP

Predajni proces

TCP

Prijemniproces

Bafer

Sledeći bajt za čitanje

Lokacija za upis sledećeg primljenog bajta

nepročitani

slobodni slobodni

Page 26: TCP/IP -   Transportni sloj

TCP/IP

TCP segmenti

Bafer

poslati

neposlati

Lokacija za upis sledećeg

bajta

Lokacija iz koje se šalje sledeći bajta

TCP

Predajni proces

TCP

Prijemniproces

Bafer

Sledeći bajt za čitanje

Lokacija za upis sledećeg primljenog bajta

nepročitani

HH

Segment N Segment 1

slobodni slobodni

Page 27: TCP/IP -   Transportni sloj

TCP/IP

Redni brojevi

TCP numeriše sve bajtove podataka koji se prenose putem uspostavljene konekcije.

Numeracija startuje od slučajno izabranog broja.

Redni brojevi se koriste za kontrolu protoka i kontrolu grešaka

Page 28: TCP/IP -   Transportni sloj

TCP/IP

Redni brojevi Za razmenu rednih brojeva u zaglavlju TCP

segmenta predviđena su dva polja: Sequence Number (SEQ broj) - redni broju prvog

bajta u segmentu. Acknowledgement Number (ACK broj, ili broj

potvrde) - redni broj prvog sledećeg bajta kojeg pošiljalac segmenta očekuje da primi. Koristi se za kumulativnu potvrdu prijema.

Page 29: TCP/IP -   Transportni sloj

TCP/IP

Format TCP segmenta

URG

PSH

F IN

ACK

SYN

RST

ReservedHLEN Window

Source Port Destination Port

Sequence Number

Acknowledgment Number

Checksum Urgent Pointer

Options Padding

data

15 16 310

Page 30: TCP/IP -   Transportni sloj

TCP/IP

Kontrolni bitovi

Flag Opis

UGR Vrednost polja Urgent Pointer je validna.

ACK Vrednost polja Acknowledgment Number je validna.

PSH Push podataka.

RST Konekcija mora biti resetovana.

SYN Sinhroniše redne brojeve u toku uspostavljanja konekcije.

FIN Raskida konekciju.

Page 31: TCP/IP -   Transportni sloj

TCP/IP

Kontrolna suma - pseudo zaglavlje

Source IP Address

Podaci(plus padding ako broj bajtova nije paran)

0 8 16 31

Destination IP Address

Sve nule Protocol TCP Total Length

Sequence number

Acknowledgment number

Pse

udo

zagl

avlje

TC

Pza

glav

lje

HLEN Reserv Control Window size

Checksum Urgent pointer

Page 32: TCP/IP -   Transportni sloj

TCP/IP

Enkapsulacija TCP segmenta

Zaglavljeokvira

IPzaglavlje

TCPsegment

Page 33: TCP/IP -   Transportni sloj

TCP/IP

TCP konekcija Uspostavljanje konekcije Prenos podataka Raskidanje konekcije Resetovanje konekcije

Page 34: TCP/IP -   Transportni sloj

TCP/IP

Uspostavljanje konekcije

Trostepeno usaglašavanje

Seq: 8000SYN

Seq: 1500

Ack: 8001

SYN

Rwnd: 5000

Seq: 8000Ack: 15001ACK

Rwnd: 10000

Vreme Vreme

ACK

SYN

SYN + ACK

ACK

Klijent Server

Aktivno otvaranje

Page 35: TCP/IP -   Transportni sloj

TCP/IP

Prenos podataka

Vreme Vreme

Klijent Server

Seq: 8001Ack: 15001ACK

PSHPodacibajtovi: 8001 - 9000

Seq: 9001Ack: 15001ACK

PSHPodacibajtovi: 9001 - 10000

Seq: 15001

Ack: 10001

ACK Podaci

bajtovi: 15001 - 17000

Seq: 10000Ack: 17001ACK

Rwnd: 10000

Page 36: TCP/IP -   Transportni sloj

TCP/IP

Zatvaranje konekcije - trostepeno usaglašavanje

Seq: xAck: yFIN

Seq: y

Ack: x + 1

FIN

Seq: xAck: y + 1

ACK

Vreme Vreme

ACK

FIN

FIN + ACK

ACK

Klijent Server

Aktivno zatvaranje

Pasivnozatvaranje

Page 37: TCP/IP -   Transportni sloj

TCP/IP

Zatvaranje konekcije - polu-zatvaranje

Seq: xAck: yFIN

Seq: y - 1

Ack: x + 1

ACK

Seq: xAck: z + 1ACK

Vreme

FIN

ACK

ACK

Klijent

Aktivno zatvaranje

Seq: z

Ack: x + 1

FIN FIN

Segmenti podataka od servera ka klijentu

Potvrde od klijenta ka serveru

Page 38: TCP/IP -   Transportni sloj

TCP/IP

Dijagram stanja

Da bi se olakšalo praćenje različitih događaja i brojnih izuzetnih sitacija koje se mogu desiti u toku uspostavljanja konekcije,

prenosa podataka i zatvaranja konekcije, TCP softver je realizovan u vidu konačnog automata (FSM – Finite State

Machine).

Ovaj konačni automat ima 11 stanja i može se predstaviti u vidu dijagrama stanja

Page 39: TCP/IP -   Transportni sloj

TCP/IP

StanjaStanje Opis

CLOSED zatvorena konekcijaKonekcija ne postoji

LISTEN server čeka na poziv (apl. izvršila LISTEN)

SYN RCVD primljen zahtev za otvaranje konekcijeOtvaranje

SYN SENT aplikacija izvršila CONNECT

ESTABLISHED stanje za normalni prenos podataka Konekcija je otvorene

FIN WAIT 1 aplikacija izvršila CLOSE

Zatvarane konekcije

FIN WAIT 2 druga strana potvrdila FIN

TIMED WAIT čekanje da paketi nestanu iz mreže

CLOSING Istovremeni pokušaj zatvaranja

CLOSE WAIT druga strana je inicirala zatvaranje konekcije

LAST ACK čekanje da paketi nestanu iz mreže

Page 40: TCP/IP -   Transportni sloj

TCP/IP

Dijagram stanjaCLOSED

LISTEN

SYN-SENTSYN-RCVD

ESTABLISHED

Pasivno otvaranje / -

RST / -

Aktivno otvaranje / SYN

Close / -

SYN / SYN + ACK

Simulatano otvaranje

ACK / -SYN + ACK /

ACK

FIN-WAIT-1

Close / FINClose / FIN

CLOSINGFIN / ACK

Simulatanozatvaranje

FIN-WAIT-2 TIME-WAIT

ACK / -FIN + ACK / ACK

Trostepeno usaglasavanje

ACK / -

CLOSE-WAIT

LAST ACK

Close / FIN

FIN / ACK

ACK / -

Close iliIsteklo vreme ili RST / -

Isteklo vreme(2MSL)

Isteklo vreme / RST

FIN / ACK

Send / SYNRST / -

SYN / SYN + ACK

Pasivno zatvaranjeA

ktiv

no z

atva

ranj

e

Page 41: TCP/IP -   Transportni sloj

TCP/IP

Scenario uspostavljanja konekcije

CL

OS

ED

SY

N-S

EN

TE

ST

AB

LIS

HE

D

CL

OS

ED

LIS

TE

NS

YN

-RC

VD

SYN

SYN + ACK

ACK

ES

TA

BL

ISH

ED

Prenospodataka

FIN

FIN

-WA

IT-1

ACK

FIN

-WA

IT-2 CL

OS

E-W

AIT

FIN

Podaci

Potvrde

ACK LA

ST

-AC

KC

LO

SE

D

CL

OS

ED

TIM

E-

WA

IT

Klijentski proces

Akt

ivno

ot

vara

nje

Akt

ivno

za

tvar

anje

2MSLtajmer

Isteklo vreme

Klijentskastanja

Serverskastanja

Serverski proces

Pas

ivno

otva

ranj

eO

bave

stav

a ap

likac

iju d

a je

kon

ekci

ja z

atvo

rena

Pasivno zatvaranje

Microsoft Word Document

Page 42: TCP/IP -   Transportni sloj

TCP/IP

Scenario zatvaranja konekcije trostepenim usaglašavanjem

Microsoft Word Document

FIN

-WA

IT-1

CL

OS

E-

WA

IT

FIN

FIN + ACK

ACK LA

ST

-AC

KC

LO

SE

DCL

OS

ED

TIM

E-

WA

IT

Klijentski proces

Akt

ivno

za

tva

ranj

e

Akt

ivno

za

tva

ranj

e

2MSLtajmer

Isteklo vreme

Klijentskastanja

Serverskastanja

Serverski proces

Pasivnozatvaranje

Oba

vest

ava

aplik

aciju

da

je

kone

kcija

zat

vore

na

. . .

ES

TA

BL

ISH

ED

. . .

ES

TA

BL

ISH

ED

Page 43: TCP/IP -   Transportni sloj

TCP/IP

Odbijanje konekcijeKlijentski proces

Serverski proces

CL

OS

ED

CL

OS

ED

SYN

RST + ACK

LIS

TE

N

SY

N-S

EN

TC

LO

SE

D

SY

N-R

CV

DL

IST

EN

Akt

ivno

ot

vara

nje

Pas

ivno

otva

ranj

e

Page 44: TCP/IP -   Transportni sloj

TCP/IP

Prekidanje konekcije

RST + ACK

Klijentski proces

Abo

rt

Serverski proces

. . .

ES

TA

BL

ISH

ED

. . .

ES

TA

BL

ISH

ED

CL

OS

ED

CL

OS

ED

Gre

ška

(Err

or)

Page 45: TCP/IP -   Transportni sloj

TCP/IP

Kontrola protoka

Kotrola protoka reguliše količinu podataka koju izvor može da pošalje pre nego što od odredišta primi potvrdu prijema poslatih

podataka.

TCP uvodi prozor (eng. window) u okviru predajnog bafera koji definiše koje od svih podataka trenutno prisutnih u baferu TCP

sme da pošalje.

Veličina prozora se reguliše tzv. protokolom kliznog prozora (eng. sliding window protocol)

Page 46: TCP/IP -   Transportni sloj

TCP/IP

Klizni prozor - koncept Predajnik vodi evidenciju o preostalom

prostoru u baferu prijemnika i šalje samo onoliko bajtova koliko prijemnik može trenutno da prihvati

Prijemnik, ima obavezu da obaveštava predajnu stranu o veličini preostalog prostora u svom baferu (Polje Window Size (veličinu prozora) iz zaglavlja TCP segmenta)

Page 47: TCP/IP -   Transportni sloj

TCP/IP

Protokol kliznog prozora

1 2 3 4 5

Poslati i potvrdjeni

6 7 8 9 10 11

Poslati, a nepotvrdjeni

12 13 14 15 17 1816 19 20

Mogu se poslati

Ne mogu se poslati

Pomera se udesno po prijemu potvrde

Pomera se udesno po slanju podataka

Uvek je za velicinu prozora udaljen odlevog pointera

Velicina prozora

Page 48: TCP/IP -   Transportni sloj

TCP/IP

Retransmisija

Svaki segment koji je primljen sa greškom, izgubljen ili dupliciran u prenosu se ponovo šalje (retransmituje).

Retransmisiji su podložni segmenti koji troše redne brojeve (segmenti podataka i pojedini kontrolni segmenti).

Segmenti koji ne troše redne brojeve, kao što je ACK segment se ne retransmituju.

Segment se ponovo šalje ako je vreme retransmisionog tajmera (RTO) isteklo.

Page 49: TCP/IP -   Transportni sloj

TCP/IP

Retransmisioni tajmerV

ero

vatn

oca

Vreme odziva

Ve

rova

tno

ca

Vreme odziva

Koliko treba da bude RTO vreme ?

Ethernet Internet

Page 50: TCP/IP -   Transportni sloj

TCP/IP

Određivanje RTO vremena RTT (Round trip time), ili vreme odziva. RTTM (Izmereno RTT) - vreme od trenutka slanja segmenta

do trenutka prijema potvrde za poslati segment. RTTS (Uravnoteženo RTT):

Početno => nema vrednost

Posle prvog merenja => RTTS = RTTM

Posle svakog sledećeg merenja => RTTS = (1-α)RTTS + α RTTM

Tipično se usvaja α=7/8

Page 51: TCP/IP -   Transportni sloj

TCP/IP

Određivanje RTO vremena RTTD (RTT devijacija):

Početno => nema vrednost

Posle prvog merenja => RTTD = RTTM/2

Posle svakog sledećeg merenja => RTTD = (1-β)RTTD + β |RTTS - RTTM|

Tipično se usvaja β =1/4

Page 52: TCP/IP -   Transportni sloj

TCP/IP

Određivanje RTO vremena RTO vreme:

Početno => Početna vrednost

Posle svakog merenja => RTO = RTTS + 4 RTTD

Page 53: TCP/IP -   Transportni sloj

TCP/IP

RTO - primer

Seq: 1400 Ack:

Seq: 4000 Ack: 1401

SYN

SYN + ACK1.50 s

RTTM = RTTS = RTTD = RTO = 6.00

RTTM = 1.5 RTTS = 1.50RTTD = 0.75 RTO = 4.50

Seq: 1400 Ack: 4001

ACK

Seq: 1401 Ack: 4001Podaci: 1401 - 1500

Seq: 1501 Ack: 4001Podaci: 1501 - 1600

Podaci

Podaci

Seq: 4000 Ack: 1601ACK

2.50 s

RTTM = 2.50 RTTS = 1.625RTTD = 0.78 RTO = 4.74

Vreme Vreme

Predajnik Prijemnik

Page 54: TCP/IP -   Transportni sloj

TCP/IP

Eksponencijalni backoff - koju vrednost za RTO izabrati nakon gubitka segmenta?

4.74

sSeq: 1601 Ack: 4001Podaci: 1601 - 1700

Seq: 1601 Ack: 4001Podaci: 1601 - 1700

Podaci

Podaci

Seq: 4000 Ack: 1701ACK

Tajmer zaustavljen

RTTM = 4.00 RTTS = 1.92RTTD = 1.105 RTO = 6.34

Vreme Vreme

Izgubljen

Predajnik Prijemnik

retransmisija

RTTM = 2.50 RTTS = 1.625RTTD = 0.78 RTO = 4.74

Vrednosti iz prethodnog primera

Isteklo vremeRTO = 2 x 4.74 = 9.48

(Eksponencijalni backoff)

9.48

s

RTO = 2 x 4.74 = 9.48(Nema promene, Karnov

algoritam)

Seq: 1701 Ack: 4001Podaci: 1701 - 1800

Podaci

Seq: 4000 Ack: 1801ACK4.00 s

Nova RTO vrednost na osnovu novog RTTM