Title: TCP/IP - Transportni sloj
1TCP/IP - Transportni sloj
2Transportni sloj
3?Host-host? vs. ?proces-proces? komunikacija
Procesi
Procesi
Domen IP protokola
Domen UDP i TCP protokola
4Brojevi portova
?Dobro-poznati? port
Privremeni port
5IP adrese vs. Brojevi portova
Broj porta procesa
IP adresa hosta
6Opsezi portova
Dodela portova je pod kontrolom medunarodne
neprofitne organizacije koja se zove ICANN
(Internet Corporation for Assigned Names and
Numbers)
Nisu dodeljeni (organizacija ICANN nije
definisala njihvou namenu), ali koje neke druge
organizacije mogu registrovati kod ICANN da bi se
predupredila dupliciranja
Mogu se koristiti kao privremeni ili privatni
portovi
?dobro-poznati? portovi - Dodeljuje ih (definiše
njihovu namenu) organizacija ICANN
7Adresa soketa
8UDP
UDP (User Datagram Protocol - Protokol
korisnickih datagrama) koji omogucava udaljenim
aplikacijama da razmenjuju enkapsulirane IP
datagrame. Konceptualno, jedina bitna razlika
izmedu UDP datagrama i IP datagrama je u tome što
UDP sadrži brojeve portova, što omogucava
predajnoj aplikaciji da se obrati tacno odredenoj
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
9Korisnicki datagram
Format zaglavlja
Velicina UDP datagrama u bajtovima, ukljucujuci i
zaglavlje i podatke
10Kontrolna suma - pseudo-zaglavlje
komplement
11Kontrolna suma - primer
12Karakteristike UDP-a
- Beskonekcioni servis
- Svaki korisnicki datagram poslat preko UDP-a
tretira kao nezavisni datagram. - Korisnicki datagrami nisu numerisani, a pošto do
odredišta mogu stici izvan redosleda, UDP nije u
mogucnosti da rekonstruiše njihov prvobitni
redosled. - Svaka poruka koju proces šalje mora biti dovoljno
kratka da može stati u jedan UDP datagram
13Karakteristike 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.
14Enkapsulacija korisnickih datagrama
15Multipleksiranje i demultipleksiranje
16UDP - Primena
- Jednostavne klijent-server aplikacije
- Klijent šalje kratak upit serveru i ocekuje
kratak odgovor - Ako se upit ili odgovor izgube u prenosu, klijent
ceka 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
17UDP - 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
18UDP - Primena kod real-time multimedijnih
aplikacija
Rekonstrukcija izgubljenih datagrama
Uredjenje datagrama, eliminacija džitera
Gubitak datagrama, džiter, prenos izvan redosleda
19TCP
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 dinamicki prilagoditi promenljivim
karakteristikama Interneta i održi pouzdanu vezu
cak i u slucajevima pojave raznih vrsta otkaza u
mrežnoj infrastrukturi
20TCP
21TCP
- Sadržaj
- Servisi
- Mehanizmi
- Segment
- Konekcija
- Dijagram stanja
- Kontrola protoka
- Kontrola grešaka
- Kontrola zagušenja
22TCP servisi
- Koje servise TCP pruža aplikacijama?
- Proces-proces komunikacija
- Orijentacija na tok (prenos toka podataka, a ne
pojedinacnih poruka) - Puna dupleks komunikacija
- Konekcioni servis (uspostavljanje veze, prenos
podataka, raskidanje veze) - Pouzdani servis (pouzdanost prenos podataka je
odgovornost TCP-ja, a ne aplikacije)
23Proces-proces komunikacija
Slicno UDP-u, TCP omogucava komunikaciju od
procesa do procesa korišcenjem 16-bitnih brojeva
portova za identifikaciju procesa. Opsezi portova
(dobro-poznati, registrovani i dinamicki) su
identicni kao kod UDP-a
24Orijentacija na tok
25Prijemni i predajni baferi
26TCP segmenti
27Redni brojevi
TCP numeriše sve bajtove podataka koji se prenose
putem uspostavljene konekcije. Numeracija
startuje od slucajno izabranog broja. Redni
brojevi se koriste za kontrolu protoka i kontrolu
grešaka
28Redni brojevi
- Za razmenu rednih brojeva u zaglavlju TCP
segmenta predvidena su dva polja - Sequence Number (SEQ broj) - redni broju prvog
bajta u segmentu. - Acknowledgement Number (ACK broj, ili broj
potvrde) - redni broj prvog sledeceg bajta kojeg
pošiljalac segmenta ocekuje da primi. Koristi se
za kumulativnu potvrdu prijema.
29Format TCP segmenta
30Kontrolni 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.
31Kontrolna suma - pseudo zaglavlje
32Enkapsulacija TCP segmenta
33TCP konekcija
- Uspostavljanje konekcije
- Prenos podataka
- Raskidanje konekcije
- Resetovanje konekcije
34Uspostavljanje konekcije
Trostepeno usaglašavanje
35Prenos podataka
36Zatvaranje konekcije - trostepeno usaglašavanje
37Zatvaranje konekcije - polu-zatvaranje
38Dijagram stanja
Da bi se olakšalo pracenje razlicitih dogadaja i
brojnih izuzetnih sitacija koje se mogu desiti u
toku uspostavljanja konekcije, prenosa podataka i
zatvaranja konekcije, TCP softver je realizovan u
vidu konacnog automata (FSM Finite State
Machine). Ovaj konacni automat ima 11 stanja i
može se predstaviti u vidu dijagrama stanja
39Stanja
Stanje Opis
CLOSED zatvorena konekcija Konekcija ne postoji
LISTEN server ceka na poziv (apl. izvršila LISTEN) Konekcija ne postoji
SYN RCVD primljen zahtev za otvaranje konekcije Otvaranje
SYN SENT aplikacija izvršila CONNECT Otvaranje
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 Zatvarane konekcije
TIMED WAIT cekanje da paketi nestanu iz mreže Zatvarane konekcije
CLOSING Istovremeni pokušaj zatvaranja Zatvarane konekcije
CLOSE WAIT druga strana je inicirala zatvaranje konekcije Zatvarane konekcije
LAST ACK cekanje da paketi nestanu iz mreže Zatvarane konekcije
40Dijagram stanja
41Scenario uspostavljanja konekcije
42Scenario zatvaranja konekcije trostepenim
usaglašavanjem
43Odbijanje konekcije
44Prekidanje konekcije
45Kontrola protoka
Kotrola protoka reguliše kolicinu 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.
Velicina prozora se reguliše tzv. protokolom
kliznog prozora (eng. sliding window protocol)
46Klizni 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 velicini preostalog prostora u svom
baferu (Polje Window Size (velicinu prozora) iz
zaglavlja TCP segmenta)
47Protokol kliznog prozora
48Kontrola grešaka
- Detekcija i korekcija grešaka kod TCP-ja se
postiže pomocu tri jednostavna principa - Kontrolna suma
- Potvrdivanje
- Retransmisija
49Kontrolna suma
Prijemnik odbacuje svaki segment za koji,
proverom kontrolne sume, ustanovi da sadrži
grešku. Drugim recima, pogrešni segmenti se
tretiraju na isti nacin kao izgubljeni segmenti
(tj. kao da nisu ni primljeni)
50Potvrdivanje
Kada prijemnik šalje potvrdu?
51Pravilo 1
Svaki segment podataka koji jedna strana šalje
drugoj sadrži ACK broj postavljen na vrednost
rednog broja sledeceg bajta kojeg ocekuje da
primi. Na ovaj nacin smanjuje se broj segmenata
potrebnih za potvrdivanje.
52Pravilo 2
Kada prijemnik primi ocekivani segment (sa
ocekivanim rednim - SEQ brojem) u situaciji kada
nema svojih podataka za slanje, a sve prethodno
primljene segmente je vec potvrdio, prijemnik
odlaže slanje ACK segmenta sve do prijema
sledeceg segmenta podataka ili do isteka unapred
zadatog vremenskog perioda (tipicno 500 ms).
Drugim recima, prijemnik odlaže slanje ACK
segmenta ako postoji samo jedan nepotvrdeni
segment. Ovo pravilo sprecava generisanje
dodatnog saobracaja radi slanja velikog broja ACK
segmenata.
53Pravilo 3
Kada prijemnik primi ocekivani segment u sitaciju
kada prethodno primljeni segment još uvek nije
potvrdio, prijemnik odmah šalje ACK segment.
Drugim recima, na strani prijemnika ne bi trebalo
da postoji više od jednog nepotvrdenog segmenta.
Na ovaj nacin, sprecava se nepotrebna
retransmisija segmenata zbog kašnjenja potvrde.
54Pravilo 4
Kada prijemnik primi segment izvan redosleda, sa
redni brojem vecim od ocekivanog (što ukazuje da
je segment sa ocekivanim rednim brojem izgubljen
u prenosu), prijemnik odmah šalje ACK segment sa
ACK brojem sledeceg ocekivanog segmenta. Na ovaj
nacin se inicira brza retransmislija segmenta
koji nedostaje.
55Pravilo 5
Podaci koji do prijemnika stižu izvan redosleda
se ne odbacuju vec se privremeno cuvaju u
prijemnom baferu (ali se ne isporukucuju
aplikaciji sve dok ne pristignu svi prethodni,
nedostajuci podaci)
Kada stigne segment koji nedostaje, prijemnik,
bez cekanja, šalje ACK segment kojim predajnika
obaveštava o sledecem ocekivanom rednom broju
56Pravilo 6
Ako primi duplicirani segment, prijemnik, bez
cekanja, šalje ACK segment
57Retransmisija
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 u dva slucaja 1)vreme
retransmisionog tajmera (RTO) je isteklo i 2)
prijemnik je primio tri duplicirana ACK segmenta.
58Scenario normalnog rada
59Scenario Izgubljeni segment
60Scenario Brza retransmisija
61Scenario Izgubljeni ACK - automatska zamena
62Scenario Izgubljeni ACK - ponovno slanje segmenta
63Retransmisioni tajmer
Koliko treba da bude RTO vreme ?
Ethernet
Internet
64Odredivanje 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)
Pocetno gt nema vrednost
Posle prvog merenja gt RTTS RTTM
Posle svakog sledeceg merenja gt RTTS (1-a)RTTS a RTTM
Tipicno se usvaja a7/8
65Odredivanje RTO vremena
Pocetno gt nema vrednost
Posle prvog merenja gt RTTD RTTM/2
Posle svakog sledeceg merenja gt RTTD (1-ß)RTTD ß RTTS - RTTM
Tipicno se usvaja ß 1/4
66Odredivanje RTO vremena
Pocetno gt Pocetna vrednost
Posle svakog merenja gt RTO RTTS 4 RTTD
67RTO - primer
68Eksponencijalni backoff - koju vrednost za RTO
izabrati nakon gubitka segmenta?
69Kontrola zagušenja
Zagušenje u mreži nastaje kada opterecenje mreže
(broj paketa poslatih u mrežu) postane vece od
kapaciteta mreže (broj paketa koje mreža može da
prihvati). Cilj kontrole zagušenja je
održavanje opterecenja mreže ispod kapaciteta
mreže, tj. regulacija broja paketa u mreži ispod
nivoa pri kome performanse mreže pocinju naglo da
padaju.
70Zagušenje je posledica postojanja redova cekanja
u ruterima
71Performanse kašnjenje vs. opterecenje
Opterecenje - broj paketa ubacenih u mrežu u
jedinici vremena Kašnjenje - prosecno kašnjenje
paketa kroz mrežu
Kapacitet mreže
72Performanse propusnost vs. opterecenje
Propusnost - broj paketa koji se prenose kroz
mrežu u jedinici vremena
Idealna zavisnost
Realna zavisnost
73Mehanizmi za kontrolu zagušenja
- Kontrola zagušenja u otvorenoj petlji
- Cilj je da se spreci pojava zagušenja
- Kontrola zagušenja u zatvorenoj petlji
- Pokušaj da se prevazide zagušenje nakon što se
ono pojavilo
74Kontrola zagušenja u otvorenoj petlji
- Politika retransmisije. Primer Eksponencijalni
backoff mehanizam. Ponavljanje retransmisije
istog segmenta je simptom zagušenja, a
udvostrucavanje RTO vremena je pokušaj izvora da
u takvim uslovima redukuje broj retransmitovanih
paketa koje ubacuje u mrežu. - Politika potvrdivanja. Na primer, ako prijemnik,
umesto da potvrduje svaki ili svaki drugi
segment, prede u režim potvrdivanja svakog n-tog
segmenta, usporice predajnika i u isto vreme
pomocice u prevenciji zagušenja
75Kontrola zagušenja u zatvorenoj petlji
- Potisak (back pressure).
- Ruter koji je postao zagušen, može zatražiti od
prethodnog rutera da redukuje brzinu slanja
paketa. Informacija o nastalom zagušenju se
rekurzivno prenosi unazad sve do primarnih
izvora. - Kontrolni (chocke) paket.
- Zagušeni paket šalje choke paket nazad izvornom
hostu sa zahtevom da redukuje brzinu slanja
paketa. - Primer chocke paketa je ICMP poruka za prigušenje
izvora.
76Kontrola zagušenja u zatvorenoj petlji
- Implicitna signalizacija.
- Sam izvor, bez pomocu rutera, može na neki
posredan nacin da detektuje izvesne signale koji
upozorenja o mogucem zagušenju u mreži i da nakon
toga samnji brzinu slanja paketa. Na primer,
povecano kašnjenje u prijemu potvrda (ACK) može
biti signal da je mreža zagušena. - Eksplicitna signalizacija.
- Ruter izložen zagušenju, može poslati ekplicitan
signal, na primer, postavljanjem nekog posebnog
bita u paketima koje prosleduje, kao bi
pošiljaoca ili primaoca paketa obavestio o pojavi
zagušenja
77Kontrola zagušenja kod TCP protokola
- rwnd - velicina prozora koju diktira prijemnik (u
cilju kontorle protoka) - cwnd - prozor zagušenja - velicina prozora koju
diktira mreža. - Stvarna velicina prozora
- min(rwnd, cwnd)
78Kontrola zagušenja kod TCP protokola
- Tri faze
- Spori start eksponencijalno povecanje
- Izbegavanje zagušenja linearno povecanje
- Detekcija zagušenja Multiplikativno smanjenje
79Spori start
Velicina prozora zagušenja se eksponencijalno
povecava sve dok se ne dostigne granicna
vrednost sstresh
80Izbegavanje zagušenja
Pocinje kada se dostigne granicna vrednost
sstresh. Na svaku potvrdu, velicina prozora
zagušenja se povecava za 1 sve dok se ne
detektuje zagušenje
81Detekcija zagušenja
- Kako se detektuje zagušenje ?
- Vreme RTO tajmera je isteklo - sa velikom
verovatnocom ukazuje na mogucnost zagušenja - Primljena tri ponovljena ACK-a - takode ukazuje
na zagušenje, ali sa znacajno manjom verovatnocom
u odnosu na prethodni slucaj.
82Detekcija zagušenja - Isteklo RTO vreme
- Granicna velicinu prozora se postavlja na
polovinu trenutne velicine prozora (sstresh
cwnd/2). - Velicina prozora zagušenja se postavlja na 1
(cwnd 1). - Ponovo se startuje faza sporog starta.
83Detekcija zagušenja - tri ponovljena ACK-a
- Granicna velicinu prozora se postavlja na
polovinu trenutne velicine prozora (sstresh
cwnd/2). - Velicinu prozora zagušenja se postavlja na
granicnu vrednost (cwnd sstresh) - Povratak na fazu izbegavanja zagušenja.
84Kontrola zagušenja kod TCP
85Kontrola zagušenja - primer