Upload
eric-gould
View
67
Download
0
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
TCP/IP
TCP/IP - Transportni sloj
TCP/IP
Transportni sloj Portovi UDP TCP
TCP/IP
˝Host-host˝ v.s. ˝proces-proces˝ komunikacija
Procesi Procesi
Domen IP protokola
Domen UDP i TCP protokola
TCP/IP
Brojevi portova
52,000
UDP
Daytimeklijent
13
UDP
Daytimeserver
52,00013Podaci
52,00013 Podaci
Privremeni port
˝Dobro-poznati˝ port
TCP/IP
IP adrese v.s. Brojevi portova
Broj porta procesa
IP adresa hosta
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)
TCP/IP
Adresa soketa
200.23.56.8 69
200.23.56.8 69
IP adresa Broj porta
Adresa soketa
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
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
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
TCP/IP
Kontrolna suma - primer
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
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.
TCP/IP
Enkapsulacija korisničkih datagrama
Poruka
UDPzaglavlje
UDPpodaci
UDPzaglavlje
IPpodaci
Zaglavljeokvira
Podaci okvira
Poruka
UDPzaglavlje
UDPpodaci
UDPzaglavlje
IPpodaci
Zaglavljeokvira
Podaci okvira
Proces Proces
TCP/IP
Multipleksiranje i demultipleksiranje
Procesi
UDP(Multiplekser)
IP
UDP(Demultiplekser)
IP
Procesi
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
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
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
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
TCP/IP
TCP
TCP/IP
TCP Sadržaj
Servisi Mehanizmi Segment Konekcija Dijagram stanja Kontrola protoka Kontrola grešaka Kontrola zagušenja
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)
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
TCP/IP
Orijentacija na tok
Tok bajtova
TCP TCP
Predajni proces
Prijemni proces
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
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
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
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.
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
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.
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
TCP/IP
Enkapsulacija TCP segmenta
Zaglavljeokvira
IPzaglavlje
TCPsegment
TCP/IP
TCP konekcija Uspostavljanje konekcije Prenos podataka Raskidanje konekcije Resetovanje konekcije
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
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
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
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
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
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
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
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
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
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
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)
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)
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)
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
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.
TCP/IP
Retransmisioni tajmerV
ero
vatn
oca
Vreme odziva
Ve
rova
tno
ca
Vreme odziva
Koliko treba da bude RTO vreme ?
Ethernet Internet
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
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
TCP/IP
Određivanje RTO vremena RTO vreme:
Početno => Početna vrednost
Posle svakog merenja => RTO = RTTS + 4 RTTD
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
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