Tcp Udp Tanenbaum

Embed Size (px)

Citation preview

  • 8/15/2019 Tcp Udp Tanenbaum

    1/20

    PROTOCOALE DE TRANSPORT PRIN INTERNET: UDP

    lnternet-ul are două protocoale principale în nivelul de tranport: unul neorientat pecone!iune "i unul orientat pe cone!iune# Protocolul neorientat pe cone!iune e nu$e"te UDP#Protocolul orientat pe cone!iune e nu$e"te TCP# %ncepe$ cu UDP-ul deoarece în een&ă ete la'el ca IP-ul cu un $ic antet adău(at#

    Introducere în UDPSetul de protocoale Internet uportă un protocol de tranport 'ără cone!iune) UDP *Uer

    Protocol - Protocol cu Data(ra$e Utili+ator,# UDP o'eră aplica&iilor o $odalitate de a tri$itedata(ra$e IP încapulate "i de a le tran$ite 'ără a 'i nevoie ă taileacă o cone!iune# UDPete decri în R.C /01#

    UDP tran$ite e($ente cont2nd într-un antet de 1 octe&i ur$at de in'or$a&ia utilă # Antetul ete pre+entat în 'i(ura de $ai 3o# Cele două porturi ervec la identi'icarea punctelorter$inale ale $a"inilor ură "i detina&ie# C2nd a3un(e un pac4et UDP) con&inutul ău etepredat proceului ata"at portului detina&ie# Aceată ata"are are loc atunci c2nd e 'oloe"te oi$plă procedură de nu$e au ceva ae$ănător# De 'apt) valoarea cea $ai i$portantă dată dee!iten&a UDP-ului 'a&ă de 'oloirea doar a IP-ului i$plu) ete aceea a adău(ării porturilor ură"i detina&ie# .ără c2$purile portului) nivelul de tranport nu ar "ti ce ă 'acă cu pac4etul# Cua3utorul lor) e($entele e livrea+ă corect#

     Antetul UDP#Portul ură ete în pri$ul r2nd necear atunci c2nd un răpun treuie tran$i înapoi la

    ură# Prin copierea c2$pului port ură din e($entul care oe"te în c2$pul port detina&ie ale($entului care pleacă) proceul ce tri$ite răpunul peci'ică ce proce de pe $a"ina detri$itere ur$ea+ă ă-l pri$eacă#

    C2$pul lun(i$e UDP  include antetul de 1 octe&i "i datele# C2$pul u$a de control UDPete op&ional "i tocat ca 5 *+ero, dacă nu ete calculat *o valoare de adevăr 5 re+ultată în ur$acalculelor ete $e$orată ca un "ir de i&i 6,# De+activarea acetuia ete o protie) e!cep&ie'ăc2nd ca+ul în care calitatea in'or$a&iei c4iar nu contea+ă *de e!e$plu) tran$iia vocalădi(itali+ată,#

    7erită proail $en&ionate) în $od e!plicit) unele dintre lucrurile pe care UDP-ul nu le

    'ace# Nu reali+ea+ă controlul 'lu!ului) controlul erorii) au retran$iterea unui e($ent incorectpri$it# Toate acetea depind de proceele utili+atorului# Ceea ce 'ace ete ă o'ere protocoluluiIP o inter'a&ă cu 'acilită&i adău(ate de de$ultiple!are a $ai $ultor procee) 'oloind porturi# Aceata ete tot ceea ce 'ace UDP-ul# Pentru aplica&iile care treuie ă aiă un control preciaupra 'lu!ului de pac4ete) controlului erorii au crono$etrarea) UDP-ul 'urni+ea+ă doar ceea ce8a ordonat doctorul8#

    Un do$eniu unde UDP-ul ete în $od pecial util ete acela al itua&iilor client-erver#Deeori) clientul tri$ite o cerin&ă curtă erver-ului "i a"teaptă înapoi un răpun curt# Dacă epierde ori cererea ori răpunul) clientul poate pur "i i$plu ă încerce din nou după ce a e!piratti$pul# Nu nu$ai că va 'i $ai i$plu codul) dar unt neceare "i $ai pu&ine $ea3e *c2te unul în

    'iecare direc&ie, dec2t la un protocol care olicită o ini&iali+are ini&ială#O aplica&ie care 'oloe"te UDP-ul în acet 'el ete DNS *Do$ain Na$e S9te$) Site$ dere+olvare de nu$e,# Pe curt) un pro(ra$ care treuie ă caute adreele de IP ale unor nu$e(a+dă) de e!e$plu #u(al#ro) poate tri$ite un pac4et UDP) con&in2nd nu$ele (a+dă) către unerver DNS# Serverul răpunde cu un pac4et UDP con&in2nd adrea de IP a (a+dei# Nu ete

  • 8/15/2019 Tcp Udp Tanenbaum

    2/20

    neceară nici o ini&iali+are în avan "i nici o înc4idere de eiune# Doar două $ea3e traverea+ăre&eaua#

     Apel de procedură la ditan&ă *Re$ote Procedure Call,

    %ntr-un anu$e en) tri$iterea unui $ea3 către o ta&ie la ditan&ă "i pri$irea înapoi aunui răpun ea$ănă $ult cu reali+area unei 'unc&ii de apel într-un li$a3 de pro(ra$are# %n

    a$ele ca+uri e începe cu unul au $ai $ul&i para$etri "i e pri$e"te înapoi un re+ultat# Aceată oerva&ie le-a 'ăcut pe unele peroane ă încerce ă or(ani+e+e interac&iunile cerere-răpun în re&ele pentru a 'i pue î$preună u 'or$a apelurilor procedurale# Un at'el dearan3a$ent 'ace aplica&iile de re&ea $ai u"or pro(ra$aile "i $ai aordaile# De e!e$plu)i$a(ina&i-vă doar procedura nu$ită (et;IP;addre*4ot;na$e,  care 'unc&ionea+ă printri$iterea unui pac4et UDP către un erver DNS "i a"teptarea răpunului) crono$etr2nd "i încerc2nd încă o dată) dacă răpunul nu apare u'icient de rapid# %n acet 'el) toate detaliile dere&ea pot 'i acune pro(ra$atorului#

    E'ortul cel $ai i$portant în acet do$eniu a 'ot depu de către

  • 8/15/2019 Tcp Udp Tanenbaum

    3/20

    'aptul că tu-ul erver apelea+ă procedura erver cu para$etrii depac4eta&i# Răpunulur$ea+ă aceea"i cale "i în cealaltă direc&ie#

    Ele$entul c4eie de re&inut aici ete acela că procedura client) criă de către utili+ator)doar 'ace un apel nor$al de procedură *adică local, către tu-ul client) care are acela"i nu$e cuprocedura erver# Cu$ procedura client "i tu-ul client e (ăec în acela"i pa&iu de adreă)para$etrii unt tran'era&i în $odul oi"nuit# %n $od ae$ănător) procedura erver ete apelatăde o procedură din pa&iul ău de adreă cu para$etrii pe care îi a"teaptă# Pentru procedura

    erver ni$ic nu ete neoi"nuit# %n 'elul aceta) în loc ca intrareaBie"irea ă e 'acă pe ocluri)co$unica&ia de re&ea ete reali+ată i$it2nd o procedură de apelare nor$ală#%n ciuda ele(an&ei conceptului de RPC) unt c2&iva "erpi care e acund prin iară8# Unul

    $are ete utili+area para$etrilor pointer# %n $od nor$al) tran$iterea unui pointer cătreprocedură nu ete o prole$ă# Procedura apelată poate 'oloi pointer-ul în acela"i $od în carepoate ă o 'acă "i cel care o apelea+ă) deoarece a$ele proceduri e (ăec în acela"i pa&iu deadree virtuale# Cu RPC-ul) tran$iterea pointer-ilor ete i$poiilă deoarece clientul "i erver-ule (ăec în pa&ii de adreă di'erite#

    %n anu$ite ca+uri) e pot 'oloi unele trucuri pentru a 'ace poiilă traa$iterea pointer-ilor# Să preupune$ că pri$ul para$etru ete un pointer către un între() # Stu-ul client poate î$pac4eta variaila "i ă o tri$ită erver-ului# Atunci) erver tu creea+ă un pointer către "i-ltran$ite procedurii erver) e!act a"a cu$ aceata e a"teaptă# C2nd procedura erver cedea+ăcontrolul erver tu) aceta din ur$ă tri$ite variaila  înapoi clientului) unde noul ete copiatpete cel vec4i) în ca+ că erverul l-a c4i$at# %n 'apt) ecven&a tandard de apelare apel-prin-re'erin&ă a 'ot înlocuită de copia+ă-retaurea+ă *cop9-retore,# Din păcate) acet truc nu'unc&ionea+ă întotdeauna) de e!e$plu dacă un pointer ete către un (ra'ic au altă tructurăco$ple!ă de date# Din acet $otiv) treuie pue anu$ite retric&ii aupra para$etrilorprocedurilor apelate la ditan&ă#

    O a doua prole$ă ete aceea că în li$a3ele $ai pu&in a+ate pe tipuri) cu$ ar 'i C-ul)ete per'ect le(al ă crii o procedură care calculea+ă produul calar a doi vectori) 'ără apeci'ica di$eniunea vreunuia dintre ei# .iecare poate 'i ter$inat printr-o valoare pecială

    cunocută doar de către procedura apelată "i de cea apelantă# %n acete condi&ii) în $od certete i$poiil pentru tu-ul client ă î$pac4ete+e para$etrii: nu are nici o $odalitate de adeter$ina c2t de $ult pa&iu ocupă ace"tia#

    O a treia prole$ă ete aceea că nu întotdeauna ete poiilă deducerea tipurilorpara$etrilor) nici $ăcar dintr-o peci'ica&ie 'or$ală au din cod în ine# Un e!e$plu ete print')care poate avea orice nu$ăr de para$etri *cel pu&in unul,) iar para$etrii pot 'i o co$ina&iearitrară a tipurilor între(i) 4ort) lon() caractere) "iruri) nu$ere în vir(ulă $oilă de di'eritelun(i$i "i alte tipuri# A încerca invocarea print' ca procedură cu apel la ditan&ă ar 'i practici$poiil) deoarece C-ul ete prea per$iiv# Totu"i) o re(ulă care ă pună că RPC-ul poate 'i'oloit cu condi&ia ă nu pro(ra$e+i în C *au C , nu ar 'i prea populară#

    O a patra prole$ă ete le(ată de utili+area variailelor (loale# %n $od nor$al)procedura de apelare "i cea care ete apelată pot co$unica 'oloind variailele (loale) în plu'a&ă de co$unicarea prin para$etri# Dacă procedura apelată ete $utată acu$ pe o $a"ină laditan&ă) codul va da erori deoarece variailele (loale nu $ai unt parta3ate#

     Acete prole$e nu unt $enite ă u(ere+e că RPC-ul ete lipit de "ane# De 'apt) etelar( 'oloit) dar unt neceare anu$ite retric&ii pentru a-l 'ace ă 'unc&ione+e ine în practică#Dei(ur) RPC-ul nu are nevoie ă 'oloeacă pac4ete UDP) dar RPC "i UDP e potrivec ine) "iUDP ete u+ual 'oloit pentru RPC Totu"i) c2nd para$etrii au re+ultatele pot ă 'ie $ai $aridec2t pac4etul $a!i$ UDP au atunci c2nd opera&ia cerută nu ete ide$potentă *adică nu poate'i repetată în i(uran&ă) ca de e!e$plu atunci c2nd e incre$entea+ă un contor,) poate 'i

    neceară tailirea unei cone!iuni TCP "i tri$iterea cererii prin aceata) în loc ă e 'oloeacăUDP-ul#

  • 8/15/2019 Tcp Udp Tanenbaum

    4/20

    PROTOCOALE DE TRANSPORT PRIN INTERNET: TCP

    UDP-ul ete un protocol i$plu "i are anu$ite ni"e de utili+are) cu$ ar 'i interac&iunileclient-er-ver "i cele $ulti$edia) dar pentru cele $ai $ulte aplica&ii de Internet ete necear untranport de încredere) ecven&ial al in'or$a&iei# UDP-ul nu poate o'eri acet lucru) deci etenevoie de un alt protocol# Aceta ete TCP "i ete pionul principal de lucru al Internet-ului#

    Introducere în TCPTCP *Tranport Co$$unication Protocol - protocol de co$unica&ie de nivel tranport, a

    'ot proiectat e!plicit pentru a ai(ura un 'lu! i(ur de octe&i de la un capăt la celălalt alcone!iunii într-o inter-re&ea nei(ură# O inter-re&ea di'eră de o re&ea propriu-+iă prin 'aptul cădi'erite păr&i ale ale pot di'eri utan&ial în topolo(ie) lăr(i$e de andă) înt2r+ieri) di$eniuneapac4etelor "i al&i para$etri# TCP a 'ot proiectat ă e adapte+e în $od dina$ic la proprietă&ileinter-re&elei "i ă 'ie rout în ceea ce prive"te $ai $ulte tipuri de de'ecte#

    TCP a 'ot de'init în $od o'icial în R.C /=@# O dată cu trecerea ti$pului) au 'ot detectatedivere erori "i inconiten&e "i au 'ot $odi'icate cerin&ele în anu$ite udo$enii# Aceteclari'icări) precu$ "i corectarea c2torva erori unt detaliate în R.C 66??# E!teniile unt 'urni+ate în R.C 6@?@#

    .iecare $a"ină care uportă TCP dipune de o entitate de tranport TCP) 'ie ca proceutili+ator) 'ie ca procedură de iliotecă) 'ie ca parte a nucleului# %n toate acete ca+uri) ea care(etionea+ă 'lu!urile TCP "i inter'e&ele către nivelul IP# O entitate TCP acceptă 'lu!uri de dateutili+ator de la proceele locale) le î$parte în 'ra($ente care nu depă"ec 0>F octe&i *de re(ulă în 'ra($ente de apro!i$ativ 6>05 de octe&i) pentru a încăpea într-un in(ur cadru Et4ernet î$preună cu antetele TCP "i IP, "i e!pedia+ă 'iecare 'ra($ent ca o data(ra$ă IP eparată# Atunci c2nd data(ra$ele IP con&in2nd in'or$a&ie TCP oec la o $a"ină) ele unt 'urni+ateentită&ii TCP) care recontruie"te 'lu!ul ori(inal de octe&i# Pentru i$pli'icare) vo$ 'oloic2teodată doar TCP) uîn&ele(2nd prin aceata au entitatea TCP de tranport *o por&iune de

    pro(ra$, au protocolul TCP *un et de re(uli,# Din conte!t va 'i clar care din cele două no&iuniete re'erită# De e!e$plu) în Utili+atorul 'urni+ea+ă date TCP-ului8 ete clară re'erirea laentitatea TCP de tranport#

    Nivelul IP nu o'eră nici o (aran&ie că data(ra$ele vor 'i livrate corect) at'el că etearcina TCP-ului ă detecte+e eroarea "i ă e'ectue+e o retran$iie atunci c2nd itua&ia oi$pune# Data(ra$ele care a3un( *totu"i, la detina&ie pot oi într-o ordine eronatăG ete) deae$enea) arcina TCP-ului ă le reaa$le+e în $ea3e repect2nd ordinea corectă *deecven&ă,# Pe curt) TCP-ul treuie ă o'ere 'iailitatea pe care cei $ai $ul&i utili+atori o dorec "ipe care IP-ul nu o o'eră#

    7odelul erviciului TCP

    Serviciul TCP ete o&inut prin crearea at2t de către e$i&ător) c2t "i de către receptor) aunor puncte 'inale) nu$ite ocluri *ocet,# .iecare oclu are un nu$ăr de oclu *adreă, 'or$atdin adrea IP a $a"inii (a+dă "i un nu$ăr de 60 i&i) local (a+dei repective) nu$it port# Portete nu$ele TCP pentru un TSAP# Pentru a o&ine o cone!iune TCP) treuie tailită e!plicit ocone!iune între un oclu de pe $a"ina e$i&ătoare "i un oclu de pe $a"ina receptoare# Apelurilede oclu unt pre+entate în taelul de $ai 3o#

    Pri$itiva .unc&ia

    SOCFET Creea+ă un nou punct de capăt al co$unica&iei

  • 8/15/2019 Tcp Udp Tanenbaum

    5/20

    CONNECT Tentativă *activă, de a taili o cone!iuneSEND Tri$ite dale prin cone!iuneRECEIE Recep&ionea+ă date prin cone!iuneCLOSE Elierea+ă cone!iunea

    Un oclu poate 'i 'oloit la un $o$ent dat pentru $ai $ulte cone!iuni# Alt'el pu) douăau $ai $ulte cone!iuni e pot ter$ina la acela"i oclu# Cone!iunile unt identi'icate prinidenti'icatorii oclurilor de la a$ele capete) adică *oclu 6) oclu ?,# Nu ete 'oloit nici un altnu$ăr au identi'icator de circuit virtual#

    Nu$erele de port $ai $ici dec2t ?0 e nu$ec porturi (eneral cunocute "i untre+ervate erviciilor tandard# De e!e$plu) orice proce care dore"te ă taileacă o cone!iunecu o $a"ină (a+dă pentru a tran'era un 'i"ier utili+2nd .TP) e poate conecta la portul ?6 al$a"inii detina&ie pentru a contacta de$onul ău .TP# Si$ilar) portul ?@ ete 'oloit pentru ataili o eiune de lucru la ditan&ă utili+2nd TELNET# Lita porturilor (eneral cunocute e(ăe"te la #iana#or(# C2teva dintre cele 'oarte cunocute unt pre+entate în lita ur$ătoare#

    Port Protocol Utilitate

    ?6 .TP Tran'er de 'i"iere?@ Telnet Lo(in la ditan&ă? S7TP E-$ail0= T.TP Protocol de tran'er de 'i"iere trivial/= .in(er Căutare de in'or$a&ii depre un utili+ator15 JTTP Korld Kide Ke665 POP-@ Acce la un cont e-$ail la ditan&ă66= NNTP tiri USENET

    Cu i(uran&ă ar 'i poiil ca) în $o$entul încărcării) de$onul de .TP ă e autoata"e+e laportul ?6) de$onul telnet la portul ?@ "i tot a"a# Totu"i) dacă -ar proceda at'el -ar u$ple$e$oria cu de$oni inactivi în $a3oritatea ti$pului# %n c4i$) în pecial în $a"inile Uni!) e'oloe"te în (eneral un in(ur de$on) nu$it inetd *Internet dae$on , de$on de Internet, înUNIM) care ă e autoata"e+e la $ai $ulte porturi "i ă a"tepte pri$a cone!iune care vine# C2ndacet lucru e înt2$plă) inetd creea+ă un nou proce "i e!ecută în el de$onul adecvat) lă2ndacel de$on ă e ocupe de cerere# At'el) de$onii) în a'ară de inetd) unt activi doar c2nd au delucru# Inetd a'lă ce porturi ă 'oloeacă dintr-un 'i"ier de con'i(urare# %n conecin&ă)ad$initratorul de ite$ poate eta ite$ul ă aiă de$oni per$anen&i pe cele $ai ocupateporturi *de e!e$plu portul 15, "i inetd pe retul#

    Toate cone!iunile TCP unt duple! inte(ral "i punct-la-punct# Duple! inte(ral înea$nă cătra'icul e poate de'ă"ura în a$ele enuri în acela"i ti$p# Punct-la-punct indică 'aptul că'iecare cone!iune are e!act două puncte 'inale# TCP nu uportă di'u+area par&ială au totală#

    O cone!iune TCP ete un 'lu! de octe&i "i nu un 'lu! de $ea3e# Di$eniunile $ea3elor nue conervă de la un capăt la celălalt# De e!e$plu) dacă proceul e$i&ător e!ecută patru crieride c2te 6? octe&i pe un canal TCP) acete date pot 'i livrate proceului receptor ca patru'ra($ente *c4un, de 6? octe&i) două 'ra($ente de 65?> octe&i) un in(ur 'ra($ent de ?5>1octe&i au în orice alt $od# Nu e!ită poiilitatea ca receptorul ă deter$ine nu$ărul de unită&i în care a 'ot criă in'or$a&ia#

    %n UNIM) aceea"i proprietate o au "i 'i"ierele# Cititorul unui 'i"ier nu poate pune dacă'i"ierul a 'ot cri loc cu loc) octet cu octet au tot dintr-o dată# Ca "i un 'i"ier UNIM)pro(ra$ele TCP nu au nici cea $ai va(ă idee depre e$ni'ica&ia octe&ilor "i nici cel $ai $icintere pentru a a'la acet lucru# Un octet ete pur "i i$plu un octet#

  • 8/15/2019 Tcp Udp Tanenbaum

    6/20

     *a, Patru e($ente de 6? octe&i au 'ot tri$ie ca data(ra$e IP eparate# *, Livrarea celor?5>1 octe&i către aplica&ie) printr-un in(ur apel read#

     Atunci c2nd o aplica&ie tri$ite date c2tre TCP) TCP-ul le poate e!pedia i$ediat au lepoate re&ine într-un ta$pon *în copul colectării unei cantită&i $ai $ari de in'or$a&ie pe care ăo e!pedie+e toată odată,) după unul ău plac# Cu toate acetea) c2teodată) aplica&ia dore"te cain'or$a&ia ă 'ie e!pediată i$ediat# De e!e$plu) ă preupune$ că un utili+ator ete conectat lao $a"ină de la ditan&ă# După ce a 'ot ter$inată o linie de co$andă "i -a tatat Return) eteeen&ial ca linia ă 'ie i$ediat e!pediată către $a"ina de la ditan&ă "i ă nu 'ie $e$orată p2năla ter$inarea ur$ătoarei linii# Pentru a 'or&a e!pedierea) aplica&ia poate 'oloi indicatorul PUSJ)care îi e$nalea+ă TCP-ului ă nu înt2r+ie proceul de tran$iie#

    Unele din pri$ele aplica&ii 'oloeau indicatorul PUSJ ca un 'el de $arca3 pentru a deli$ita

    $ar(inile $ea3elor# De"i acet truc 'unc&ionea+ă c2teodată) uneori el e"uea+ă datorită 'aptuluică) la recep&ie) nu toate i$ple$entările TCP-ului tran$it aplica&iei indicatorul PUSJ# 7ai $ultdec2t at2t) dacă $ai $ulte indicatoare PUSJ apar înainte ca pri$ul ă 'i 'ot tran$i *dee!e$plu) pentru că linia de le(ătură ete ocupată,) TCP-ul ete lier ă colecte+e toatăin'or$a&ia re'erită de către acete indicatoare într-o in(ură data(ra$ă IP) 'ără ă includă nici uneparator între di'eritele ale păr&i#

    O ulti$ă caracteritică a erviciului TCP care $erită $en&ionată aici contă în in'or$a&iaur(en&ă# Atunci c2nd un utili+ator apaă tata DEL au CTRL-C pentru a întrerupe o prelucrare laditan&ă) a'lată de3a în e!ecu&ie) aplica&ia e$i&ător plaea+ă o in'or$a&ie de control în 'lu!ul dedate "i o 'urni+ea+ă TCP-ului î$preună cu indicatorul URENT# Acet eveni$ent i$pune TCP-ului întreruperea acu$ulării de in'or$a&ie "i tran$iia i$ediată a între(ii in'or$a&ii diponiile de3apentru cone!iunea repectivă

     Atunci c2nd in'or$a&ia ur(entă ete recep&ionată la detina&ie) aplica&ia receptoare ete întreruptă *de e!# prin e$iia unui e$nal) în ter$inolo(ie UNIM,) at'el înc2t) elierată de oricealtă activitate) aplica&ia ă poată citi 'lu!ul de date "i ă poată re(ăi in'or$a&ia ur(entă# S'2r"itulin'or$a&iei ur(ente ete $arcat) at'el înc2t aplica&ia ă "tie c2nd e ter$ină in'or$a&ia# începutul in'or$a&iei ur(ente nu ete $arcat# Ete arcina aplica&iei ă deter$ine acet început# Aceată c4e$ă 'urni+ea+ă de 'apt un rudi$ent de $ecani$ de e$nali+are) orice alte detalii'iind lăate la latitudinea aplica&iei#

    Protocolul TCP

    O caracteritică i$portantă a TCP) care do$ină tructura protocolului) ete aceea că'iecare octet al unei cone!iuni TCP are propriul ău nu$ăr de ecven&ă) repre+entat pe @? i&i#C2nd a luat 'iin&ă Internetul) liniile dintre rutere erau în cel $ai un ca+ linii înc4iriate de 0 Fp)deci unei (a+de 'unc&ion2nd la vite+ă $a!i$ă îi lua $ai $ult de o ăptă$2nă ă utili+e+e toatenu$erele de ecven&ă) la vite+ele re&elelor $ode$e) nu$erele de ecven&ă pot 'i conu$ate într-un rit$ alar$ant) după cu$ vo$ vedea $ai t2r+iu# Nu$erele de ecven&ă unt utili+ate at2tpentru con'ir$ări c2t "i pentru $ecani$ul de ecven&iere) aceta din ur$ă utili+2nd c2$purieparate de @? de i&i din antet#

    Entită&ile TCP de tran$iie "i de recep&ie interc4i$ă in'or$a&ie u 'or$ă de

    e($ente# Un e($ent TCP contă dintr-un antet de e!act ?5 de octe&i *plu o parte op&ională,ur$at de +ero au $ai $ul&i octe&i de date# Pro(ra$ul TCP ete cel care decide c2t de $aritreuie ă 'ie acete e($ente# El poate acu$ula in'or$a&ie provenită din $ai $ulte crieri într-un in(ur e($ent au poate 'ra($enta in'or$a&ia provenind dintr-o in(ură criere în $ai $ultee($ente# E!ită două li$ite care retric&ionea+ă di$eniunea unui e($ent# %n pri$ul r2nd)

  • 8/15/2019 Tcp Udp Tanenbaum

    7/20

    'iecare e($ent) incluiv antetul TCP) treuie ă încapă în cei 0#@ de octe&i de in'or$a&ie utilăIP# %n al doilea r2nd) 'iecare re&ea are o unitate $a!i$ă de tran'er au 7TU *7a!i$u$ Tran'erUnit,) deci 'iecare e($ent treuie ă încapă în acet 7TU# %n realitate) 7TU ete în (eneral de655 octe&i *di$eniunea in'or$a&iei utile din Et4ernet,) de'inind at'el o li$ită uperioară adi$eniunii unui e($ent#

    Protocolul de a+ă utili+at de către entită&ile TCP ete protocolul cu 'ereatră (liantă# Atunci c2nd un e$i&ător tran$ite un e($ent) el porne"te un crono$etru# Atunci c2nd un

    e($ent a3un(e la detina&ie) entitatea TCP receptoare tri$ite înapoi un e($ent *cu in'or$a&ieutilă) dacă aceata e!ită au 'ără) în ca+ contrar, care con&ine totodată "i nu$ărul de ecven&ăur$ător pe care aceata e a"teaptă ă-l recep&ione+e# Dacă crono$etrul e$i&ătorului depă"e"teo anu$ită valoare înaintea pri$irii con'ir$ării) e$i&ătorul retran$ite e($entul necon'ir$at#

    De"i acet protocol pare i$plu) pot apărea $ulte itua&ii particulare pe care le vo$pre+enta $ai 3o# Se($entele pot a3un(e într-o ordine aritrară) deci octe&ii @5/?->5= pot 'irecep&iona&i) dar nu pot 'i con'ir$a&i datorită aen&ei octe&ilor ?5>1-@5/6# Se($entele pot deae$enea înt2r+ia pe dru$ un interval de ti$p u'icient de $are pentru ca e$i&ătorul ădetecte+e o depă"ire a crono$etrului "i ă le retran$ită# Retran$iiile pot include por&iuni de$ea3 'ra($entate alt'el dec2t în tran$iia ini&ială) ceea ce i$pune o tratare atentă) at'el înc2tă e &ină eviden&a octe&ilor pri$i&i corect# Totu"i) deoarece 'iecare octet din 'lu! are undeplaa$ent unic 'a&ă de începutul $ea3ului) acet lucru e poate reali+a#

    TCP treuie ă 'ie pre(ătit ă 'acă 'a&ă unor at'el de itua&ii "i ă le re+olve într-o $anierăe'icientă# Un e'ort coniderail a 'ot dedicat opti$i+ării per'or$an&elor 'lu!urilor TCP) &in2ndu-econt incluiv de prole$e le(ate de re&ea# %n continuare vor 'i pre+enta&i un nu$ăr de al(orit$iutili+a&i de nu$eroae i$ple$entări TCP#

     Antetul e($entului TCP

    %n 'i(ura de $ai 3o ete pre+entată tructura unui e($ent TCP# .iecare e($ent începecu un antet 'or$at dintro tructură 'i!ă de ?5 de octe&i# Antetul 'i! poate 'i ur$at de un et de

    op&iuni aociate antetului# %n continuarea op&iunilor) dacă ele e!ită) pot ur$a p2nă la 0#@ -?5 - ?5 0#>= de octe&i de date) unde pri$ul ?5 repre+intă antetul IP) iar al doilea antetulTCP# Se($ente care nu con&in octe&i de date unt nu nu$ai per$ie) dar "i utili+ate în $od'recvent pentru con'ir$ări "i $ea3e de control#

     AntetulTCP#

    Să diecă$ acu$ tructura antetului TCP) c2$p cu c2$p# C2$purile Port ură "i Portdetina&ie identi'ică punctele 'inale ale cone!iunii# Porturile (eneral cunocute unt de'inite la:::#iana#or(  ) dar 'iecare (a+dă le poate aloca pe celelalte după cu$ dore"te# Un port 'or$ea+ă î$preună cu adrea IP a $a"inii ale un unic punct de capăt *end point, de >1 de i&i#Cone!iunea ete identi'icată de punctele de capăt ale urei "i detina&iei#

    http://www.iana.org/http://www.iana.org/

  • 8/15/2019 Tcp Udp Tanenbaum

    8/20

    C2$purile Nu$ăr de ecven&ă "i Nu$ăr de con'ir$are au e$ni'ica&ia 'unc&iilor lor u+uale#Treuie oervat că cel din ur$ă indică octetul ur$ător a"teptat "i nu ulti$ul octet recep&ionat în$od corect# A$ele c2$puri au lun(i$ea de @? de i&i) deoarece într-un 'lu! TCP 'iecare it dein'or$a&ie ete nu$erotat#

    Lun(i$ea antetului TCP indică nu$ărul de cuvinte de @? de i&i care unt con&inute înantetul TCP# Aceată in'or$a&ie ete utilă) deoarece c2$pul Op&iuni ete de lun(i$e variailă)proprietate pe care o tran$ite at'el "i antetului# Te4nic vorind) acet c2$p indică în realitate

     începutul datelor din e($ent) $ăurat în cuvinte de @? de i&i) dar cu$ acet nu$ăr ete identiccu lun(i$ea antetului în cuvinte) e'ectul ete acela"i#Ur$ea+ă un c2$p de "ae i&i care ete neutili+at# .aptul că acet c2$p a upravie&uit

    intact $ai $ult de un 'ert de ecol ete o $ărturie depre c2t de ine a 'ot proiectat TCP-ul#Protocoale $ai prot concepute ar 'i avut nevoie de el pentru a corecta erori ale proiectăriiini&iale#

    Ur$ea+ă acu$ "ae indicatori de c2te un it UR ete po+i&ionat pe 6 dacă IndicatorulUr(ent ete valid# Indicatorul Ur(ent ete 'oloit pentru a indica deplaa$entul în octe&i 'a&ă denu$ărul curent de ecven&ă la care e (ăe"te in'or$a&ia ur(entă# O at'el de 'acilitate &ine locul$ea3elor de întrerupere# A"a cu$ a$ $en&ionat de3a anterior) aceată 'acilitate repre+intăeen&a $odului în care e$i&ătorul poate tran$ite un e$nal receptorului 'ără ca TCP-ul în ineă 'ie cau+a întreruperii#

  • 8/15/2019 Tcp Udp Tanenbaum

    9/20

    Peudo-antetul inclu în u$a de control TCP#

    Peudo-antetul con&ine adreele IP ale $a"inii ură "i detina&ie) de @? de i&i 'iecare)nu$ărul de protocol pentru TCP *0, "i nu$ărul de octe&i  al e($entului TCP *inclu+2nd "iantetul,# Prin includerea pcudo-antetului în calculul u$ei de control TCP e pot detectapac4etele care au 'ot preluate eronat) dar proced2nd at'el) ete ne(ată în"ă"i ierar4iaprotocolului) deoarece adrea IP apar&ine nivelului IP "i nu nivelului TCP#

    C2$pul Op&iuni a 'ot proiectat pentru a per$ite adău(area unor 'acilită&i upli$entareneacoperite de antetul oi"nuit# Cea $ai i$portantă op&iune ete aceea care per$ite 'iecărei$a"ini ă peci'ice încărcarea $a!i$ă de in'or$a&ie utilă TCP pe care ete dipuă ă o accepte#Utili+area e($entelor de di$eniune $are ete $ai e'icientă dec2t utili+area e($entelor dedi$eniune $ică datorită a$orti+ării antetului de ?5 de octe&i prin cantitatea $ai $are dein'or$a&ie utilă# Cu toate acetea) ete poiil ca $a"ini $ai pu&in per'or$ante ă nu 'ie capaileă $anevre+e e($ente 'oarte $ari# %n ti$pul ini&iali+ării cone!iunii) 'iecare parte anun&ădi$eniunea $a!i$ă acceptată "i a"teaptă de la partener aceea"i in'or$a&ie# C2"ti(ă cel $ai $icdintre cele două nu$ere# Dacă o $a"ină nu 'oloe"te aceată op&iune) cantitatea i$plicită dein'or$a&ie utilă ete de @0 octe&i# Toate $a"inile din Internet treuie ă accepte e($ente dedi$eniune @0 ?5 0 octe&i# Di$eniunea $a!i$ă a e($entului nu treuie ă 'ie aceea"i

     în cele două direc&ii#O 'ereatră de 0> F octe&i repre+intă adeea o prole$ă pentru liniile cu o lăr(i$e de

    andă $are "iBau cu înt2r+ieri $ari# Pe o linie T@ *>>#/@0 7p, tri$iterea unei 'eretre între(ide 0> F octe&i durea+ă doar 6? $# Dacă înt2r+ierea propa(ării du-întor ete de 5 $ *careete valoarea tipică pentru o linie tran-continentală,) e$i&ătorul va a"tepta con'ir$ări - 'iind deciinactiv @B>  din ti$p# Pe o cone!iune prin atelit) itua&ia ete c4iar $ai rea# O 'ereatră dedi$eniune $are ar per$ite e$i&ătorului ă continue tri$iterea in'or$a&iei) înă o at'el dedi$eniune nu poate 'i repre+entată în cei 60 i&i ai c2$pului .ereatră# %n R.C 6@?@ e propuneo op&iune Scală a 'eretrei) per$i&2nd e$i&ătorului "i receptorului ă ne(ocie+e un 'actor decalare a 'eretrei# Acet nu$ăr per$ite a$elor păr&i ă deplae+e c2$pul .ereatră cu p2nă la

    6> i&i pre t2n(a) per$i&2nd at'el 'eretre de p2nă la ?@5 octe&i# Aceată op&iune eteuportată în pre+ent de cele $ai $ulte i$ple$entări ale TCP-ului#O altă op&iune propuă de R.C 6650) "i care ete în pre+ent i$ple$entată pe cară lar(ă)

    coată în utili+area unei repetări elective în locul unui protocol cu întoarcere de n pa"i *(o acn protocol,# Dacă receptorul pri$e"te un e($ent eronat ur$at de un nu$ăr $are de e($entecorecte) protocolul TCP claic va contata într-un 'inal o depă"ire de ti$p "i va retri$ite toatee($entele necon'ir$ate) deci "i pe acelea care au 'ot recep&ionate corect *adică e 'ace o întoarcere de n pa"i,# R.C 6650 introduce NAF-urile pentru a per$ite receptorului ă ceară unanu$it e($ent *au e($ente,# După o&inerea acetora) el poate con'ir$a toată in'or$a&ia$e$orată reduc2nd at'el cantitatea de in'or$a&ie retran$iă#

    Stabilirea conexiunii TCP

    %n TCP cone!iunile unt tailite utili+2nd în&ele(erea în trei pa"i8# Pentru a taili ocone!iune) una din păr&i - ă pune$ erverul - a"teaptă în $od paiv o cerere de cone!iune prin

  • 8/15/2019 Tcp Udp Tanenbaum

    10/20

    e!ecu&ia pri$itivelor LISTEN "i ACCEPT) put2nd peci'ica o ură anu$e au nici o ură în $odparticular#

    Cealaltă parte - ă pune$ clientul - e!ecută o pri$itivă CONNECT) indic2nd adrea IP "inu$ărul de port la care dore"te ă e conecte+e) di$eniunea $a!i$ă a e($entului TCP pecare ete dipuă ă o accepte "i) op&ional) o in'or$a&ie utili+ator *de e!e$plu o parolă,#Pri$itiva CONNECT tri$ite un e($ent TCP av2nd itul SN po+i&ionat "i itul ACF nepo+i&ionat)după care a"teaptă un răpun#

     Atunci c2nd oe"te la detina&ie un e($ent) entitatea TCP receptoare veri'ică dacă nucu$va e!ită un proce care a e!ecutat LISTEN pe nu$ărul de port peci'icat în c2$pul Portdetina&ie# %n ca+ contrar) tri$ite un răpun cu itul RST po+i&ionat) pentru a re'u+a cone!iunea#

    *a, Stailirea unei cone!iuni TCP în ca+ul nor$al) *, Coli+iunea apelurilor#

    Dacă e!ită vreun proce care acultă la acel port) e($entul TCP recep&ionat va 'i diri3atcătre proceul repectiv# Aceta poate accepta au re'u+a cone!iunea# Dacă o acceptă) tri$ite înapoi e!peditorului un e($ent de con'ir$are# %n 'i(ura de $ai u *a, ete repre+entatăecven&a de e($ente TCP tran'erate în ca+ de 'unc&ionare nor$ală# De notat că un e($entSN conu$ă un octet din pa&iul nu$erelor de ecven&ă) at'el înc2t con'ir$area ă poată 'i'ăcută 'ără a$i(uită&i#

    Secven&a de eveni$ente ilutrată în 'i(ura *, repre+intă ca+ul în care două $a"ini încearcă i$ultan ă taileacă o cone!iune între acelea"i două porturi# Re+ultă că ete u'icientă 'ie tailită o in(ură cone!iune "i nu două) deoarece cone!iunile unt identi'icate prinpunctele lor ter$inale# Dacă pri$a ini&iali+are conduce la crearea unei cone!iuni identi'icată prin

    *!) 9, "i acela"i lucru îl 'ace "i cea de-a doua ini&iali+are) atunci ete contruită o in(ură intrarede tael) în pe&ă pentru *!) 9,#

    Nu$ărul ini&ial de ecven&ă aociat unei cone!iuni nu ete 5) din $otivele dicutateanterior# Se utili+ea+ă o c4e$ă a+ată pe un cea cu o ătaie la 'iecare > # Pentru $ai $ultăi(uran&ă) atunci c2nd o $a"ină e de'ectea+ă) ete poiil ca ea ă nu 'ie reini&iali+ată în ti$pulde via&ă $a!i$ al unui pac4et) (arant2ndu-e at'el că pac4etele unei cone!iuni anterioare nu epli$ă încă pe undeva prin Internet#

    Elierarea cone!iunii TCP

    De"i cone!iunile TCP unt idirec&ionale) pentru a în&ele(e cu$ unt de'iin&atecone!iunile) cel $ai ine ete ă ni le i$a(ină$ u 'or$a unei perec4i de le(ăturiunidirec&ionale# .iecare le(ătură unidirec&ională ete elierată independent de perec4ea a#Pentru elierarea unei cone!iuni) orice partener poate e!pedia un e($ent TCP av2nd itul .INetat) lucru care indică 'aptul că nici o in'or$a&ie nu $ai ur$ea+ă ă 'ie tran$iă# Atunci c2nd

  • 8/15/2019 Tcp Udp Tanenbaum

    11/20

  • 8/15/2019 Tcp Udp Tanenbaum

    12/20

     Auto$atul cu tări 'inite pentru controlul cone!iunii TCP# Linia (roaă continuă ete caleanor$ală pentru client# Linia (roaă întreruptă ete calea nor$ală pentru erver# Liniile u&iriunt eveni$ente neu+uale# .iecare tran+i&ie ete etic4etată de eveni$entul care a creat-o "i

    ac&iunea care re+ultă din el) eparate de la4#

    .iecare cone!iune începe în tarea %NCJIS# Aceată tare ete părăită dacă ur$ea+ă ăe taileacă o cone!iune paivă *LISTEN, au activă *CONNECT,# Dacă partenerul taile"te ocone!iune de tipul opu) tarea devine STA

  • 8/15/2019 Tcp Udp Tanenbaum

    13/20

    locală creea+ă o înre(itrare de cone!iune) o $arc4ea+ă ca 'iind în tarea SN SENT "i tri$ite une($ent SN# De oervat că $ai $ulte cone!iuni pot 'i dec4ie *au în cur de a 'i dec4ie, înacela"i ti$p pre 'oloul $ai $ultor aplica&ii) at'el înc2t o tare ete aociată unei cone!iuni "iete înre(itrată în înre(itrarea aociată aceteia# La recep&ia unui SN  ACF TCP e!pedia+ăulti$a con'ir$are *ACF, din în&ele(erea în trei pa"i8 "i co$ută în tarea STA1octe&i *p2nă c2nd aplica&ia "ter(e ni"te date din acet ta$pon,) receptorul va anun&a o 'ereatrăde ?5>1 octe&i încep2nd de la ur$ătorul octet a"teptat#

     Acu$) e$i&ătorul tran$ite al&i ?5>1 octe&i) care unt con'ir$a&i) dar 'ereatra o'erită ete5# E$i&ătorul treuie ă e opreacă p2nă c2nd proceul aplica&ie de pe $a"ina receptoare a"ter ni"te date din ta$pon) $o$ent în care TCP poate o'eri o 'ereatră $ai $are#

  • 8/15/2019 Tcp Udp Tanenbaum

    14/20

    Controlul 'eretrei în TCP#

     Atunci c2nd 'ereatra ete 5) în $od nor$al e$i&ătorul nu poate ă tran$ită e($ente)cu două e!cep&ii# %n pri$ul r2nd) in'or$a&ia ur(entă poate 'i tri$iă) de e!e$plu pentru aper$ite utili+atorului ă opreacă proceele rul2nd pe $a"ina de la ditan&ă# %n al doilea r2nd)e$i&ătorul poate tri$ite un e($ent de un octet pentru a deter$ina receptorul ă renun&eur$ătorul octet a"teptat "i di$eniunea 'eretrei# Standardul TCP prevede în $od e!plicitaceată op&iune pentru a preveni interlocarea în ca+ul în care e înt2$plă ca anun&area unei'eretre ă 'ie vreodată pierdută#

    E$i&ătorii nu tran$it în $od oli(atoriu date de îndată ce acet lucru ete cerut de cătreaplica&ie# Nici receptorii nu tri$it în $od oli(atoriu con'ir$ările de îndată ce acet lucru etepoiil# De e!e$plu) în 'i(ură) atunci c2nd unt diponiili pri$ii ?F octe&i) TCP) "tiind că dipunede o 'ereatră de >F octe&i) va $e$ora in'or$a&ia în ta$pon p2nă c2nd al&i ?F octe&i devindiponiili "i at'el e va putea tran$ite un e($ent cu o încărcare utilă de >F octe&i# Aceată'acilitate poate 'i 'oloită pentru î$unătă&irea per'or$an&elor#

    Să conideră$ o cone!iune TELNET cu un editor interactiv care reac&ionea+ă la 'iecareapăare a tatelor# %n cel $ai r2u ca+) atunci c2nd un caracter oe"te la entitatea TCPe$i&ătoare) TCP creea+ă un e($ent TCP de ?6 octe&i) pe care îl 'urni+ea+ă IP-ului pentru a 'itran$i ca o data(ra$ă 6P de >6 octe&i# De partea receptorului) TCP tran$ite i$ediat ocon'ir$are de >5 octe&i *?5 octe&i antet TCP "i ?5 octe&i antet IP,# 7ai t2r+iu) c2nd editorul a cititcaracterul) TCP tran$ite o actuali+are a 'eretrei) depla2nd 'ereatra cu un octet la dreapta# Acet pac4et ete de ae$enea de >5 octe&i# %n 'inal) c2nd editorul a prelucrat caracterul)tran$ite ecoul u 'or$a unui pac4et de >6 octe&i# Cu totul) unt 'oloi&i 60? octe&i din lăr(i$eade andă "i unt tri$ie patru e($ente pentru orice caracter tipărit# Atunci c2nd lăr(i$ea deandă ete reduă) aceată $etodă de lucru nu ete reco$andată#

    O aordare 'oloită de $ulte i$ple$entări TCP pentru opti$i+area acetei itua&ii contă în înt2r+ierea con'ir$ărilor "i actuali+ărilor de 'ereatră ti$p de 55 $) în peran&a apari&iei unorin'or$a&ii la care ă e ata"e+e pentru o călătorie pe (rati# Preupun2nd că editorul are un ecoude 5 $) ete necear acu$ un in(ur pac4et de >6 octe&i pentru a 'i tri$i utili+atorului de laditan&ă) reduc2nd nu$ărul pac4etelor "i utili+area lăr(i$ii de andă la 3u$ătate#

  • 8/15/2019 Tcp Udp Tanenbaum

    15/20

    De"i aceată re(ulă reduce încărcarea re&elei de către receptor) e$i&ătorul operea+ă încăine'icient tri$i&2nd pac4ete de >6 octe&i care con&in un in(ur octet de date# O $odalitate de areduce aceată de'icien&ă ete cunocută ca al(orit$ul lui Na(le *Na(le) 6=1>,# Su(etia luiNa(le ete i$plă: atunci c2nd e$i&ătorul dipune de date) în ecven&ă) de c2te un octet) el vatri$ite doar pri$ul octet) retul octe&ilor 'iind $e$ora&i p2nă la con'ir$area pri$ului octet# Apoivor 'i tri$ie toate caracterele $e$orate într-un e($ent TCP "i va continua $e$orarea p2nă lacon'ir$area tuturor octe&ilor# Dacă utili+atorul tatea+ă repede "i re&eaua ete lentă) un nu$ăr

    utan&ial de caractere poate 'i plaat în 'iecare e($ent) reduc2nd cu $ult lăr(i$ea de andă'oloită# în plu) al(orit$ul per$ite tran$iia unui nou pac4et) dacă -a dipu de u'icientăin'or$a&ie pentru a u$ple 3u$ătate dintr-o 'ereatră au pentru a co$pleta un e($ent#

    I$ple$entările TCP 'oloec pe cară lar(ă al(orit$ul lui Na(le) dar e!ită itua&ii c2ndete $ai ine ca el ă 'ie de+activat# %n particular) c2nd o aplica&ie M-Kindo rulea+ă prinInternet) deplaările $auului treuie tran$ie $a"inii de la ditan&ă# *Site$ul M Kindo eteite$ul de 'eretre utili+at pe $a3oritatea ite$elor UNIM#, ruparea lor pentru a 'i tran$ie în ra'ală provoacă o $i"care i$previ+iilă a curorului) lucru care ne$ul&u$e"te pro'undutili+atorii#

    O altă prole$ă care poate de(rada per'or$an&a TCP ete indro$ul 'eretrei tupide#*Clar) 6=1?,# Aceată prole$ă apare atunci c2nd in'or$a&ia ete 'urni+ată entită&ii TCPe$i&ătoare în locuri $ari) dar la partea receptoare o aplica&ie interactivă cite"te datele octet cuoctet# Pentru a în&ele(e prole$a) ă anali+ă$ 'i(ura# Ini&ial) ta$ponul TCP al receptorului eteplin "i e$i&ătorul "tie acet 'apt *adică are o 'ereatră de di$eniune 5,# Apoi) aplica&iainteractivă cite"te un caracter de pe canalul TCP# Aceată ac&iune 'ace 'ericită entitatea TCPreceptoare) deci ea va tri$ite o actuali+are de 'ereatră către e$i&ător d2ndu-i at'el dreptul de a$ai tri$ite un octet# %ndatorat) e$i&ătorul tri$ite un octet# Cu aceta) ta$ponul ete plin "ireceptorul con'ir$ă e($entul de 6 octet) dar repo+i&ionca+ă di$eniunea 'eretrei la 5# Acetco$porta$ent poate continua la ne'2r"it#

    Solu&ia lui Clar ete de a nu per$ite receptorului ă tri$ită o actuali+are de 'ereatră la'iecare octet# %n c4i$) el ete 'or&at ă a"tepte p2nă c2nd pa&iul diponiil are o di$eniune

    decentă) ur$2nd ă-l o'ere pe aceta din ur$ă# 7ai preci) receptorul nu ar treui ă tri$ită oactuali+are de 'ereatră p2nă c2nd nu va putea (etiona $ini$ul dintre di$eniunea $a!i$ăo'erită atunci c2nd cone!iunea a 'ot tailită "i 3u$ătate din di$eniunea ta$ponului ău) dacăete lieră#

    7ai $ult dec2t at2t) e$i&ătorul poate î$unătă&i itua&ia neli$it2nd e($ente dedi$eniune $ică# %n c4i$) el ar treui ă încerce ă a"tepte p2nă c2nd acu$ulea+ă u'icientpa&iu în 'ereatră pentru a tri$ite un e($ent între( au $ăcar unul con&in2nd cel pu&in 3u$ătate din di$eniunea ta$ponului receptorului *pe care treuie ă o eti$e+e din ecven&aactuali+ărilor de 'ereatră recep&ionate p2nă acu$,#

  • 8/15/2019 Tcp Udp Tanenbaum

    16/20

    Sindro$ul 'eretrei tupide Al(orit$ul lui Na(le "i olu&ia lui Clar pentru indro$ul 'eretrei tupide unt

    co$ple$entare# Na(le a încercat ă re+olve prole$a 'urni+ării datelor către TCP octet cu octet)cau+ată de aplica&ia e$i&ătoare# Clar a încercat ă re+olve prole$a e!tra(erii datelor de la TCPoctet cu octet) cau+ată de către aplica&ia receptoare# A$ele olu&ii unt valide "i pot 'unc&iona î$preună# Scopul ete ca e$i&ătorul ă nu tri$ită e($ente $ici) iar receptorul ă nu ceară at'elde e($ente#

    Receptorul TCP poate 'ace) pentru î$unătă&irea per'or$an&elor) $ai $ult dec2t i$plaactuali+are a 'eretrei în unită&i $ari# Ca "i e$i&ătorul TCP) el are poiilitatea ă $e$ore+e date)at'el înc2t ă poată loca o cerere de READ a aplica&iei p2nă c2nd îi poate 'urni+a o cantitatee$ni'icativă de in'or$a&ie# At'el e reduce nu$ărul de apeluri TCP) deci "i upraîncărcarea#

  • 8/15/2019 Tcp Udp Tanenbaum

    17/20

    $uncii ete 'ăcută de TCP) "i aceata deoarece adevărata olu&ie a con(etiei contă în$ic"orarea ratei de tran'er a in'or$a&iei#

    Teoretic) con(etia poate 'i controlată pe a+a unui principiu î$pru$utat din 'i+ică: le(eaconervării pac4etelor# Ideea de a+ă ete de a nu in3ecta un nou pac4et în re&ea p2nă c2nd unpac4et $ai vec4i nu o părăe"te *de e!e$plu ete 'urni+at receptorului,# TCP încearcă ă atin(ăacet cop prin $anipularea dina$ică a di$eniunii 'eretrei#

    Pri$ul pa în controlul con(etiei ete detec&ia ei# 7ai de$ult) detec&ia con(etiei era

    di'icilă# O depă"ire de ti$p datorată pierderii unui pac4et putea 'i cau+ată 'ie de *6, +(o$otul depe linia de tran$iie) 'ie de *?, eli$inarea pac4etului de către un ruter con(etionat#Di'eren&ierea celor două ca+uri era di'icilă#

    %n +ilele noatre) pierderea pac4etului din pricina erorilor de tran$iie ete detul de rară)deoarece cele $ai $ulte din trunc4iurile principale de co$unica&ie unt din 'iră# %n conecin&ă)cele $ai $ulte depă"iri ale ti$pilor de tran$iie pe Internet e datorea+ă con(etiilor# To&ial(orit$ii TCP din Internet preupun că depă"irile de ti$p unt cau+ate de con(etii "i$onitori+ea+ă acete depă"iri pentru a detecta prole$ele#

    %nainte de a dicuta depre $odalitatea în care TCP reac&ionea+ă la con(etii) ă decrie$ în pri$ul r2nd $odul în care e încearcă prevenirea apari&iei lor# Atunci c2nd e taile"te ocone!iune) treuie ă e alea(ă o 'ereatră de o di$eniune potrivită# Receptorul poate peci'icao 'ereatră a+2ndu-e pe di$eniunea ta$ponului propriu# Dacă e$i&ătorul acceptă aceatădi$eaiune a 'eretrei) nu $ai pot apărea prole$e datorită depă"irii ta$ponului la recep&ie) darpot apărea în c4i$ datorită con(etiei interne în re&ea#

    %n 'i(ură pute$ vedea interpretarea 4idraulică a acetei prole$e# Oervă$ o conductă(roaă care duce la un receptor de di$eniune $ică# At2ta ti$p c2t e$i&ătorul nu tri$ite $ai$ultă apă dec2t poate con&ine (ăleata) apa nu e va pierde# %n 'i(ura *,) 'actorul de li$itare nu$ai ete capacitatea (ăle&ii) ci capacitatea de tranport a re&elei# Dacă vine prea repede prea$ultă apă) ca e va revăra "i o anu$ită cantitate e va pierde *în acet ca+ prin u$plereap2lniei,#

    Solu&ia din Internet ete de a reali+a poiilitatea e!iten&ei a două prole$e - capacitatea

    re&elei "i capacitatea receptorului - "i de a le trata pe 'iecare eparat# Pentru a 'ace acet lucru)'iecare e$i&ător $en&ine două 'eretre: 'ereatra acceptată de către receptor "i o a doua'ereatră) 'ereatra de con(etie# .iecare re'lectă nu$ărul de octe&i care pot 'i tri$i"i de cătree$i&ător# Nu$ărul octe&ilor care pot 'i tri$i"i ete dat de $ini$ul dintre cele două 'eretre# At'el) 'ereatra e'ectivă ete $ini$ul dintre ceea ce e$i&ătorul crede că ete în re(ulă8 "i ceeace receptorul crede că ete în re(ulă8# Dacă receptorul pune: Tri$ite 1F octe&i8) dar e$i&ătorul"tie că o ra'ală de $ai $ult de >F octe&i poate a(lo$era e!ceiv re&eaua) el va tri$ite >F octe&i#Din alt punct de vedere) dacă receptorul pune: Tri$ite 1F octe&i8 "i e$i&ătorul "tie că o ra'alăde @?F octe&i poate trăate 'ără e'ort - re&eaua) el va tri$ite to&i cei 1F octe&i ceru&i#

    La tailirea cone!iunii) e$i&ătorul ini&iali+ea+ă 'ereatra de con(etie la di$eaiunea celui

    $ai $are e($ent utili+at de acea cone!iune# El tri$ite apoi un e($ent de di$eniune $a!i$ă#Dacă acet e($ent ete con'ir$at înaintea e!pirării ti$pului) $ai adau(ă un e($ent la'ereatra de con(etie) 'ăc2nd-o at'el de di$eniunea a două e($ente de di$eniune $a!i$ă)"i tri$ite două e($ente# O dată cu con'ir$area 'iecăruia din acete e($ente) 'ereatra decon(etie ete redi$enionată cu încă un e($ent de di$eniune $a!i$ă# Atunci c2nd 'ereatrade con(etie ete de n e($ente) dacă toate cele n e($ente unt con'ir$ate în ti$p util) eaete crecută cu nu$ărul de octe&i corepun+ător celor n e($ente# De 'apt) 'iecare ra'alăcon'ir$ată cu ucce dulea+ă 'ereatra de con(etie#

    .ereatra de con(etie cre"te în continuare e!ponen&ial p2nă c2nd au e produce odepă"ire de ti$p) au e atin(e di$eniunea 'eretrei receptorului# Ideea ete ca dacă ra'ale de

    di$eniune) ă pune$) 65?>) ?5>1 "i >5 de octe&i 'unc&ionea+ă 'ără prole$e) dar o ra'ală de16=? octe&i duce la o depă"ire de ti$p) 'ereatra de con(etie va 'i tailită la >5=0 de octe&ipentru a evita con(etia# At2ta ti$p c2t 'ereatra de con(etie ră$2ne la >5=0) nu va 'itran$iă nici o ra'ală $ai $are de aceată valoare) indi'erent c2t de $ult pa&iu de 'ereatrăete o'erit de către receptor# Acet al(orit$ ete nu$it al(orit$ul tartului lent) 'ără a 'i înă

  • 8/15/2019 Tcp Udp Tanenbaum

    18/20

    c2tu"i de pu&in lent *Vacoon) 6=11,# Ete e!ponen&ial# Toate i$ple$entările TCP treuie ă îluporte#

    Să privi$ acu$ al(orit$ul de control al con(etiei în ca+ul Internetului# El utili+ea+ă în plu'a&ă de 'eretrele de recep&ie "i de con(etie un al treilea para$etru) nu$it pra() ini&ial de 0>F# Atunci c2nd apare o depă"ire de ti$p) pra(ul ete po+i&ionat la 3u$ătate din 'ereatra curentă decon(etie "i 'ereatra de con(etie ete repo+i&ionată la di$eniunea unui e($ent $a!i$#Startul lent ete utili+at apoi pentru a deter$ina c2t poate re&eaua ă ducă) at2ta doar că acea

    cre"tere e!ponen&ială e opre"te odată cu atin(erea pra(ului# De aici înainte tran$iiile reu"ite$ărec în $od liniar di$eniunea 'eretrei de con(etie *cu c2te un e($ent $a!i$ pentru'iecare ra'ală,) în locul unei cre"teri pentru 'iecare e($ent# De 'apt) al(orit$ul preupune căete acceptailă în3u$ătă&irea 'eretrei de con(etie) din acel punct continu2ndu-"i (radual caleapre di$eniuni $ai $ari#

    .unc&ionarea al(orit$ului de con(etie e poate vedea în 'i(ura ur$ătoare# Di$eniuneaunui e($ent $a!i$ ete) în acet ca+) de 65?> de octe&i# Ini&ial 'ereatra de con(etie are 0>Focte&i) dar apare o depă"ire de ti$p "i deci pra(ul ete tailit la @?F octe&i iar 'ereatra decon(etie la 6F octe&i aceta 'iind punctul 5 al tran$iiei din 'i(ură# .ereatra de con(etiecre"te apoi e!ponen&ial p2nă atin(e pra(ul *@?F octe&i,# încep2nd de aici) cre"terea ete liniară#

    Un e!e$plu al al(orit$ului de con(etie din Internet#

    Tran$iia 6@ nu are noroc "i apare o depă"ire de ti$p# Pra(ul ete tailit la 3u$ătate din'ereatra curentă *acu$ >5F octe&i) deci 3u$ătate ete ?5F octe&i, "i tartul lent ete ini&iat dinnou# Atunci c2nd con'ir$ările pentru tran$iia 6> încep ă oeacă) pri$ele patru dulea+ă'iecare 'ereatra de con(etie) dar după aceea cre"terea redevine liniară#

    Dacă nu $ai apar depă"iri de ti$p) 'ereatra de con(etie va continua ă creacă p2nă ladi$eniunea 'eretrei receptorului# %n acet punct) cre"terea ei va 'i oprită "i va ră$2necontantă at2ta ti$p c2t nu $ai apar depă"iri "i 'ereatra receptorului nu î"i $odi'icădi$eaiunca# Ca un alt apect) dacă un pac4et IC7P SOURCE WUENCJ oe"te "i ete 'urni+atTCP-ului) acet eveni$ent ete tratat la 'el ca o depă"ire de ti$p# O alternativă *"i o aordare

    $ai recentă, ete decriă în R.C @601# Ad$initrarea contorului de ti$p în TCP

    TCP utili+ea+ă *cel pu&in conceptual, $ai $ulte contoare pentru a 'ace ceea ce are de

  • 8/15/2019 Tcp Udp Tanenbaum

    19/20

    'ăcut# Cel $ai i$portant dintre acetea ete contorul de retran$iie# Atunci c2nd ete tri$i une($ent) e porne"te un contor de retran$iie# Dacă e($entul ete con'ir$at înainte dee!pirarea ti$pului) contorul ete oprit# Pe de altă parte) dacă ti$pul e!piră înaintea pri$iriicon'ir$ării) e($entul ete retran$i *"i contorul ete pornit din nou,# %ntrearea care e puneete ur$ătoarea: C2t de $are treuie ă 'ie intervalul de ti$p p2nă la e!pirareX

     Aceată prole$ă ete $ult $ai di'icilă la nivelul tranport din Internet dec2t la nivelulprotocoalelor (enerice de le(ătură de date# %n ca+ul din ur$ă) înt2r+ierea a"teptată ete u"or

    predictiilă *de e!e$plu) are o variantă că+ută,) deci contorul poate 'i etat ă e!pire c4iari$ediat după ce era a"teptată con'ir$area) a"a cu$ e arată în 'i(ură# Cu$ con'ir$ările untrareori înt2r+iate în nivelul le(ătură de date) aen&a unei con'ir$ări în $o$entul în care aceataera a"teptată înea$nă de oicei că -a pierdut 'ie cadrul) 'ie con'ir$area#

    *a, Denitatea de proailitate a oirilor în ti$p a con'ir$ărilor în nivelul le(ătură de date# *,Denitatea de proailitate a oiri con'ir$ărilor pentru TCP#

    TCP treuie ă 'acă 'a&a unui $ediu radical di'erit# .unc&ia de denitate a proailită&iipentru ti$pul necear întoarcerii unei con'ir$ări TCP arată $ai de(raă ca în 'i(ura *, dec2t ca în 'i(ura *a,# Ete di'icilă deter$inarea ti$pului în care e reali+ea+ă circuitul du-întor p2nă ladetina&ie# C4iar "i c2nd aceta ete cunocut) tailirea intervalului de depă"ire ete deae$enea di'icilă# Dacă intervalul ete prea curt) ă pune$ T '   în 'i(ura *,) vor apărearetran$iii inutile) a(lo$er2nd Internet-ul cu pac4ete 'ără rot# Dacă ete prea lun() *T ?,)per'or$an&ele vor avea de u'erit datorită înt2r+ierii retran$iiei de 'iecare dată c2nd e pierdeun pac4et# 7ai $ult dec2t at2t) $edia "i varianta ditriu&iei oirii con'ir$ărilor e pot c4i$acu rapiditate pe parcurul a c2torva ecunde atunci c2nd apare au e re+olvă o con(etie#

    Solu&ia ete ă e utili+e+e un al(orit$ pro'und dina$ic) care a3utea+ă în $od contant

    intervalul de depă"ire a+2ndu-e pe $ăurători continue ale per'or$an&ei re&elei# Al(orit$ulutili+at în (eneral de către TCP ete datorat Iui Vacoon *6=11, "i ete decri $ai 3o# Pentru'iecare cone!iune) TCP pătrea+ă o variailă) RTT) care ete cea $ai ună eti$are a ti$pului încare e parcur(e circuitul du-întor către detina&ia în dicu&ie# Atunci c2nd ete tri$i une($ent) e porne"te un contor de ti$p) at2t pentru a vedea c2t de $ult durea+ă p2nă lapri$irea con'ir$ării c2t "i pentru a ini&ia o retran$iie în ca+ul cur(erii unui interval prea lun(#Dacă e pri$e"te con'ir$area înaintea e!pirării contorului) TCP $ăoară c2t de $ult i-a treuitcon'ir$ării ă oeacă) 'ie acet ti$p 7# în continuare el actuali+ea+ă RTT) după 'or$ula:

     M  RTT  RTT    )1(   α α    −+=

    unde α ete un 'actor de nete+ire care deter$ină ponderea dată vec4ii valori# U+ual) α/B1#

    C4iar preupun2nd o valoare ună a lui RTT) ale(erea unui interval potrivit deretran$iie nu ete o arcină u"oară# %n $od nor$al) TCP utili+ea+ă βRTT) dar prole$a contă în ale(erea lui β#

    %n i$ple$entările ini&iale) β  era întotdeauna ?) dar e!perien&a a arătat că o valoarecontantă ete in'le!iilă deoarece nu corepunde în ca+ul cre"terii variantei#

  • 8/15/2019 Tcp Udp Tanenbaum

    20/20

    %n 6=11) Vacoon a propu ca β ă 'ie apro!i$ativ propor&ional cu devia&ia tandard a'unc&iei de denitate a proailită&ii ti$pului de pri$ire a con'ir$ărilor) at'el înc2t o variantă$are i$plică un β $are "i vicevera# %n particular) el a u(erat utili+area devia&iei $edii ca oeti$are pu&in cotiitoare a devia&iei tandard#  Al(orit$ul ău preupune ur$ărirea unei altevariaile de nete+ire) D) devia&ia# La 'iecare oire a unei con'ir$ări) ete calculată di'eren&adintre valorile a"teptate "i oervate YRTT Z 7 [# O valoare nete+ită a aceteia ete pătrată în D)prin 'or$ula

     M  Rtt  D D   −−+=   )1(   α α 

    unde α poate au nu ă aiă aceea"i valoare ca cea utili+ată pentru nete+irea lui RTT# De"i D nuete c4iar devia&ia tandard) ea ete u'icient de ună "i Vacoon a arătat cu$ poate 'i calculatăutili+2nd doar adunări de între(i) căderi "i deplaări) ceea ce ete un $are punct c2"ti(at# Cele$ai $ulte i$ple$entări TCP utili+ea+ă acu$ acet al(orit$ "i tailec valoarea intervalului dedepă"ire la:

    Depă"ire RTT >\ D  Ale(erea 'actorului > ete într-un 'el aritrară) dar are două avanta3e# %n pri$ul r2nd)$ultiplicarea prin > poate 'i 'ăcută printr-o in(ură deplaare *la nivel de i&i,# %n al doilea r2nd)$ini$i+ea+ă depă"irile de ti$p "i retran$iiile inutile) datorită 'aptului că $ai pu&in de un

    procent din totalul pac4etelor oec cu înt2r+ieri $ai $ari de patru ori devia&ia tandard# *De'apt) Vacoon a propu ini&ial ă e 'oloeacă ?) dar e!perien&a ulterioară a de$ontrat că >conduce la per'or$an&e $ai une,#

    O prole$ă le(ată de eti$area dina$ică a RTT e re'eră la ce treuie 'ăcut în itua&ia încare un e($ent cau+ea+ă o depă"ire "i treuie retran$i# Atunci c2nd con'ir$area ete pri$ită)nu ete clar dacă aceata e re'eră la pri$a tran$iie au la o tran$iie ur$ătoare# O deci+ieeronată poate conta$ina erio eti$area lui RTT# P4il Farn a decoperit aceată prole$ă cu$ultă (reutate# El ete un radio a$ator entu+iat) intereat în tran$iterea pac4etelor TCPBIPprin operare radio) un $ediu recunocut pentru lipa de 'iailitate *pe o +i enină) la detina&iea3un( 3u$ătate din pac4ete,# El a 'ăcut o propunere i$plă: ă nu e actuali+e+e RTT pentru nici

    un e($ent care a 'ot retran$i# %n loc de aceata) ti$pul de e!pirare ete dulat la 'iecaree"ec) p2nă c2nd e($entele a3un( pri$a oară la detina&ie# Aceată corec&ie ete nu$ităal(orit$ul lui Farn# Cele $ai $ulte din i$ple$entările TCP utili+ea+ă acet al(orit$#

    Contorul de retran$iie nu ete in(urul utili+at de către TCP# Un al doilea contor etecontorul de periten&ă# El ete proiectat ă prevină ur$ătoarea itua&ie de interlocare#Receptorul tri$ite o con'ir$are cu o di$eniune a 'eretrei 5) pun2ndu-i e$i&ătorului ăa"tepte# 7ai t2r+iu) receptorul actuali+ea+ă 'ereatra) dar pac4etul cu aceată actuali+are etepierdut# Acu$) at2t e$i&ătorul c2t "i receptorul a"teaptă o reac&ie din partea celuilalt# Atunci c2ndcontorul de periten&ă e!piră) e$i&ătorul tran$ite o ondă către receptor# Răpunul la aceatăinveti(are 'urni+ea+ă di$eniunea 'eretrei# Dacă aceată di$eniune continuă ă 'ie +ero)contorul de periten&ă ete repo+i&ionat "i ciclul e repetă# Dacă ete nenul) in'or$a&ia poate 'iacu$ tran$iă#

    Un al treilea contor utili+at de unele i$ple$entări ete contorul de $en&inere în via&ă#C2nd o cone!iune a 'ot inactivă o lun(ă perioadă de ti$p) contorul de $en&inere în via&ă poatee!pira pentru a 'or&a una din păr&i ă veri'ice dacă cealaltă parte e!ită încă# Dacă aceata nurăpunde) cone!iunea ete înc4iă# Aceată 'acilitate ete controverată) deoarece upraîncarcăre&eaua "i poate ter$ina o cone!iune alt'el ănătoaă datorită unei parti&ionări tran+itorii are&elei#

    Ulti$ul contor 'oloit la 'iecare cone!iune TCP ete acela utili+at în tările de ATEPTARECONTORI]ATQ pe parcurul înc4iderii cone!iunilor# El 'unc&ionea+ă pe durata a două vie&i $a!i-$e ale unui pac4et) pentru a e ai(ura că) atunci c2nd o cone!iune ete înc4iă) toate pac4etele

    create de aceata au $urit#