32
ETF, Katedra za računarsku tehniku i informatiku 1 Računarske mreže 1 9. deo: Transportni sloj Predavač: doc. dr Slavko Gajin, [email protected] Asistent: Dražen Drašković, [email protected] Stefan Tubić, [email protected] http://elearning.rcub.bg.ac.rs 2015. god

RM1.09. Transportni Sloj

Embed Size (px)

DESCRIPTION

ts

Citation preview

  • ETF, Katedra za raunarsku tehniku i informatiku1

    Raunarske mree 1

    9. deo: Transportni sloj

    Predava:doc. dr Slavko Gajin, [email protected]

    Asistent:Draen Drakovi, [email protected] Tubi, [email protected]

    http://elearning.rcub.bg.ac.rs2015. god

  • ETF, Katedra za raunarsku tehniku i informatiku2

    Transportni sloj Transportni sloj (Layer 4)

    u TCP/IP modelu predstavlja vezu izmeu aplikacija i mree (po vertikali) komunikacija na 4. nivou izmeu dva udaljena hosta (po horizontali) - podrazumeva se

    mogunost komunikacije sa-kraja-na-kraj koja se ostvaruje na mrenom nivou Zadatak transportnog sloja je odravanje viestrukih komunikacija izmeu

    aplikacija na obe strane

    Osnovne funkcije segmentacija i reasembliranje

    segmentacija niza podataka na aplikativnom nivou na manje delove (segmente) na strani poiljaoca

    intergrisanje segmenata u originalni niz podataka na aplikativnom nivou (reasembliranje) na prijemnoj strani

    multipleksiranje komunikacija identifikovanje aplikacija koje alju podatke

    na strani poiljaoca prosleivanje podataka oznaenim

    aplikacijam na prijemnoj strani

  • ETF, Katedra za raunarsku tehniku i informatiku3

    Transportni sloj Dodatne funkcije

    Connection oriented - uspostavljanje i odravanje komunikacione sesije Reliable delivery - pouzdan prenos

    izgubljeni ili oteeni segmenti se detektuju i ponovo alju, tako da je zagarantovan pouzdan prenos svih podatak u celini

    Ordered data reconstruction - odravanje redosleda segmenata po razliitim putevima segmenti mogu stii u promenjenom redosledu, ali prijemna strana

    rekonstruie originalni redosled Flow control - kontrola toka

    upravljanje prenosom podataka u zavisnosti od mogunosti i trenutnog optereenja mree (smanjenje brzine u sluaju zaguenja)

    Mehanizam pouzdanog prenosa i redosleda segmenata sequence nunber rastui redosled segmenata funkcije:

    praenje poslatih paketa potvrda primljenih paketa (acknowledgement) retransmisija ne potvrenih segmenata

    posledica dodatno optereivanje (overhead) transportnog sloja, koje utie na performanse

  • ETF, Katedra za raunarsku tehniku i informatiku4

    Pouzdan prenos ? Razliite aplikacije imaju razliite potrebe

    Za neke aplikacije pouzdan prenos je prioritet npr. prenos datoteka (FTP), email, HTTP itd.

    Za neke aplikacije pouzdan prenos ne samo da nije potreban, ve moe i da degradira performanse zbog dodatnoh overhead-a npr. IP telefonija, streaming audio/video itd.

  • ETF, Katedra za raunarsku tehniku i informatiku5

    TCP i UDPDve vrste protokola 4. nivoa u TCP/IP modelu UDP User Datagram Protocol

    samo osnovne funkcije connection-less protokol - jednostavan, nema garancije pouzdanosti prenosa i

    redosleda - best-effort princip VoIP, IP telefonija, Video streaming, DNS, TFTP, SNMP....

    TCP Transition Control Protocol osnovne i dodatne funkcije

    connection oriented protokol pouzdan prenos odravanje redosleda kontrola toka

    primeri: FTP, HTTP, HTTPS, email...

  • ETF, Katedra za raunarsku tehniku i informatiku6

    Portovi identifikacija aplikacija na hostu Multipleksiranje komunikacija

    polje protocol u zaglavlju na 2. nivou identifikuje protokole 3. nivoa polje protocol u zaglavlju na 3. nivou identifikuje protokole 4. nivoa na 4. nivou se koristi polje port celobrojna vrednost, dva bajta

    Port - identifikacija aplikacija na matinom hostu gde se izvravaju aplikacije na jednom hostu imaju razliite portove

    Transportni sloj na osnovu broja porta prosleuje podatke do odgovarajue aplikacije

  • ETF, Katedra za raunarsku tehniku i informatiku7

    Portovi identifikacija aplikacija na hostu IANA dodeljuje fiksne portove za pojedinane aplikacije Vrste portova (opsezi brojeva za portove razliitih namene)

    0-1023 - Well-known ports serverske aplikacije 1024-49151 - Registered Ports za klijentske i serverske aplikacije 49152-65535 Private and/or Dynamic Ports dinamiki se dodeljuju klijentskim

    aplikacijama Primeri protova

    TCP 21 FTP (File Trasport Protocol) 23 Telnet 25 SMTP (Simple Mail Transport Protocol - slanje email-a) 110 POP3 (prijem email-a) 80 HTTP (web) 443 HTTPS (secure HTTP) ...

    UDP 53 DNS (Domain Name System) 69 TFTP (Trivial File Trasport Protocol) 161 SNMP (Simple Network Management Protocol) 5004 RTP (Real Time Protocol) ...

  • ETF, Katedra za raunarsku tehniku i informatiku8

    Socket identifikacija aplikacija na mrei Socket (soket) jedinstveno identifikovanje aplikacije (procesa) na mrei Soket se sastoji od:

    IP adrese transportnog protokola (TCP ili UDP) broj porta

    Serverske aplikacije soket: IP adresa servera + unapred poznat TCU ili UDP port

    (Well-known ili Registered opsezi) raspoloive na mrei za pristup od strane proizvoljnih klijenata

    Klijentske aplikacije soket: IP adresa klijenta + dinamiki dodeljen TCU ili UDP port

    (Registered ili Private and/or Dynamic opstezi) pojedinani procesi na strani korisnika koji iniciraju konekciju sa serverskim

    aplikacijama

  • ETF, Katedra za raunarsku tehniku i informatiku9

    Klijent Server komunikacija Uspostavljanje Klijent-Server veze

    Serverske aplikacije se izvravaju (ekaju) na poznatim portovima na odreenim serverima (IP adresama)

    Klijentske aplikacije pozivaju serverske aplikacije preko poznatih soketa (poznati portovi na poznatim IP adresama) odredini soketi

    Klijentske aplikacije tom prilikom uzimaju sluajno izabrane slobodne lokalne portove izvorini soketi

    Serverske aplikacije vraaju odgovore na klijentski soket IP adresa klijenta i sluajno izabrani port

  • ETF, Katedra za raunarsku tehniku i informatiku10

    Klijent Server komunikacija Komunikacija izmeu aplikacija horizontalno izmeu aplikativnih slojeva Serverske aplikacije imaju iste portove, ali prate komunikacije sa pojedinanim

    klijentima na osnovu jedinstvenih klijentksih soketa Razliite komunikacije:

    jedna klijentska aplikacija sa vie serverskih aplikacija jedna serverska aplikacija sa vie klijentskih aplikacija vie nezavisnih komunikacija izmeu istorodnih klijentskih aplikacija (razliiti procesi,

    razliiti portovi) i iste serverske aplikacije (ista IP adresa i isti porovi)

  • ETF, Katedra za raunarsku tehniku i informatiku11

    Segmentacija aplikativnih podataka Aplikativni podaci

    mogu biti u velikim blokovima - npr. prenos cele datoteke, real-time audio/video... da ne bi zauzeli ceo komunikacioni kanal, podaci se dele u manje celine

    paketi - UDP datagremi i TCP segmenti paketima se dodaju hederi i oni se prenose u nizu

    Paketi/Segmenti treba da se enkapsuliraju i prenose na niim nivoima, koji imaju maksimalnu dozvoljenu veliinu MTU (Max. Transmission Unit)

    Default veliina segmentaobino 512 ili 536 bajta u zavisnosti od implementacije

  • ETF, Katedra za raunarsku tehniku i informatiku12

    TCP Transmission Control Protocol TCP heder (Header)

    Source Port - izvorini port sluajno dodeljen broj vei od 1023, koji e da identifikuje aplikaciju inicijatora komunikacije (klijenta)

    Destination Port odredini port poznati port koji identifikuje serversku aplikaciju predstavlja protvrdu da su se svi prethodni okteti uspeno primili Header Length duina hedera Code bits (Flags) flegovi koji oznaavaju posebne tipove paketa u odravanju sesije Window veliina dinamikog TCP prozora koliko okteta moe biti poslato pre nego

    to se dobije njihova potvrda (Ack) Checksum provera bitskih greaka, 16 bita, komplement sume TCP hedera,

    TCP podataka i TCP pseudo-hedera TCP pseudo-header polja: src i dst IP adrese, protokol i duina TCP segmenta

    donekle se kri princip slojeva, radi ukljuivanja podataka IP nivoa, koji nema proveru greke

  • ETF, Katedra za raunarsku tehniku i informatiku13

    TCP Potvrda prenosa segmenata Sequence Number (SEQ) redni broj prvog bajta aplikativnih podatka u segmentu koji se

    alje Acknowledgement Number (ACK) redni broj sledeeg bajta koji se oekuje da se primi U fazi uspostavljanja sesije uzima se sluajno izabrana vrednost SEQ za poetnu vrednost Svaki pojedinani bajt u nizu aplikativnih podataka ima svoj redni broj relativno u odnosu

    na inicijalni SEQ Prijem kontinualnog niza segmenata (svi bajtovi od poetka aplikativnih podataka) se

    potvruje sa vrednou ACK za jedan veom od rednog broja poslednjeg primljenog bajta u nizu

    znaenje ovo je sledei bajt koji se oekuje za prijem, svi prethodni su uspeno primljeni

  • ETF, Katedra za raunarsku tehniku i informatiku14

    Code bits Kontrolni biti Kontrolni biti (Code bits, Flags)

    nose informacije o kontrolnim podacima i aktiviraju pojedina polja Najznaajniji flegovi

    SYN sinhronizacija brojne sekvence (Sequence Number) pri uspostavljanju sesije FIN oznaava poslednji segment koji se alje zavrava se sesija ACK polje Acknowledgement Number je aktivno potvruje se prijem do odreenog

    bajta u segmentu

    Bitovi u polju CODE BITS

    Bit Znaenje

    URG Polje URGENT POINTER je validno

    ACK Polje ACKNOWLEDGMENT NUMBER je validno

    PSH Segment zahteva push

    RST Resetuj konekciju

    SYN Sinhronizuje brojeve sekvence

    FIN Poslednji segment u sekvenci za slanje

  • ETF, Katedra za raunarsku tehniku i informatiku15

    TCP Uspostavljanje sesije TCP connection oriented protocol

    dvosmerna komunikacija dve odvojene komunikacione sesije, u oba smera po jedna uspostavljanje, odravanje i raskidanje obe komunikacione sesije

    razliite vrednosti SEQ i ACK

    Uspostavljanje TCP sesije u tri koraka - Three-way handshake 1. korak

    inicijator sluajno bira vrednost za Sequence Number SEQ (u primeru SEQ=100) inicijator alje paket sa SYN flagom i izabranom vrednou Sequence Number

    2. korak druga strana prepoznaje i prihvata inicijativu za uspostavljanje sesije, i o tome obavetava

    inicijatora - postavlja se ACK flag, a vrednost ACK polja se postavlja na SEQ+1 sledei bajt koji se oekuje za prijem

    u istom paketu se inicira sesija u suprotnom smeru, na isti nain kao 1. korak (SEQ=300) 3. korak

    inicijator prihvata sesiju u suprotnom smeru i obavetava drugu stranu (ACK=101)

    rezultat: uspostavljene sesije u oba smera

  • ETF, Katedra za raunarsku tehniku i informatiku16

    TCP Raskidanje sesije Raskidanje TCP sesije u dva koraka u oba smera 2 x Two-way handshake

    1. korak kada jedna strana nema vie paketa za slanje, alje se FIN flag u poslednjem paketu

    2. korak druga strana potvruje prijem poslednjeg paketa slanjem ACK za taj paket sesija u tom smeru je zatvorena

    3. korak druga strana nastavlja da alje preostale pakete, dok ne doe do poslednjeg paketa u poslednjem paketu se postavlja FIN flag

    4. korak prva stran potvruje prijem poslednjeg paketa slanjem odgovarajue ACK potvrde

    rezultat: TCP sesija je prekinuta U sluaju da druga stana nema paketa

    za slanje, 2. i 3. korak se mogu objediniti

  • ETF, Katedra za raunarsku tehniku i informatiku17

    TCP Pouzdan prenosPouzdan prenos (Reliable delivery) Svaki poslati segment zahteva potvrdu (Ack) da je uspeno pristigao na strani primaoca Potvrda se eka odreeno vreme timeout

    za svaki poslati segment startuje se poseban tajmer Vreme tajmera treba da bude vee od vremena putovanja segmenta od izvorita do

    odredita i potvrda u suprotnom smeru RTT (Round Trip Time) RTT esto varira tokom vremena TCP dinamiki prati RTT i odreuje vrednost za timeout na sledei nain:

    RTT = a * OldRTT + (1-a) * NewRTTsampleNewRTTsample - poslednji izmereni RTTa faktor od 0 do 1 vea vrednost-sporije pormene, manja vrednost-bre promene

    Timeout = b * RTTb faktor uveanja (tipino b=2)

    Ako nema greaka, primalac e da poalje potvrdu za poslednji bajt poslednjeg segmenta potvrda da su svi segmenti uspeno primljeni

    Poiljalac nastavlja sa slanjem novih segmenata eka se nova potvrda da su segmenti uspeno pristigli bez greaka

  • ETF, Katedra za raunarsku tehniku i informatiku18

    TCP Oporavak od grekeOporavak od greke (Error Recovery)

    Primalac je dobio poslednji segment, ali prepoznaje da je izostao jedan prethodni segment

    UVEK se potvruje prijem POSLEDNJEG ISPRAVNOG SEGMENTA u nizu poslednji primljeni segment, koji je diskontinualan sa prethodno primljenim

    segmentima, se ne potvruje Ack se alje samo kada pristigne neki segment, bilo za taj segment ili za neki

    prethodni koji nedostaje Viestruki Ack oznaava:

    da je jedan segment izgubljen ali i da su drugi segmenti

    uspeno pristigli

  • ETF, Katedra za raunarsku tehniku i informatiku19

    TCP Oporavak od grekeRetransmisija: Kada primalac dobije retransmitovani segment

    popunie rupu u nizi primljenih podataka potvrdie poslednji ispravan segment

  • ETF, Katedra za raunarsku tehniku i informatiku20

    TCP - Rekonstrukcija redosleda segmenataRekonstrukcija redosleda segmenata (segmets reordering) U sluaju vie putanja izmeu izvorita i odredita razliiti segmenti uzimaju

    razliite putanje (Load Balancing) Moe da doe do permutacije segmenata promene redosleda prijema Prijemna strana e da rekonstruie originalni redosled na osnovu SEQ vrednosti

    primljenih segmenata

  • ETF, Katedra za raunarsku tehniku i informatiku21

    TCP - Kontrola tokaKontrola toka (Flow control) mehanizam TCP prozora (Window) Polje Window u TCP zaglavlju

    oznaava ukupan broj bajtova koji se mogu poslati pre nego to se eka na potvrdu Kada se popuni prozor

    obustavlja se sa slanjem novih segmenata eka se potvrda prethodnih segmenata sa poetka prozora potvreni segmenti se oslobaaju i oslobaa se prostor u prozoru za slanje novih

    segmenataWindow

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

    A B C D

    A Poslati i potvreni bajtoviB Poslati, ali jo nepotvreni bajtoviC Bajtovi koji se odmah mogu poslatiD Bajtovi koje se ne mogu odmah poslati

  • ETF, Katedra za raunarsku tehniku i informatiku22

    TCP - Kontrola toka Prozor odreene veliine se pomera po nizu aplikativnih podataka koji se alju

    Zato se mehanizam prozora esto naziva i Sliding Window

    Kontrola toka: Manji prozor - vie ekanja, sporije slanje Vei prozor - manje eka, bre slanje

    Sprovodi se nezavisno u svakom smeru

    Initial window

    1 2 3 4 5 6 7 8 9 10 ...

    window slides

    1 2 3 4 5 6 7 8 9 10 ...

  • ETF, Katedra za raunarsku tehniku i informatiku23

    TCP Kontrola toka TCP dinamiki uspostavlja veliinu prozora

    Zato se mehanizam prozora esto naziva i Dynamic Window Inicijalno se obe strane dogovore o veliini prozora U sluaju gubitka paketa ili greke

    vri se oporavak od greke retransmisija ako je prijemna strana zaguena, moe da zahteva smanjenje trenutne veliine

    prozora zajedno sa ACK znak poiljaocu da uspori slanje segmenata

    U sluaju da nema greaka poiljalac postepene poveava veliinu prozora

  • ETF, Katedra za raunarsku tehniku i informatiku24

    TCP Kontrola zaguenja Kontrola zaguenja (congestion control) -

    TCP moe da se dinamiki prilagodi trenutnom optereenju u mrei poiljalac prilagoava brzinu slanja u zavisnosti od propusnog opsega i potencijalnog

    zaguenja na putu Moderne implementacije TCP protokola obuhvataju sledee algoritme kontrole

    zaguenja: Slow start Congestion avoidance Fast retransmit Fast recovery

  • ETF, Katedra za raunarsku tehniku i informatiku25

    TCP Slow start Tokom uspostavljanja sesije primalac oglaava veliinu prozora, kojim kontrolie

    prijem segmenata Advertised Window (AW, awnd) Da bi se izbeglo potencijalno zaguenje, poiljalac ipak ne alje sve segmente

    na poetku sesije Uvodi se Congestion Window (CW, cwnd) kontrolie ga poiljalac Veliina prozora na strani poiljaoca:

    min(AW, CW) Slow start

    inicijalna vrednost za CW je 1 segment CW se poveava sa svakim Ack za 1

    Ako se potvruje svaki segment, CW se u svakom koraku poveava za 2

    1, 2, 4, 8 .... eksponencijalno U praksi se tipino Ack alje

    za 2 segmenta, pa je rast neno manjeali i dalje eksponencijalan (slow ?)

  • ETF, Katedra za raunarsku tehniku i informatiku26

    TCP - Congestion avoidance Congestion avoidance usporiti slanje kada doe do gubitka paketa, linearno

    poveanje prozora Indikacija gubitka paketa na strani poiljaoca: timeout segmenta ili dupli Ack Uvodi se veliina Slow Start Threshold Size ssthresh

    inicijalna vrednost za ssthresh je 65535 u sluaju timeout ili dupli Ack (zaguenje) ssthresh uzima vrednost polovine trenutno

    primenjenog prozora dodatno u sluaju timeout-a cwnd se postavlja na 1 ako je cwnd < ssthresh

    slowstartcwnd se poveava eksponencijalno

    ako je cwnd > ssthresh congestion avoidance

    cwnd se poveava linearno (najvie za jedan segment)

    Globalni efekat uestale greke e prozor

    brzo smanjiti na malu vrednost ako nema greaka prozor e

    se postepeno poveavati i podaci e se intenzivnije slati

  • ETF, Katedra za raunarsku tehniku i informatiku27

    TCP Fast retransmit Kada poiljalac primi dupli Ack za neki segment, ne zna se da li je segment

    izgubljen ili je dolo do promene redosleda (reordering) Tek kada se desi viestruki Ack za neki segment, smatra se da je segment zaista

    izgubljen Fast retransmit je tehnika koja sprovodi retransmisiju pre isteka timeout-a, u

    sluaju da se dobio viestruki Ack za neki segment

  • ETF, Katedra za raunarsku tehniku i informatiku28

    TCP Fast recovery Fast recovery podrazumeva da se posle Fast retransmit procesa:

    ne sprovodi slow start, jer se smatra da je rupa popunjena(ne smanjuje se prozor na 1 segment i ne sprovodi se eksponencijalni rast)

    sprovodi se samo congestion avoidance (prozor se smanjuje na pola i linearno poveava)

    Fast recovery se sprovodi u kombinaciji sa Fast retransmit tehnikom Razliite implementacije TCP-a mogu da imaju razliite optimizacije reagovanja

    prozora na nestanak segmenta

  • ETF, Katedra za raunarsku tehniku i informatiku29

    UDP User Datagram Protocol UDP zaglavlje samo 8 bajtova

    izvorini i odredini port duin paketa (datagrama) checksum provera greke, ali ne i korekcija

    Karakteristike UDP protokola Connectionless

    ne uspostavlja konekciju pre slanja podataka svaki datagram se nezavisno prenosi

    Unreliability nepouzdan izgubljeni ili oteeni paketi (datagram) se ne mogu retransmitovati nema kontrole i provere redosleda pristizanja paketa ako je potrebno, aplikacija koja koristi UDP mora da implementira ove funkcije

    Low overhead brz, jednostavan, ne zahteva velike mrene i procesorske resurse

  • ETF, Katedra za raunarsku tehniku i informatiku30

    UDP Primena Mnoge aplikacije ne zahtevaju pouzdanost prenos i UDP funkcije su dovoljne

    (npr. periodian prenos manje koliinu podataka) Primeri

    DNS Domain Name System SNMP Simple Network Management Protocol DHCP Dynamic Host Configuration Protocol RIP Routing Information Protocol TFTP Trivial File Transfer Protocol

    Nekim aplikacijama bi TCP predstavljao problem veliko zaglavlje, a podaci se kontinualno prenose u malim koliinama kontrola greke, retransmisija, dinamiki prozor mogu da uspore podatke i degradiraju

    prenos Real-Time saobraaj VoIP Voice Over IP Video Streaming

  • ETF, Katedra za raunarsku tehniku i informatiku31

    UDP saobraajPrimer: VoIP, IP Telefonija, IP TV interaktivan prenos zvuka i slike zahtevi

    malo kanjenje (delay) do 200 ms za interaktivan razgovor mala varijacija kanjenja - diter (jitter) +/- 30 ms manji gubitak paketa se moe tolerisati

    ako se izgubi neki paket, retransmisija bi naruila kanjenje i diter povremeni gubitak nekog paketa nije primetna za uesnike u komunikaciji - kvalitet se ne

    naruava znaajno

  • ETF, Katedra za raunarsku tehniku i informatiku32

    Literatura CCENT/CCNA ICND1,

    official exam certification guide, Wendell Odom, Cisco Press, 2008

    CCNA curriculum, Cisco

    Douglas Comer Internetworking with TCP/IP

    IBM - TCP/IP Tutorial and Technical Overview, www.ibm.com/redbooks