Microsoft Word - Tema 6_Nivelul Transport

Embed Size (px)

Citation preview

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    1/20

    111

    Tema 5. NIVELUL TRANSPORT

    Tema descrie funciile pe care nivelul transport le ndeplinete ntr-o reea de calculatoare. Suntevideniate calitatea serviciilor realizate la nivel transport i primitivele pe baza crora se pot

    realiza aceste servicii. O atenie cuvenit se acord adresrii la nivel transport, ceea ce permitemultiplexarea i recunoaterea individual a aplicaiilor care pot rula simultan pe aceeai staie delucru sau pe staii diferite. De asemenea se detaliaz algoritmii de stabilire a conexiunilor la acestnive. Apoi se prezint cele dou protocoale de baz de nivel transport (TCP i UDP) care mpreuncu protocolul IP stau la baza funcionrii actuale a Internetului.

    Dup parcurgerea i nsuirea acestei teme, studentul va cunoate: Cum se se realizeaz comunicaia la nivel transport ntre dou entiti pereche ca

    utilizatori finali, inclusiv fragmentarea i reasamblarea mesajelor Legtura cu protocoalele de pe nivelele adiacente Ce sunt adresele de transport, cum se identific aplicaiile individuale i cum se face

    multiplexarea n jos Funcionarea protocoalelor UDP i TCP i formatul datagramelor corespunztoare Programarea de aplicaii cu socluri n Java

    Orele de laborator urmresc dezvoltarea de aplicaii de comunicaie la nivel transportfolosind programarea cu socluri n UNIX i Java.

    Studenii vor realiza ca tem de cas un program de comunicaie client server

    Timpul minim pe care trebuie s-l acordai studierii acestui modul este de 6 ore.

    Nivelul transportare rolul de a transporta datele de la maina surs la maina desinaientr-o manier sigur i eficace din punct de vedere al costurilor, independent de reeaua sau dereelele fizice folosite. La acest nivel serviciile pot fi orientate pe conexiune, cazul cel mai uzual, sauneorientate pe conexiune. Bazndu-se pe serviciile furnizate de nivelul reea, nivelul transport

    furnizeaz nivelului aplicaie o legtur sigur cap la cap i intervine mai ales atunci cnd transferulde date la nivel reea ntmpin dificulti: cad rutere, apar congestii, se pierd frecvent pachete, aparntrzieri mari etc.

    5.1Calitatea serviciilor (QoS) la nivel transport

    Calitatea serviciilor asigurate de nivelul transport se poate aprecia printr-un numr deparametrii de calitate ale cror valori se precizeaz sau se negociaz n faza de stabilire a conexiunii

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    2/20

    112

    la nivel transport. Numrul parametrilor QoS poate fi mare, dar furnizorii de reele garanteaz ngeneral un numr mic.Exemple de astfel de parametrii QoS sunt:

    ntrzierea la stabilirea legturiise refer la timpul scurs ntre momentul lansrii unei cereride stabilire a conexiunii la nivel transport i primirea confirmrii de realizare a acesteia;

    Probabilitatea de insucces la stabilirea conexiuniicorelat i cu un interval maxim de timpconvenit;

    Rata de transferprecizat sub forma numrului de octei sau de bii de date utilizatortransferate n unitatea de timp. Ea se precizeaz pentru ambele sensuri de transmisie i estelegat de anumite cerine de transfer, cum ar fi: rat constant (CBR constant bit rate), ratde transfer variabil (VBR - variable bit rate), rat disponibil (ABR avalable bit rate) etc.;

    ntrziereatransmiterii datelorreprezentnd timpul scurs din momentul emiterii unui mesajde ctre maina surs i pn n momentul recepionrii lui de ctre maina destinaie;

    Rata rezidual a erorilor reprezent procentul de pachete, mesaje sau date pierdute sautransmise incorect, erori care nu sunt corectate n niciun fel.

    Prioritarean stabilirea de conexiuni, de transfer a datelor, de restabilire a defectelor de reeaetc.;

    Protecia datelor mpotriva accesului neautorizat, pierderii, deteriorrii, etc i n generalgradul de implementare a serviciilor de securitate pn la nivelul transport;

    Reziliena reprezentnd probabilitatea ca nivelul transport s nchid brusc o conexiunedatorit unor probleme interne.

    Transferul de date n timp realreprezint capabilitatea reelei de a transfera datele pe msurce ele se produc, fr ntrzieri variabile n nodurile reelei. Acest parametru este foarteimportant n aplicaiile de transfer de date n timp real, cum ar fi reelele vocale,videoconferin etc.

    CBR (transfer de date cu rat constant) arat capabilitatea unui canal de comunicaie de atransfera datele cu o rat constant garantat;

    VBR (transfer de date cu rat variabil) arat capabilitatea unui canal de comunicaie de aasigura rate de transfer variabile n funcie de disponibilitile de moment ale reelei.

    Nivelul transport face posibil ca serviciile de transfer de date s fie mai sigure dect cele denivel reea. Datele pierdute sau recepionate incorect pot fi detectate i corectate de ctre nivelultransport.

    5.2 Primitivele de baz ale serviciului transport

    n funcie de complexitatea sa i de serviciile pe care poate s le asigure nivelului superior (nspecial nivelului aplicaie), nivelul transport poate fi mai simplu sau mai complex. n cazul cel mai

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    3/20

    113

    simplu, un serviciu de transport trebuie s permit stabilirea conexiunii ntre punctele finale aleaplicaiei, transferul datelor i desfacerea conexiunii. n acest scop se pot folosi 5 primitive (aciuni)simple de genul celor specificate mai jos.

    Tabelul 5.1

    Primitiva PDU transmis ExplicaiiLISTENCONNECTSENDRECEIVEDISCONNECT

    -Connection REQ

    Date-

    Disconnection REQ

    Se blocheaz n ateptarea unei cereri de conectareCerere de stabilire conexiuneTransmitere informaie utilizatorSe blocheaz pn la primirea datelorCerere de desfacere a conexiunii (oricare parte)

    Orice mesaj schimbat ntre dou entiti corespondente la nivel transport se numete genericTPDU -Transport Protocol Data Unit (unitate de date protocol de nivel transport). El conineinformaia util (a unui proces, primitiv etc.) i un antet de nivel transport. Mesajul astfelmpachetat, este plasat nvelului inferior, reea, care i adaug antetul de reea i l trimite mai jos la

    nivel legtur de date unde este plasat n cadre spre a fi livrat mediului fizic.ntr-un exemplu simplu de conexiune la nivel transport ntre un client i un server aflat ladistan, cele 5 primitive de mai sus sunt folosite dup cum urmeaz. n repaus serverul executprimitiva LISTENcare l ine blocat n ateptarea unei cereri de conexiune. Cnd un client doretes se conecteze la server, el execut primitivaCONNECTcare, apelnd la o funcie de bibliotectrimite o cerere de conectare (TPDU de tipul Connection REQ) spre server. n acelai timpblocheaz apelatorul pentru a nu executa alte aciuni pn ce nu a primit un rspuns. Cnd soseteapelul la server, entitatea transport (softul de nivel transport) de pe server verific dac serverul esteblocat n LISTEN (deci dac ateapt o cerere de conexiune). Dac da, l deblocheaz i trimitenapoi clientului un TDPU de tipul Connectoin Accepted. Cnd aceasta ajunge la client ldeblocheaz i conexiunea este stabilit. Acum poate ncepe schimbul de date folosind primitivele

    SEND i RECEIVE. Cea mai simpl posibilitate este ca una din pri s execute RECEIVEateptnd date de la cealalt, iar aceasta s execute SEND (s trimit date). Sosirea pachetului dedate deblocheaz receptorul din starea RECEIVE, permite acestuia s prelucreze TDPU-ulrecepionat i s trimit napoi i un rspuns. Totul merge bine dac fiecare parte tie cine trimite icine ascult pe rnd. Cnd se dorete ncheierea conexiunii, una dintre pri trimite un TDPU de tipulDisconnectoin REQcare declaneaz procedura de ncheiere.

    5.3 Adresarea la nivel transport

    Adresa de transport este folosit pentru a defini o conexiune ntre dou entiti corespondentefinale pe care ruleaz o aplicaie, un proces. Conexiunea la acest nivel trebuie s precizeze attmaina pe care ruleaz aplicaia, ct si aplicaia propriu-zis. Prin urmare, adresele de nivel transportsunt necesare pentru a identifica procesele care comunic simultan i trimit date pe nivelurileinferioare pentru a fi mpachetate succesiv i transferate mediului fizic. De exemplu, pe un calculatorgazd pot rula simultan mai multe aplicaii de tipul transfer de fiiere, pot electronic, navigare peInternet, transmisii de voce etc. Toate aceste date ajung ntr-o form multiplexat pe acelai mediufizic, linia de comunicaie la care este conectat gazda. La cellalt capt, aplicaiile pot rula pe

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    4/20

    114

    servere sau pe gazde diferite. Identificarea aplicaiilor se face la nivel transport prin adrese specialecare, n cazul protocolului TCP au lungimea de 16 bii (n total 65 535 puncte finale posibile).

    Un punct final al unei conexiuni la nivel transport trebuie ns legat i de o main (gazd)anume, adic este nevoie i de o adres de reea. n Internet, asocierea dintre o adres de reea(adres IP) i o adres de transport (adres TCP) formeaz ceea ce se numete socket(soclu).

    Stabilirea conexiunilor la nivel transport folosind soclurile TCP necesit un set de primitivespecifice prin care:

    - se creaz socluri,

    - se ascult cererilece pot aprea (se urmrete activitatea lor),

    - se ataeaz fluxuri de date,

    - se transmit sause recepioneaz date,

    - se accept sause refuz deschiderea unei conexiuni,

    - se valideaz sause blocheaz activitatea pe un socluetc.

    Tabelul 5.2 Primitive de soclu

    Primitiva Parametrii Valoarea ntoars Funciasocket( ) service type, protocol address format socket descriptor or

    error codeAtaeaz o adres local

    la un soclu

    bind( ) host IP address + port number success or error code Creaz un nou punct decapt al comunicaieilisten( ) socket descriptor, maximum queue

    lengthsuccess or error code Anun disponibilitatea de

    a accepta conexiuniaccept( ) socket descriptor, socket address success or error code Blocheaz apelantul pn

    la sosirea unei noi cereri

    connect( )socket descriptor, local port number,destination port number, destinationIP address, precedence, optional data(for example a user name and a

    success or error codeProcedura de stabilire a

    conexiunii

    ReeaReea

    NSAPTrans.

    TSAP xAplic.

    LD

    Fizic

    Gazda 1

    Reea

    NSAP

    TSAP y

    Gazda 2FTP E-MAIL HTTP

    PDU

    Porturi

    Fig. 5.1 Puncte de acces la servicii la nivel reea i transport

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    5/20

    115

    password)

    send( )socket descriptor, pointer to messagebuffer containing the data tosend, datalength (in bytes), push flag, urgentflag,

    success or error code Trimiterea datelor princonexiunea stabilit

    receive( )

    socket descriptor, pointer to a

    message buffer into which the datashould be put, length of the buffer

    success or end of file

    (EOF) or error code

    Recepia datelor prin

    conexiune

    close( ) socket descriptor success or error code nchiderea socluluishutdown() socket descriptor success or error code Eliberarea conexiunii

    5.3.1.Stabilirea conexiunii

    Protocoalele de nivel transport sunt, n general, orientate pe conexiune. La prima vedere,stabilirea unei conexiuni pare o chestiune simpl, realizabil doar prin 2 primitive: ConnectionRequest i Connection Accepted. Problema se complic atunci cnd reeaua pierde pachete, cnd

    apare congestia, cnd are loc multiplicarea pachetelor n reea etc. Gazda destinaie trebuie s poatsesiza i rezolva asemenea anomalii i s refuze duplicarea unei conexiuni. Pentru aceasta se potfolosi mai multe reguli: contor de timp, contor de duplicare, numr de secven etc. Analiza acestorreguli a condus la concluzia c cel mai potrivit este algoritmul de stabilire a conexiunii n 3 pai.Acest protocol nu necesit ca ambele pri s nceap s transmit cu acelai numr de secven.Gazda 1 alege un numr de secven xpe care l transmite gazdei 2 n pachetul connection request.Gazda 2 rspunde cu connection accepted, confirm numrul de secven xi transmite i numrulpropriu de secven y.Gazda 1 va confirma recepia numrului de secven y n primul pachet dedate trimis spre gazda 2. Dac n timp va sosi la gazda 2 un pachet duplicat de la o cerere deconexiune mai veche, gazda 1 nu va ti n primul moment despre acest lucru. Gazda 2 i va trimiteconfirmarea cererii c 1 a ncercat s stabileasc o conexiune, iar aceasta din urm tiind c nu a

    fcut o asemenea cerere, o va refuza. Cele dou scenarii posibile descrise anterior se pot vedea n fig.5.2.

    Folosirea adreselor de nivel transport este util i pentru multiplexarea la acest nivel. S-aprecizat mai nainte c pe aceeai gazd pot rula la un moment dat mai multe aplicaii (procese

    Duplicat vechi

    Gazda 1 Gazda 2

    CR (seq=x)

    ACK (seq=y, ACK=x)

    REJECT (seq=y, ACK=x)

    Gazda 1

    Timp

    Gazda 2

    CR (seq=x)

    ACK (seq=y, ACK=x)

    DATA (seq=y, ACK=x)

    a) b)

    Fig. 5.2 Algoritmul stabilirii conexiunii n 3 paia) cazul normal b) cazul cu pachete duplicate

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    6/20

    116

    utilizator) care sunt trimise n jos, la o singur adres de reea i apoi spre nivelul fizic pentru a fipuse n canalul de comunicaie. n reeaua de comunicaie ele pot urma aceeai cale sau pot avea cidiferite, dup cum au aceeai destinaie sau nu. Se spune s-a fcut o multiplexare n susi ea are locla nivelul transport. Problema se poate pune i n alt mod. O aplicaie stabilete o conexiune la niveltransport i solicit o anumit rat de transfer. Se poate constata c o asemenea rat este insuficientpentru aplicaie i atunci se mai cere deschiderea unei alte conexiuni pentru acceai aplicaie. Se

    spune atunci c s-a fcut o multiplexare n jospentru a oferi band suficient transferului de date.

    n concluzie, un protocol de transport trebuie s asigure, n principiu, urmtoarele servicii:

    Stabilirea i desfacerea conexiunilor;

    Adresarea;

    Multiplexarea;

    Controlul fluxului;

    Tratarea erorilor cap la cap;

    Refacerea dup cdere a unei conexiuni

    5.3.2 Un protocol de transport simplu

    Cel mai simplu protocol de transport orientat pe conexiune se poate implementa folosind cele5 primitive de transport descrise mai nainte. Aceste primitive sunt utilizate de nivelul transportpentru a trimite i recepiona TPDU-uri. n general, entitatea transport poate s fie o parte asistemului de operare a calculatorului gazd, sau poate fi un pachet de funcii de bibliotec rezidenten spaiul de adrese utilizator. n acest ultim caz, fiecare primitiv corespunde unei funcii debibliotec care execut un mic program. Fiecare funcie trebuie apelat cu parametrii corespunztorii execuia ei ntoarce un rezultat care poate fi un numr de conexiune, o stare etc. Parametriifunciilor de bibliotec i rezultatele ntoarse sunt descrise n continuare.

    id_conex=LISTEN(local)id_conex =CONNECT(local,remote)stare=SEND(connum,buffer,bytes)stare=RECEIVE(connum,buffer,bytes)stare=DISCONNECT(connum)

    Primitiva LISTENarat disponibilitatea serverului de a accepta cereri de conexiune la niveltransport. Utilizatorul primitivei este blocat pn cnd se face o ncercare de conectare la TSAP-ulspecificat prin parametrul local.

    Primitiva CONNECTare 2 parametrii, un TSAP local i un TSAP aflat la distan, adic 2adrese de nivel transport. Dac reuete, ea ntoarce id_conex, un numr nenegativ, folosit pentru aidentifica conexiunea creat. Dac nu reuete, ea ntoarce un numr negativ pus n id_conexprincare se poate descrie i motivul eecului (conexiune deja existent, adres local incorect, adresndeprtat inexistent etc.).

    Primitiva SEND trimite coninutul unui buffer specificat prin parametru ca mesaj peconexiunea indicat de id_conex, eventual divizat n mai multe uniti (bytes). Erorile posibile sunt

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    7/20

    117

    ntoarse n stare i ar putea fi: nu exist conexiune, adres de buffer incorect, numr de bytesnegativ etc.

    Primitiva RECEIVE indic faptul c apelantul este n ateptarea recepiei datelor peconexiunea indicat de id_conex, de la zona de memorie specificat de buffer, de lungime precizatprin parametrul bytes. n caz de eroare, rutina (funcia de bibliotec) ntoarce n stare un numrnegativ care codific tipul de eroare aprut.

    Primitiva DISCONNECTpune capt conexiunii specificat prin parametrul id_conex. n cazde succes ntoarce 0 n variabila stare, altfel ntoarce un numr negativ care codific cauzainsuccesului.

    Interfaa cu nivelul reea se face prin intermediul unor proceduri de tipul to_net ifrom_net,fiecare avnd un numr de parametrii. Prima este folosit pentru a plasa TPDU-urile n jos sprenivelul reea unde vor fi mpachetete corespunztor, iar a doua este folosit pentru a extrage pachetede pe nivelul reea pentru a fi prelucrate de nivelul transport. Semnificaia parametrilor proceduriloreste urmtoarea:

    - identificatorul conexiunii id_conex, n coresponden biunivoc cu circuitul virtual de lanivelul reea.

    - tipul de mesaj- tipul de pachet (specificat n Tabelul 5.3)- dac mesajul continu i n pachetul urmtor etc.

    Tabelul 5.3Tip de pachet Semnificaia

    Call RequestCall AcceptedClear RequestClear ConfirmationData

    Credit

    Pentru stabilirea conexiuniiRspuns la Call RequestPentru eliberarea conexiuniiRspuns la Clear RequestPentru transport date

    Pachet de control pentru gestionarea ferestrei

    Un program n cod surs scris n limbaj C++ pentru un protocol simplu de nivel transport esteprezentat n [Tan].

    5.4 Protocolul UDP(User Datagrame Protocol)

    Acesta este un protocol simplu, neorientat pe conexiune, folosit pentru transmiterea rapid dedatagrame peste protocolul de reea din Internet (IP). Este descris n RFC 768. O datagram UDP are

    un antet de 8 octei i informaie utilizator.

    Bii 1 15 16 32

    Port surs Port destinaieLungime UDP Sum de control UDP

    Fig. 5.3 Antetul UDP

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    8/20

    118

    Cele dou porturi (Port surs i Port destinaie) servesc pentru identificarea punctelorterminale surs i destinaie. Fr aceste cmpuri, protocolul de transport nu ar ti ce s fac cupachetele recepionate. Portul surs este folosit de destinaie atunci cnd trebuie s dea un rspunssursei. Coninutul su este copiat n spaiul portului destinaie din pachetul de rspuns. CmpulLungimeUDPinclude antetul i datele. Cmpul Sum de control este opional.

    UDP este un protocol simplu, cu puine faciliti. Nu realizeaz controlul fluxului, al erorilor,nu retransmite datagrame pierdute etc. El pur i simplu ofer IP-ului un mijloc de multiplexare aproceselor (aplicaiilor) folosind porturile de nivel transport. Este utilizat n transferurile scurte dedate, gen ntrebare rspuns n aplicaiile client - server. Un client trimite o cerere scurt spre serveri ateapt un rspuns scurt. Dac acesta nu vine ntr-un timp ateptat, atunci repet cererea.

    Un exemplu tipic de utilizare este ntre un client i serverul DNS (Domain Name System)pentru aflarea adresei IP corespunztoare unui nume de gazd, de exemplu www.titu_maiorescu.ro.Nu este nevoie de deschiderea unei conexiuni, nici de nchidere, pentru un transfer a dou mesajescurte care traverseaz reeaua. Procedura de aflare a adresei IP a unui calculator gazd,get_IP_address(host_name), funcioneaz prin transmiterea unui pachet UDP spre serverul DNS i

    ateptarea rspunsului.

    Un alt caz n care UDP este mult folosit este cel al aplicaiilor multimedia n timp real (voce,video conferin, radio etc.). n acest scop s-a elaborat un protocol de transfer n timp real (RTP Real-Time Transport Protocol), definit n RFC 1889. El este plasat deasupra UDP (n spaiulutilizator). Aplicaiile multimedia sunt trimise protocolului RTP. Aceasta le multiplexeaz, lecodific n pachete UDP i le trimite printr-un soclu nivelelor inferioare (reea, LD, fizic).

    RTP arat ca un protocol de aplicaie rulnd n spaiul utilizator, dar de fapt furnizeazfaciliti de transport. Funcia sa principal este de multiplexare a mai multor fluxuri de date n timpreal ntr-un flux de pachete UDP. Acesta poate fi transmis ctre o singur destinaie (unicast) sauspre mai multe desinaii (multicast).

    Fiecrui pachet RTP i se d un numr de ordine pe baza cruia destinatarul poate face celmult o aproximare prin interpolare n caz de pierdere de pachete, retransmisia nefiind o soluiepractic. n consecin, RTP nu are mecanisme de confirmare sau retransmisie. Totui n unele cazurin care apar eecuri repetate ale transmisiei i crete numrul de pachete eronate, RTP poate apela unalt protocol de control al transportului n timp real (RTCP Real time Transport ControlProtocol). Acesta nu transport date utilizator, dar poate fi folosit pentru reducerea debitului laemisie, cerere suplimentar de band, semnalarea congestiei etc.

    Aplicaie multimedia

    RTP

    Spaiuutilizator

    Interfaade soclu

    UDP

    IP

    Ethernet

    SpaiuSistemuluide operare

    Informa ie util RTP

    AntetEthernet

    AntetUDP

    AntetRTP

    AntetIP

    Informa ie util UDPInforma ie util IP

    a) b)

    Fig. 5.4 a) Stiva de protocoale Ethernet/IP/UDP/RTP b) ncapsularea

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    9/20

    119

    Antetul RTP conine 3 cuvinte de 32 bii i eventual extensii.

    Ver(siune) arat versiunea RTP, n prezent fiind 2.P arat c pachetul este multiplu de 4 octei.X arat antet extins.CCarat cte surse contribuabile sunt prezente (maxim 15).M bit de marcare specific aplicaiei (de exemplu nceputul unui cadru video)..Tip informaie utilarat ce algoritm de codare a fost utilizat (8 bii audio necomprimat, MP3,

    etc.).Numr de secveneste un contor incrementat cu fiecare pachet RTPAmprenta de timpeste stabilit de sursa fluxului pentru a ti cnd a fost fcut primul pachet.Identificatorul sursei de sincronizarespune crui flux i aparine pachetul.Este folosit pentru

    multiplexarea/demultiplexarea mai multor fluxuri de date ntr-un singur flux de pachete.Identificatorul sursei care contribuie este folosit atunci cnd se mixeaz mai multe surse

    audio.

    5.5 TCP (Transmission Control Protocol)

    TCP este protocolul principal care permite transportul sigur al datelor de la un capt la altul alunei conexiuni ntr-o reea mare i nesigur, format din mai multe reele. A fost proiectat specialpentru Internet i este larg folosit n acest scop. O inter-reea este, n general, o colecie de diferitereele interconectate, care difer ntre ele prin multe aspecte: topologie, lrgime de band,dimensiunea pachetelor, ntrzieri, protocoale la nivel reea i mai jos etc. TCP a fost definit oficialn RFC 793, dar a fost mbuntit i actualizat prin mai multe recomandri (RFC 1122, RFC 1323).Fiecare main care suport TCP dispune de o entitate de transport TCP (modul software) fie caproces utilizator, fie ca procedur de bibliotec, fie ca parte a nucleului sistemului de operare.Entitatea TCP accept blocuri compacte de date utilizator de la procesele locale pe care le mparte nfragmente ce nu depesc 64 K octei (de regul 1460 de octei pentru a ncpea ntr-un singur cadruEthernet mpreun cu antetele TCP i IP) i expediaz fiecare fragment ca o datagram IP separat.

    Cnd datagramele coninnd informaie TCP sosesc la destinaie, entitatea TCP de pe mainarespectiv reconstruiete fluxul original de date utilizator i l livreaz aplicaiei de la care provine.Deoarece protocolul IP peste care ruleaz de regul TCP, nu ofer nici o garanie c datagramele vorfi livrate corect (ca erori, ordine, sau chiar pierdere), TCP are sarcina de a verifica corectitudinealivrrii i poate decide retransmisia la nevoie. Pe scurt, TCP-ul ofer fiabilitatea pe care toiutilizatorii o doresc i pe care IP-ul nu o asigur.

    Bii 1 2 3 4 8 9 16 24 32

    M Tip informaie utilVer P X CC Numr de secven

    Amprenta de timp

    Identificatorul sursei de sincronizare

    Identificatorul sursei care contribuie

    Fig. 5.5 Antetul RTP

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    10/20

    120

    5.5.1 Adresele TCP

    TCP este un protocol (serviciu) orientat pe conexiune care asociaz nite puncte finale numitesocluri(sockets) aflate pe maini corespondente. Fiecare soclu are un numr de soclu (adres TCP)compus din adresa IPa mainii gazd i un numr local de 16 bii numit port. Pentru a obine oconexiune TCP trebuie stabilit explicit o conexiune ntre un soclu de pe o main surs i un soclu

    de pe o main destinaie. Conexiunea este definit prin soclurile celor dou capete. Numrul deporturi care se pot folosi este 216=65 536. Dintre acestea, cele mai mici de 265 se numesc porturigeneral cunoscute i sunt rezervate serviciilor standard. Cteva porturi rezervate sunt date n Tabelul5.4. Porturile nerezervate se pot atribui dup bunul plac al utilizatorilor.

    Tabelul 5.4 CtevapPorturi rezervatePort Protocol Descriere21232569

    7980

    110119

    FTPTelnetSMTPTFTP

    FingerHTTPPOP-3NNTP

    Transfer de fiiereConectare la distanE-mailPortocol simplu de transfer de fiier

    Cutare informaii despre utilizatorWorld wide webAcces prin e-mail la distantiri USENET

    Toate conexiunile sunt full duplex i punct la punct. TCP nu suport difuzarea parial sautotal. O conexiune TCP este un flux de octei i nu un flux de mesaje. Dimensiunile mesajelor nu seconserv de la un capt la altul. De exemplu, entitatea TCP emitoare citete blocuri de cte 512octei pentru a fi trimise destinatarului. Transmiterea se poate face bloc cu bloc, sau concatenat ca 2blocuri de cte 1024 octei sau un bloc de 2048 octei.

    Cnd o aplicaie trimite date spre TCP pentru transfer, ele pot fi transferate imediat, sau pot fi

    stocate ntr-un buffer pentru a colecta o cantitate mai mare. TCP are i posibilitatea de a transmitedate n regim de urgen prin ntreruperea unui proces n derulare i livrarea imediat a dateloracumulate.

    O caracteristic important a TCP este c fiecare segment TCP are un numr propriu desecven de 32 de bii. Acesta este folosit att pentru secveniere(refacerea mesajului prin aezareasegmentelor n ordine fireasc) ct i pentru confirmarea segmetelor recepionate.

    O datagram TCP conine antetul format dintr-o parte fix de 20 de octei i o parte opionalde unu sau mai multe cuvinte de 32 de bii, plus ncrctura cu date utilizator (payload) de lungimeopional (inclusiv zero). Entitatea TCP este cea care decide ct de mare este ncrctura. Ea poateacumula ntr-un singur segment informaie provnit de la mai multe scrieri (blocuri de date), sau

    poate fragmenta informaia provenit de la o singur scriere n mai multe fragmente. Exist doulimite care restricioneaz dimensiunea unei datagrame. n primul rnd aceasta inclusiv antetultrebuie s ncap n dimensiunea maxim de 65 535 octei de informaie util admis de IP. n aldoilea rnd fiecare reea are o unitate maxim de transfer (MTU - maximum transfer unit) n caretrebuie s ncap segmentul. De regul, MTU este 1500 octei dat de reeaua Ethernet.

    Protocolul TCP este un protocol sigur, cu confirmare. Atunci cnd un transmitor emite odatagram, el pornete un cronometru. Cnd aceasta ajunge la destinaie, entitatea TCP receptoaretrimite napoi ntr-o datagram cu informaie util (dac aceasta exist, sau fr n caz contrar) i

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    11/20

    121

    numrul de secven urmtor pe care l ateapt, ceea ce constituie confirmarea recepieicorecte. Dac transmitorul nu primete aceast confirmare ntr-un timp prestabilit, retransmitesegmentul neconfirmat.

    Timpul prestabilit pentru confirmarea datagramelor sau retransmiterea lor n caz deneconfirmare, se poate modifica n funcie de calitatea reelei de transmisie, pe baza unui protocolcu fereastr glisant (folosete n acest scopcmpulDimensiune ferestrdin antetul TCP).

    Antetul datagramei TCP este prezentat n fig 5.6.

    CmpurilePort sursi Port destinaieidentific punctele finale ale conexiunii i constituietotodat un identificator al conexiunii.

    Cmpurile Numr de secven i Numr de confirmare au semnificaia funciilor desecveniere i confirmare descrise mai sus.

    Lungimea antetului TCPindic numrul de cuvinte de 32 de bii care sunt coninute n antetulTCP. Avnd 3 bii la dispoziie, rezult c aceast lungime poate fi de maxim 8 cuvinte, adic spaiul

    opional poate avea cel mult 3 cuvinte de 32 bii.

    Bitul URGpoziionat pe 1 arat c Indicatorul urgenteste valid. Acest indicator este folositpentru a arta deplasarea n octei fa de numrul curent n secven la care se afl informaieurgent. Aceast facilitate ine loc de mesaj de ntrerupere.

    BitulACKpe 1 indic faptul cNumrul de confirmareeste valid. Dac este poziionat pe 0,segmentul n discuie nu conine o confirmare si cmpulNumr de confirmareeste ignorat.

    Bitul PSH indic informaia forat, adic trebuie livrat aplicaiei ndat ce a fostrecepionat, fr a mai fi memorat n buffere din raiuni de eficien.

    Bitul RST este folosit pentru a desfiina o conexiune care a devenit inutilizabil din cauzaunor defeciuni ale mainilor gazd sau din alte motive. Este de asemenea utilizat pentru a refuzadeschiderea unei conexiuni iniiat de un segment invalid de call request.

    Bii 1 2 3 4 8 9 16 24 32

    Dimensiunea ferestreiLung.antet NefolosiiTCP

    Port destinaie

    Numr de secven

    Numr de confirmare

    Opiuni (unul sau nai multe cuvinte de 32 de bii)

    Fig. 5.6 Antetul TCP

    Port surs

    URG

    RST

    PSH

    ACK

    FIN

    SYN

    Suma de control Indicator urgent

    Date

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    12/20

    122

    Bitul SYNeste folosit pentru stabilirea unei conexiuni. Cererea de conexiune conine SYN=1

    i ACK=0, iar rspunsul la o astfel de cerere este confirmat prin combinaia SYN=1 i ACK=1.Bitul FIN este folosit pentru a ncheia o conexiune. El arat c transmitorul nu mai are

    informaii de transmis. Totui nchiderea unei conexiuni este un proces lung, n care receptorul ncmai poate primi date ntrziate din reea. De aceea, segmentele SYN i FIN conin numere de

    secven pentru ca prelucrarea lor s se fac n ordinea fireasc. n TCP, fluxul de control este tratatprin ferestre glisante de dimensiune variabil.

    Cmpul Dimensiune ferestr indic numrul de octei care pot fi trimii ncepnd de laoctetul confirmat.

    Cmpul Sum de controlconine suma de control calculat pentru antet, informaie util ipseudo-antet. Pseudo-antetul conine adresele IP ale sursei i detinaiei, numrul de protocol (pentruTCP este 6) i cmpul lungime segment TCP.

    Cmpul Opiunia fost introdus pentru a permite adugarea unor faciliti suplimentare care

    nu au fost prevzute n antetul obinuit. Cea mai important opiune este aceea de a specificancrcarea unei maini cu informaie util TCP maxim pe care este dispus s o accepte. Utilizareaunor segmente de date lungi este mai eficient dect n cazul segmentelor scurte, mai ales n cazulunor maini performante care pot procesa blocuri mari de date. n acest scop, la stabilirea conexiuniifiecare main anun dimensiunea maxim acceptat i ateapt de la parteneri s i se comuniceacelai lucru. Dac nici o main nu folosete aceast opiune, mrimea implicit a segmentului dedate utilizator este 536 octei, astfel nct 536+20 antet=556, lumgime minim pe care trebuie s oaccepte orice main din Internet. Nici dimensiunile prea mari ale segmentelor nu sunt ntotdeaunaeficiente. De exemplu transmiterea unui segment de date de 64 Koctei pe o linie E3 de 34 Mbpsdureaz 15 ms. Dac ntrzierea de propagare dus- ntors este 50 ms, valoare tipic pentru o linietranscontinental, atunci emitorul ateptnd confirmri va fi inactiv 70% din timp. n cazul unei

    legturi prin satelit geostaionar unde ntrzierea de propagare este i mai mare, eficiena transmisieieste i mai mic.

    5.5.3 Fragmentarea i reasamblarea

    Fragmentarea i reasamblarea se fac la nivelul transport i reea, pentru a permite transferulfragmentelor de date de lungimi mari prin reele care nu suport pachete de date cu lungimi mai maridect o valoare dat, numit MTU (maximum transfer unit) i care depinde de reea. Procesul defragmentare i reasamblare, precum i controlul acestora prin cmpurile antetului TCP se pot analizan fig. 5.7.

    Utilizatorul Surs conectat ntr-o reea local de tip Token Ring are de transmis un mesajde 7000 octei unui destinatar conectat ntr-o reea local de tip Ethenet. Deoarece reeaua TokenRing nu suport pachete mai lungi de 4000 de octei (B), mesajul va trebui spart n dou pri. Avndn vedere c nivelul reea mai adaug un antet de 20B, nseamn c lungimea maxim a unuifragment ar putea fi 4000-20=3980B. n realitate toate fragmentele (mai puin ultimul) trebuie s fiemultiplu de 8 octei, deci practic primul fragment fa avea 3976B. Cel de al doilea fragment va fi de3024B. Cele dou pachete sunt trimise ca atare prin Internet pn ajung la reeaua destinaie. Aceastafiind de tip Ethenet, lungimea maxim a pachetelor este 1500B i blocurile de date mai lungi vortrebui fragmentate corespunztor. Lungimea antetului fiind de 20B, fragmentele din reeaua Ethernet

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    13/20

    123

    vor avea 1480 K. Prin urmare, cele dou fragmente, de 3976B i 3024B, vor fi mprite n cte treiblocuri mai scurte, ca n fig.5.7. Informaiile privind lungimea total a mesajului, poziiafragmentelor n mesajul iniial, dac mai exist sau nu fragmente etc. se scriu n antetul datagramelorIP. Pe baza lor se poate reconstitui mesajul iniial.

    5.6 TCP i UDP n conexiuni fr fir

    n principiu, protocoalele de transport ar trebui s fie independente de stiva de protocoalepeste care ruleaz, adic s mearg la fel de bine i pe reele fir i pe radio etc. n particular, acestereele ar trebui s fie transparente pentru TCP/IP. Totui acest lucru este parial valabil. ProtocoaleleTCP/IP au fost gndite i elaborate pentru canale pe fir, cu rate de eroare mici. Dei ele pot rula i pecanale radio, performanele lor sunt foarte modeste din cauza implementrii algoritmului de controlal congestiei. Pierderea frecvent a pachetelor n reele fr fir necesit retransmiterea acestora, ceeace duce la apariia congestiei. TCP utilizeaz mai multe contoare de timp pentru a gestiona problemacongestiei. Unul dintre cele mai folosite este contorul de retransmisiecare stabilete timpul maximn care un pachet trebuie confirmat. Altul este contorul de persistendestinat prevenirii situaiilorde interblocare prin sondarea periodic a timpului de livrare a pechetelor. El permite stabilireadimensiunii ferestrei glisante de transmisie. Altul este contorul de meninere n viacare verificdac o conexiune inactiv un timp mai este util, sau cealalt parte a nchis conexiunea. Atunci

    Surs

    7000Aplic.

    Trans.

    L D

    Reea

    Fizic3976

    3024

    LANToken R.

    LANEth.

    Destinatie

    7000Aplic.

    Trans.

    L D

    Reea

    Fizic

    641480

    1480

    Fizic Fizic

    LD LD

    Reea d

    Fizic Fizic

    LD LD

    Reea s

    LAN Token ring: (i) (ii)Identification 20 20Total length 7000 7000Fragment offset 0 497(User data) 3976 3024M-bit 1 0

    LAN Ethernet: (i) (ii) (iIi) (iv) (v) (vi)Identification 20 20 20 20 20 20Total length 7000 7000 7000 7000 7000 7000Fragment offset 0 185 370 497 682 867(User data) 1480 1480 1016 1480 1480 64M-bit 1 1 1 1 1 0

    Fig. 5.7 Fragmentarea i reasamblarea datagramelor n TCP-IP

    1480

    14801016

    Internet

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    14/20

    124

    cnd expir un contor, TCP ncetinete ritmul i trimite pachete scurte, cu confirmri dese. Mai multchiar, reelele pot fi eterogene: o poriune cu fir, alta radio etc. Luarea unei decizii de depire detimp este dificil n aceste cazuri. S-ar putea ca o reea WAN bazat pe TCP/IP s aib doar unsegment foarte scurt, la capt, de tipul fr fir. O soluie aceptabil n asemenea situaii estesegmentarea unei conexiuni TCP printr-o reea eterogen n mai multe conexiuni TCP pe zone dereea omogene. n aceast situaie, ratele de transmisie se pot regla independent.

    Dei UDP-ul nu sufer de aceleai probleme ca TCP, comunicaia fra fir poate produce i eaprobleme n reelele bazate pe UDP. Protocoalele de nivel aplicaie care se bazeaz pe UDP seateapt ca transmisia s fie foarte fiabil. Cum reelele fr fir sufer mult la acest capitol, refacereapachetelor pierdute des poate conduce la un dezastru n ceea ce privete performanele.

    Concluzii

    Rolul principal al nivelului transport este de a livra fluxuri de octei cap la cap, pe conexiunisigure, ntr-un mod fiabil. El este pus n funciune prin primitive de serviciu care permit stabilirea

    conexiunii, utilizarea ei i desfacerea. Stabilirea unei conexiuni se face prin protocolul n trei pai.Conexiunile sunt definite prin adresele de nivel transport, cele mai uzuale fiind soclurile Berkeley. Oalt sarcin important a nivelului transport este controlul congestiei. Aceasta apare atunci cnd ratade succesiune a pachetelor n reea depete capacitatea de transport i preluctare n noduri.Duplicarea pachetelor ntrziate complic stabilirea conexiunilor duce la autonterinerea congestiei.Controlul congestiei se face prin reducerea ratei de transmisie sau a ferestrei de transport folosindcontoare de timp i mecanisme de confirmare. Internetul are 2 protocoale de transport principale:UDP i TCP, ultimul fiind de departe i cel mai folosit. TPDU-urile se numesc datagrame sausegmente i au un antet fix de 20 de octei pentru toate segmentele, i o parte opional. Parteaopional permite specificarea ncrcrii maxime cu informaie util a TPDU, pe care o aceptfiecare main. Segmentele pot fi fragmentate n PDU-uri mai mici de ctre rutere (la nivel reea)

    dar trebuie reasamblate la recepie. Parametrii de performan ai protocolului TCP depind deperformanele mainilor (vitez de prelucrare, dimensiunile bufferelor), de capacitatea canalelor decomunicaie i de numrul de TPDU-uri existente n reea. TPDU-uri multe i scurte determin timpimari de prelucrare n noduri, micornd capacitatea de transfer efectiv a reelei. Reelele de arielarg i eterogene complic utilizarea TCP.

    ntrebri

    1. Care sunt locul i rolul nivelului transport?2. Ce se nelege prin calitatea serviciilor asigurate de reelele de calculatoare? Definii

    parametrii de calitate ai serviciilor.3. Care sunt principalele servicii asigurate de nivelul transport? Explicai utilitatea lor.4. Care este formatul adresei de nivel transport?5. Ce este un punct de acces la servicii? Dar un port? Dar un soclu?6. De ce este necesar combinarea unei adrese de reea cu un TSAP?7. Care este rolul primitivelor de transport? Exemplificai un mod de folosire a lor.8. Ce se nelege prin multiplexarea aplicaiilor?9. TDPU-urile ncapsuleaz pachete sau invers? Argumentai.

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    15/20

    125

    10.Care sunt cele mai cunoscute porturi rezervate? n ce scop s-a fcut rezervarea?11.De ce este necesar ca timpul maxim de via al unui pachet s acopere nu numai dispariia

    pachetului ci i a confirmrii sale?12.Fragmentarea i reasamblarea datagramelor sunt procese controlate de IP i invizibile TCP-

    ului. TCP-ul mai are vreun rost n aceste procese? Avei n vedere posibilitatea soiriialeatoare a pachetelor.

    13.Explicai de ce protocolul TCP este orientat pe conexiune dei protocolul de sub el (IP) esteneorientat pe conexiune, pachetele de nivel reea aparinnd aceluiai mesaj fiind rutateindependent unul de cellalt?

    14.TCP este un protocol cu fereastr glisant cu confirmare. Precizai mecanismul deconfirmare.

    15.De ce UDP, spre deosebire de TCP, este considerat neorientat pe conexiune?16.Un proces de pe maina 1 a fost asociat portuluipi un proces de pe maina 2 a fost asociat

    portului q. Este posibil ca ntre cele dou porturi s fie deschise mai multe conexiuni TCPsimultane?

    Teme de cas

    1. Protocolul TCP: rol, funcionare, caracteristici, descriere antet TCP2. Protocolul UDP: rol, funcionare, caracteristici, descriere antet3. Protocolul de transport n timp real (RTP): rol, funcionare, caracteristici, descriere antet RTP4. Congestia n reele de calculatoare: definire, controlul congestiei, controlul traficului,

    formarea traficului, politici de trafic.5. Descriei procedura stabilirii unei conexiuni la nivel transport folosind primitive adecvate.6. Programarea cu socluri n Java: elemente de baz, clase de obiecte, socluri, intrfee, streamuri7. Programarea cu socluri n UNIX8. Comunicare la server orientat pe conexiune. Aplicaie Java.

    9. Comunicare la client orientat pe conexiune. Aplicaie Java.10.Comunicare fr conexiune. Aplicaie Java.11.Comunicare n grup (multicast).12.Program client pentru TFTP. Aplicaie n C.13.Fluxuri pentru transferul obiectelor. Serializarea obiectelor14.Descriei un protocol de nivel transport ca un automat cu stri finite. Folosii exemplul din

    cap. 6.3.3 prezentat n A. Tanenbaum Reele de calculatoare, Ediia a 4-a.15.Descriei un protocol de apel la distan (RPC) folosind exemplul din ca. 6.4.2, A.

    Tanenbaum Reele de calculatoare, Ediia a 4-a.16.Descriei un protocol de transport n timp real (RTP) folosind exemplul din cap. 6.4.3, A.

    Tanenbaum Reele de calculatoare, Ediia a 4-a.

    17.Descriei semnificaia cmpurilor din antetul datagramelor TCP.18.Descriei o procedur de control a congestiei folosit n cadrul protocolilui TCP.19.Descriei sintetic elementele de performan ale unei reele de calculatoare legate de nivelul

    transport, apelnd la cap. 6.6 din A. Tanenbaum Reele de calculatoare, Ediia a 4-a.Obs.Pentru temele 613 se recomand lucrarea I. Jurc- Programarea reelelor de calculatoare.

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    16/20

    126

    Probleme rezolvate

    1. S se stabileasc o diagram a protocolului TCP pentru transferul datelor la o aplicaie de tipclient server.

    R. TCP este un protocol sigur deoarece confirm (valideaz) cap la cap datagramelerecepionate, folosind tehnica numrului de secven, ntr-un mod oarecum asemntor controluluifluxului de la nivelul legtur de date. Deoarece timpul de transfer dus ntors la nivel transport nreele mari, cum ar fi Internetul, este mult mai mare dect n cazul confirmrii pe un link, receptorultrebuie s anune din timp mrimea ferestrei glisante n care ateapt numere de secven de latransmitor. Sunt de analizat cel puin dou situaii: a) cazul datagramelor mici care nu depescMTU (maxim transfer unit) i b) cazul datagramelor mari.

    n cazul a) diagrama de transfer a datelor se poate figura ca n fig. ...a). O aplicaie tipic deacest fel este Telnet (accesul de la distan al unui client la un sercer). Clientul aflat n faa unuicalculator sau a unei console trimite comenzi la server tastnd caractere. Fiecare caracter poate fincapsulat ntr-o datagram TCP cu flagul PSH setat i transmis aplicaiei server care ndat cerecepioneaz caracterul l stocheaz pentru a compune tot mesajul, dar l i retrimite sub form de

    ecou la client. Totodat trimite i o datagram ACK de confirmare. Asta nseamn c la fiecarecacater transmis se generaz 4 datagrame, dou cu caracterul respectiv transmise n ambele sensurii alte dou de confirmare, de asemenea n ambele sensuri.

    n practic, pentru a reduce numrul de datagrame trimise, entitatea TCP receptoare careprimete o datagram corect, nu returneaz imediat o datagram ACK de confirmare. Ea ateaptun timp, s zicem 200ms, s vad dac nu au fost plasate date de transmis n bufferul local. Dacda, confirmarea se face prin antetul acestei datagrame. Procedura se numete confirmare cuntrziere(fig .. b).

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    17/20

    127

    ISN initial sequence numberPSH indicator de prioritate

    Fig. Transferul datagramelor micia) confirmare imediat b) confirmare cu ntrziere c) algoritmul lui Nagle.

    Modurile de lucru descrise mai sus sunt aplicabile n reele TCP-IP mici, de nivelul unui LAN. nreele mari, unde ntrzierea confirmrii caracterelor poate deveni suprtoare, se folosetealgoritmul lui Nagle (RFC 896), care accept ntrzieri variabile de comnfirmare. n timp ce seateapt confirmare unui caracter sau a unei datagrame mici, se pot transmite mai multe cacatere

    tastate de utilizator i aflate n bufferul de transmisie.2. ntr-o reea dimensiunea maxim a TPDU este de 128 de octei, durata maxim de via a

    unui TPDU este 30s iar numrul de secven se scrie pe 1 octet. Care este viteza maxim detransmitere n linie?

    R.Dac numrul de secven este pe un octet, valoarea sa maxim este 255, adic se pot transmite 255de TPDU a cte 128 octei n 30sec. Vitaza maxim pe linie va fi:

    kbps704,830

    8128255=

    3. S se stabileasc o diagram de stri pentru o schem simpl de control al conexiunii.

    R. O diagram de stri pentru stabilirea i desfacerea conexiunii folosind cele 5 primitive simpleeste przentat n figura de mai jos. Fiecare tranziie este declanat de un eveniment: fie esteexecutat o primitiv de ctre utilizatorul local la nivel transport, fie este primit un pachet.

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    18/20

    128

    4. Se msoar timpul necesar prelucrrii unui TPDU ntr-un receptor i se gsec valorile0,5ms de 250000 de ori i 1ms de 750000 de ori. Care este timpul mediu de recepie al unui TPDU?

    R. Va fi media ponderat a timpilor msurai n cele un milion de determinri, adic:

    sTm 8751000000

    75000012500005.0=

    +=

    4. Descriei o aplicaie simpl de comunicaie client-server care folosete protocolulUDP.

    R.Protocolul UDP este un protocol simplu, neorientat pe conexiune, care permite crearea,transmisia i recepia datagramelor ntre dou socluri create pe maini corespondente. Att clientulct i serverul folosesc obiecte de tipDatagramsocket

    Un server care folosete protocolul UDP trebuie:

    a) s creeze un obiect Datagramsocketasociat cu un numr de port specificatExemplu:Datagramsocket socket =new Datagramsocket(8300);

    b) s creeze un obiect Datagrampacket utiliznd constructorul pentru datagrame pentrurecepia datelor

    Exemplu: byte[ ] buf=new byte[256]DatagramPacket mesaj=new

    DatagramPacket(buf,buf.length)

    c) Cu ajutorul metodeireceive()a clasei Datagramsocketse salveaz o datagram n obiectul detip Datagrampacket

    Exemplu: socket.receive(mesaj)

    Execuie:Deconectare

    TPDU:Cerere de deconectare

    TPDU:Conectare acceptat

    Stabilireconexiune

    asiv

    Deconectarepasiv

    NefolositStabilire

    conexiuneactiv

    Deconectareactiv

    Nefolosit

    Conexiunestabilit

    TPDU:Cerere de conectare

    TPDU:Cerere de deconectare

    Execuie:Deconectare

    Execuie:Conectare

    Execuie:Conectare

    Secvena de stri a serveruluiSecvena de stri a clientului

    Tranziiile notate cu italice sunt determinate de sosirea unor noi pachete

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    19/20

    129

    d) Se proceseaz cererea

    e) Se creaz un obiect Datagrampacket utiliznd constructorul pentru datagrame pentrutransmisia datelor

    - se identific adresa i portul de unde vine cerereaExemplu: InetAddress adresa=mesaj.getAddress()

    Int port=mesaj.getport()

    - se construiete rspunsulExemplu: byte[] buf2=new byte[256]

    Buf2 = (.).getBytes()

    - se completeaz datagrama ce va fi trimisExemplu: Datagrampacket raspuns=new DatagramPacket(buf2,buf2.length, adresa,port)

    f) Cu ajutorul metodei send() a clasei Datagramsocket se trimite datagrama completat anteriorExemplu: socket.send(raspuns)

    La partea client se pracurg aceleai etape, cu meniunea c mai mti se trimite datagrama iapoi se ateapt rspunsul serverului.

    a) Se creaz un obiect Datagramsocket i:- se specific adresa IP i portul pe care ruleaz serverulExemplu: InetAddress adresa= InetAddress.getLocalHost().getHostName)=;

    Int port=8300

    - se instaniaz clasa Datagramsocket

    Exemplu: Datagramsocket socket=new Datagramsocket()b) Se creaz un obiect DatagramPacket utiliznd constructorul pentru datadgrame pentru

    transmisia datelor- se construiete rspunsulExemplu: : byte[] buf2=new byte[256]

    Buf2 = (.).getBytes()

    c) se completeaz datagrama ce va fi trimisExemplu: Datagrampacket mesaj=new DatagramPacket(buf2,buf2.length, adresa,port)

    d) cu ajutorul metodei send() a clasei Datagramsocketse trimite datagrama completatanterior

    Exemplu: socket.send(mesaj)

    e) se ateapt rpspunsul serverului

    f) Se creaz un obiect Datagrampacket utiliznd constructorul pentru datagrame pentrurecepia datelor

    Exemplu: byte[ ] buf=new byte[256]DatagramPacket raspuns=new DatagramPacket(buf,buf.length)

  • 7/22/2019 Microsoft Word - Tema 6_Nivelul Transport

    20/20

    130

    g) Cu ajutorul metodei receiv() a clasei Datagramsocket se salveaz o datagrama n obiectulde tip DatagramPacketExemplu: socket.receive(raspuns)

    n continuare se cere s se scrie secvena de programe complete pentru server i pentru client,

    folosind limbajul Java.

    Probleme propuse

    1. S se scrie o aplicaie client server prin care clientul va cere timpul oficial iar serverul il vafurniza. Se va folosi protocolul UDP.

    2. Realizai o aplicaie client server folosind protocolul UDP prin care clientul s afle adresa IPa sreverului.

    3.