Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Windows 10
  • Futja e madhësisë së dritares rrëshqitëse në kalkulatorin shkencor të tregtarit. Algoritmet e kompresimit të imazhit pa humbje

Futja e madhësisë së dritares rrëshqitëse në kalkulatorin shkencor të tregtarit. Algoritmet e kompresimit të imazhit pa humbje

Tani duhet të futni madhësinë e dritares rrëshqitëse për të llogaritur autokorrelacionet. Dritare rrëshqitëse përdoret për të llogaritur vlerat e funksionit të autokorrelacionit për një funksion të specifikuar në një interval të fundëm që keni futur për të llogaritur koeficientin e korrelacionit. Dritarja rrëshqitëse kap kornizat e para kohore M të serive kohore dhe më pas lëviz në çdo hap nga një kornizë kohore në intervalin që keni futur për të llogaritur korrelacionet e dy instrumenteve.

Një dritare rrëshqitëse mund të marrë zyrtarisht vlera nga dy në 999. Vendosja e një vlere mbi 999 nuk ka kuptim, pasi intervali maksimal i përdorur në llogaritje është 1000. Por në realitet, madhësia e dritares rrëshqitëse nuk mund të jetë më e madhe se N- 1, ku N është madhësia e intervalit të zgjedhur (numri i rreshtave të përdorur në llogaritjet).

Një dritare rrëshqitëse më pak se 2 nuk ka kuptim sipas përkufizimit.

Nëse nuk keni nevojë të llogarisni autokorrelacionin, atëherë vendosni një madhësi dritareje lëvizëse më pak se 2. Në këtë rast, Llogaritësi i tregtarit shkencor do të injorojë llogaritjen e funksionit të autokorrelacionit.

Fillestarët zakonisht janë të interesuar se çfarë madhësie dritareje rrëshqitëse është më e mira për t'u instaluar. Kjo zakonisht varet nga çfarë intervali ju intereson në drejtim të studimit të sjelljes së autokorrelacioneve. Por mbani parasysh sa vijon.

Nëse keni të bëni me ndonjë funksion shumë të rregullt, për shembull, periodik, kur intervali në studim përmban shumë periudha, atëherë një rregullsi e tillë e funksionit në studim zbulohet mirë nga një dritare e shkurtër rrëshqitëse. Duke përdorur provën dhe gabimin, mund të zgjidhni madhësinë e dritares rrëshqitëse që përafërsisht përkon me periudhën e rregullsisë së funksionit në studim.

Nëse keni të bëni me zhurmë të bardhë (në në këtë rast me analogun e tij diskret, ku të gjitha frekuencat nga intervali i prerë nga vlera e kornizës kohore janë të pranishme me amplituda afërsisht të barabarta), atëherë një proces i tillë zbulohet më së miri nga një dritare e gjatë rrëshqitëse, me një madhësi afër intervalit në studim.

Nëse kryeni kërkime të pavarura mbi autokorrelacionet e instrumenteve të ndryshme të tregut, do të shihni se shumica e tyre janë në rajonin e ndërmjetëm midis lëvizjes thjesht të rregullt me ​​shtimin e zhurmës së rastësishme dhe zhurmës thjesht të bardhë. Kjo do të thotë, nga njëra anë, kjo nuk është një kazino dhe, nga ana tjetër, ky nuk është një ligj i rreptë i lëvizjes, të cilit i është shtuar zhurma e një amplitude aq të lartë sa shenjat e rregullsisë u mbytën vizualisht në këtë zhurmë. . Gjithçka që thuhet këtu për kërkimin vlen kryesisht për të dhënat e përditshme, pasi janë pikërisht këto të dhëna që unë i kam nënshtruar hulumtimit më të madh, për faktin se mbi këto të dhëna punoj kryesisht.

Për shembull, nëse flasim për çiftet kryesore të monedhës, atëherë është e pamundur të ndash qartë lëvizjen e rregullt dhe zhurmën, siç është e ndarë në teorinë e sinjalit, kur keni një lloj sinjali radio, por ai është i mbytur në ndërhyrje. Një nga arsyet e pamundësisë së një ndarjeje kaq të qartë të dinamikës së monedhës në rregullsi dhe zhurmë është se rregullsia e dinamikës së një çifti valutor në vetvete përfaqëson një seri të pafundme (ose një shumë të fundme me një numër i madh terma) të funksioneve të rregullta të amplitudës në rënie, mbi të cilat mbivendoset zhurma me amplituda jo të njëjta, por të ndryshme. Plus jostacionariteti i të gjithë procesit, kur vetitë tuaja statistikore në fund të intervalit në studim mund të ndryshojnë shumë nga vetitë statistikore në fillim të intervalit në studim. Por diskutimi i këtyre çështjeve shkon përtej qëllimit të këtij udhëzimi.

Pra, çfarë kemi ne?

Nëse madhësia e dritares rrëshqitëse është shumë më e vogël se intervali në studim, atëherë do të merrni një funksion të gjatë autokorrelacioni, pasi dritarja rrëshqitëse do të bëjë shumë rrëshqitje. Por ky do të jetë një funksion me informacion të ulët, përveç nëse, sigurisht, zbulohen disa rregullsi të periudhave të shkurtra atje. Përkundrazi, nëse madhësia e dritares rrëshqitëse është shumë afër madhësisë së intervalit në studim, atëherë një funksion i tillë autokorrelacioni përmban shumë informacione, por do të jetë shumë i shkurtër. Një dritare rrëshqitëse do të bëjë shumë pak rrëshqitje dhe, për shembull, nuk do të arrijë pikën ku autokorrelacioni i afrohet zeros.

Prandaj, ju rekomandoj që gjithmonë të filloni të hulumtoni një instrument tregu të panjohur me një madhësi dritareje lëvizëse afërsisht gjysmën e madhësisë së intervalit që studiohet. Dhe vetëm atëherë, bazuar në rezultatet e marra, merrni një vendim nëse do të zvogëloni ose rrisni madhësinë e dritares rrëshqitëse. Për shembull, nëse një interval prej tre muajsh shqyrtohet në një hark kohor ditor, atëherë kjo është afërsisht 64-67 rreshta. Kjo do të thotë që madhësia e dritares rrëshqitëse fillimisht mund të merret si 33 pikë. Pastaj mund të shihni se çfarë do të ndryshojë nëse merrni madhësinë e dritares rrëshqitëse të barabartë me një muaj (22 pikë) dhe dy muaj (44 pikë).

TCP përdor teknologjinë e dritares rrëshqitëse për të specifikuar numrin e segmenteve që marrësi mund të pranojë të dërguara nga një numër konfirmimi. Ky seksion diskuton dritaren rrëshqitëse TCP.

Kur përdorni një dritare madhësi fikse, madhësia e dritares përcaktohet një herë dhe nuk ndryshon në të ardhmen. Kur përdorni një dritare rrëshqitëse, madhësia e dritares negociohet në fillim të transferimit dhe mund të ndryshojë në mënyrë dinamike gjatë sesionit të komunikimit TCP. Dritarja rrëshqitëse ju ndihmon ta përdorni në mënyrë më efikase xhiros, sepse madhësi më të madhe dritarja ju lejon të transferoni më shumë të dhëna përpara se të merrni konfirmimin. Gjithashtu, nëse marrësi zvogëlon madhësinë e dritares në 0, atëherë ky veprim në mënyrë efektive ndalon transmetimin e mëtejshëm të të dhënave derisa të dërgohet një vlerë e dritares më e madhe se 0.

Në figurë, madhësia e dritares është 3. Dërguesi mund të transmetojë tre segmente te marrësi. Nga ky moment, dërguesi pret konfirmimin nga marrësi. Pasi marrësi të pranojë marrjen e tre segmenteve të të dhënave, dërguesi mund të transmetojë tre segmentet e ardhshme. Megjithatë, ndërsa aftësia për të marrë segmente zvogëlohet, marrësi do të zvogëlojë madhësinë e dritares në mënyrë që të dhënat e marra të mos shkaktojnë tejmbushje buferi dhe të hedhin poshtë segmentet.

Çdo konfirmim i dërguar nga marrësi përmban një madhësi të deklaruar të dritares, e shprehur në numrin e bajteve që marrësi pranon (e njohur ndryshe si madhësia e dritares). Kjo lejon që dritarja të zgjerohet ose tkurret sipas nevojës për të kontrolluar madhësinë e tamponit dhe shpejtësinë e përpunimit të marrësit.

Protokolli TCP mbështet një parametër të veçantë - madhësinë e dritares së mbingarkesës (CWS), e cila zakonisht është e njëjtë me madhësinë e dritares së marrësit, por CWS zvogëlohet me një faktor prej 2 kur segmentet fillojnë të humbasin. Humbja e segmenteve perceptohet si mbingarkesë e rrjetit. Protokolli TCP mundëson mekanizëm kompleks rikthehet dhe rinis algoritmet në mënyrë që të mos kontribuojë më tej në bllokimin e rrjetit.

PROCESI I APLIKIMIT TË DRITARËS RRËSHQITES.

Veprimi

Një koment

Dërguesi dhe marrësi shkëmbejnë vlerat fillestare të dritares: në këtë shembull, madhësia e dritares është 3 segmente derisa të merret një konfirmim.

Kjo ndodh gjatë procedurës së vendosjes së lidhjes.

Dërguesi i dërgon marrësit segmentet 1, 2 dhe 3

Pas dërgimit të segmentit 3, dërguesi do të presë konfirmimin nga marrësi.

Marrësi merr segmentin 1 dhe 2, por tani ai vendos madhësinë e dritares në 2

Marrësi mund të jetë i ngadalshëm në përpunim për shumë arsye, të tilla si njësia qendrore e përpunimit (CPU) duke kërkuar në bazën e të dhënave për vlera ose duke shkarkuar skedar i madh me grafikë.

Dërguesi transmeton segmentet 3 dhe 4.

Pas dërgimit të dy segmenteve, dërguesi pret që të arrijë një konfirmim nga marrësi.

Marrësi pranon marrjen e segmenteve 3 dhe 4, por vazhdon të mbajë një madhësi dritareje prej 2.

Marrësi konfirmon marrjen e suksesshme të segmenteve të mëparshme 3 dhe 4, duke kërkuar transmetimin e segmentit 5.

MAKSIMIZO TË PËRMBAJTJES.

Algoritmi i dritares kontrollon shpejtësinë e transferimit të të dhënave. Kjo na lejon të minimizojmë hedhjen e të dhënave pasi shpenzoni para për transmetimin e të dhënave të humbura.” Kohe shtese, dhe për këtë arsye është e mundur të rritet efikasiteti.

SINKRONIZIMI GLOBAL.

Nga ana tjetër, algoritmi i dritares së mbingarkesës shkakton sinkronizimin e përgjithshëm të TCP, i cili ka një ndikim shumë negativ në efikasitet. Sinkronizimi i përgjithshëm ndodh kur të gjithë dërguesit përdorin të njëjtat algoritme dhe veprimet e dërguesve janë të njëjta. Dërguesit perceptojnë të njëjtën mbingarkesë në të njëjtën mënyrë dhe vendosin rikthimin në ne te njejten kohe. Tani, duke qenë se të gjithë dërguesit përdorin të njëjtat algoritme, ata do të vazhdojnë të transmetojnë në të njëjtin interval kohor, i cili nga ana tjetër do të çojë në bllokime të ngjashme me valë.

Ky algoritëm (algoritmi LZ77 4 Emërtuar sipas autorëve Abraham Lempel dhe Jacob Ziv. Botuar në vitin 1977.) ishte një nga të parët që përdori një fjalor. N elementet e fundit tashmë të koduar të sekuencës përdoren si fjalor. Gjatë procesit të kompresimit, fjalori i sekuencës lëviz (“rrëshqet”) përgjatë sekuencës hyrëse. Zinxhiri i elementeve në dalje është i koduar si më poshtë: pozicioni i pjesës përputhëse të zinxhirit të përpunuar të elementeve në fjalor - kompensimi (në lidhje me pozicionin aktual), gjatësia, elementi i parë pas pjesës së përputhur të zinxhirit. Gjatësia e zinxhirit të përputhjes kufizohet më lart nga numri n. Prandaj, detyra është të gjesh zinxhirin më të madh nga fjalori që përputhet me sekuencën që përpunohet. Nëse nuk ka përputhje, atëherë rregjistrohet kompensimi zero, gjatësia e njësisë dhe vetëm elementi i parë i sekuencës së pakoduar - (0, 1, e) .

Skema e kodimit e përshkruar më sipër çon në koncept dritare rrëshqitëse(dritare rrëshqitëse në anglisht), e përbërë nga dy pjesë:

  1. vijimësi e elementeve tashmë të koduar me gjatësi N - fjalor - tampon kërkimi(Bufer kërkimi në anglisht);
  2. një vijimësi e gjatësisë n nga një zinxhir elementësh për të cilët do të bëhet një përpjekje për të gjetur një përputhje - tampon pamje paraprake (Anglisht tampon look-ahead).

Në terma dritare rrëshqitëse Algoritmi i kompresimit përshkruhet si më poshtë: nëse e 1, . . . , e i është një nënsekuencë e koduar tashmë, pastaj e i-N+1 , . . . , e i është një fjalor ose buffer kërkimi, dhe e i+1 , . . . , e i+n - tampon paraprak. Në mënyrë të ngjashme, detyra është të gjendet zinxhiri më i madh i elementeve nga buferi i paraafishimit, duke filluar nga elementi e i+1, që përputhet me zinxhirin nga buferi i kërkimit - ky zinxhir mund të fillojë nga çdo element dhe të përfundojë me cilindo element, d.m.th. shkoni përtej buferit të kërkimit, duke pushtuar buferin e shikimit paraprak. Është e natyrshme të shkosh përtej dritare rrëshqitëseështë e ndaluar. Lëreni zinxhirin e përputhshëm të gjatësisë maksimale të elementeve e i-p , , të gjendet në dritaren rrëshqitëse. . . , e i+q , atëherë do të kodohet si më poshtë: (p+1, q+p+1, e i+p+q+2 ) - zhvendosja në lidhje me fillimin e tamponit të shikimit paraprak (e i+1) , gjatësia e zinxhirit të përputhur , elementi që ndjek vargun e përputhur nga buferi i shikimit paraprak. Nëse kërkimi rezulton në dy ndeshje me të njëjtën gjatësi, zgjidhet ajo që është më afër fillimit të tamponit të pamjes paraprake. Pas kësaj, dritarja rrëshqitëse zhvendoset p + q + 2 elementë përpara dhe procedura e kërkimit përsëritet.

Zgjedhja e numrave N dhe n është një problem më vete i rëndësishëm, sepse Sa më të mëdha të jenë N dhe n, aq më shumë hapësirë ​​kërkohet për të ruajtur vlerat e kompensimit dhe gjatësisë. Natyrisht, koha e funksionimit të algoritmit gjithashtu rritet me rritjen e N dhe n. Vini re se N dhe n zakonisht ndryshojnë nga një rend i madhësisë.

Le të japim një shembull të kompresimit duke përdorur këtë algoritëm. Le të kompresojmë vargun "TOBEORNOTTOBE" me parametrat N = 10 dhe n = 3:

hap dritare rrëshqitëse Maks. zinxhir i përputhur dalje
1 ""+"TOB" T 0,1, T
2 "T"+"OBE" O 0,1,O
3 "TO"+"BEO" B 0.1.B
4 "TOB"+"EOR" E 0.1.E
5 "TOBE"+"ORN" O 3,1,R
6 "TOBEOR"+"JO" N 0,1, N
7 "TOBEORN"+"OTT" O 3,1,T
8 "TOBEORNOT"+"TOBE" TOB 9.3.E

Nëse ndajmë 4 bit për ruajtjen e zhvendosjes, 2 bit për gjatësinë dhe 8 bit për elementët, atëherë gjatësia e sekuencës së koduar (pa marrë parasysh fundin e përcaktimit të sekuencës) do të jetë 4 x 8 + 2 x 8 + 8 x 8 = 112 bit, dhe origjinali do të jetë 102 bat. Në këtë rast, ne nuk e kompresuam sekuencën, por, përkundrazi, rritëm tepricën e përfaqësimit. Kjo për shkak se gjatësia e sekuencës është shumë e vogël për një algoritëm të tillë. Por, për shembull, një vizatim pema e kodit Huffman në Fig. 13.1, duke zënë 420 kilobajt hapësirë ​​në disk, pas kompresimit ka një madhësi prej rreth 310 kilobajt.

Më poshtë është pseudokodi për algoritmin e kompresimit.

// M - kufiri fiks // lexoni karakteret në mënyrë sekuenciale nga rrjedha hyrëse // në - hyrje - sekuencë e ngjeshur // n - gjatësia maksimale zinxhirë // pos - pozicioni në fjalor, len - gjatësia e zinxhirit // nelem - element prapa zinxhirit, str - zinxhir i gjetur // në - hyrje, jashtë - dalje // SlideWindow - buffer kërkimi while(!in.EOF() ) / /ndërsa ka të dhëna ( // duke kërkuar përputhjen maksimale dhe parametrat e saj SlideWindow.FindBestMatch(in, n, pos, len, nelem); // shkruani daljen: offset, gjatësia, elementi jashtë. Shkruaj(pos) ; out.Write(len ); out.Write(nelem); // lëvizni dritaren rrëshqitëse me len + 1 elemente SlideWindow.Move(in, len + 1); ) Listimi 13.2. Algoritmi i kompresimit LZ77

Dekodimi i një sekuence të ngjeshur është një dekodim i drejtpërdrejtë i kodeve të regjistruara: çdo hyrje përputhet me një zinxhir nga fjalori dhe një element të shkruar në mënyrë eksplicite, pas së cilës fjalori zhvendoset. Natyrisht, fjalori rikrijohet ndërsa funksionon algoritmi i dekodimit.

Mund të shihet se procesi i dekodimit është shumë më i thjeshtë nga pikëpamja llogaritëse.

// n - gjatësia maksimale e zinxhirit // pos - pozicioni në fjalor, len - gjatësia e zinxhirit // nelem - element prapa zinxhirit, str - zinxhiri i gjetur // në - hyrje, jashtë - dalje // Dict - fjalor while(!in. EOF()) //ndërsa ka të dhëna ( in.Read(pos); in.Read(len); in.Read(nelem); if(pos == 0) ( //i ri karakter të veçantë//hiq elementin e parë (të largët) nga fjalori Dict.Remove(1); //shto një element në fjalor Dict.Add(nelem); jashtë.Shkruaj(nelem); ) else ( //kopjoni rreshtin përkatës nga fjalori str = Dict.Get(pos, len); //hiq len + 1 elemente nga fjalori Dict.Remove(len + 1); //Shto zinxhirin Dict.Add (str) në fjalor + nelem); jashtë. Shkruaj (str + nelem); ) ) Listimi 13.3. Algoritmi

Ky algoritëm është themeluesi i një familje të tërë algoritmesh, dhe vetë në formën e tij origjinale praktikisht nuk përdoret. Përparësitë e tij përfshijnë një shkallë të mirë kompresimi në sekuenca mjaft të mëdha, dekompresim të shpejtë dhe mungesë të një patente 5 një dokument që siguron të drejtën ekskluzive për të shfrytëzuar shpikjen për një kohë të caktuar (zakonisht 15-20 vjet) te algoritmi. Disavantazhet përfshijnë shpejtësi të ngadaltë kompresimi, si dhe një raport më i ulët i kompresimit se algoritmet alternative (modifikimet e algoritmit e luftojnë këtë disavantazh). Kombinimi i algoritmeve Huffman ("Algoritmet e kompresimit të imazhit pa humbje") dhe LZ77 quhet metoda DEFLATE 6 Kjo quhet ngjeshje, dhe dekompresimi quhet INFLATE (anglisht: DEFLATE - të deflate, INFLATE - të fryj).. Metoda DEFLATE përdoret në grafik Formati PNG, si dhe në format universal Kompresimi i të dhënave ZIP.

Shtresa e transportit përdor shërbimet e ofruara nga shtresa e rrjetit:

përzgjedhja optimale e rrugës dhe shërbimet e adresimit logjik. Këto shërbime të shtresës 3 ofrojnë një lidhje nga skaji në fund midis dërguesit dhe marrësit. Ky kapitull përshkruan se si shtresa e transportit rregullon rrjedhën e informacionit të transmetuar nga një dërgues te një marrës. Shtresa e transportit ka karakteristikat e mëposhtme:

Një rrjedhë e të dhënave e shtresës së transportit është një lidhje logjike ndërmjet pikat fundore rrjete;

---------------- Mekanizmi i dritares rrëshqitëse siguron kontroll nga skaji në skaj dhe besueshmëri të lidhjes, ju lejon të gjurmoni sekuencën e numrave të paketave dhe njoftimeve;

。 për të kontrolluar të ndryshme lidhjet e rrjetit në protokollet e shtresës së katërt TCP dhe UDP dhe për të transmetuar informacion në nivelet e larta, të ashtuquajturat portet(port).

Stafi i shtresave të transportitTCP/IP

Siç sugjeron emri i saj, shtresa e transportit të grumbullit të protokollit TCP/IP është përgjegjëse për transportimin e të dhënave ndërmjet aplikacioneve në pajisjen marrëse dhe pajisjen dërguese. Njohuria se si funksionon shtresa e transportit është çelësi për një kuptim të thellë të modernes teknologjitë e rrjetit. Seksionet e mëposhtme detajojnë funksionet dhe shërbimet e një prej shtresave më të rëndësishme të modelit TCP/IP - shtresës së transportit.

Hyrje në Stackin e Shtresave të TransportitTCP/IP

Për të përshkruar të katërtin, transportin, nivelin, shpesh përdoret shprehja cilësinë e shërbimit. UDP, i diskutuar në detaje më poshtë, është një protokoll i shtresës së transportit që ofron shërbime transporti pa lidhje. Megjithatë, protokolli kryesor që vepron në këtë shtresë është TCP, i cili përdor një mekanizëm të krijimit të lidhjes. Funksionet kryesore të këtij protokolli janë transporti dhe kontrolli i besueshëm i rrjedhës së informacionit nga dërguesi te marrësi. Funksionet kryesore të shtresës së transportit përfshijnë sigurimin e kontrollit të transmetimit nga skaji në skaj, kontrollin e rrjedhës përmes një mekanizmi të dritares rrëshqitëse dhe garantimin e besueshmërisë së shpërndarjes përmes vendosjes së numrave të sekuencës dhe përdorimit të mirënjohjeve.

Për të kuptuar pse nevojitet transmetimi i besueshëm i të dhënave dhe kontrolli i rrjedhës, imagjinoni një të huaj që flet shumë shpejt. Dëgjuesi i tij ka shumë të ngjarë të detyrohet të përsërisë ndonjëherë fjalë individuale (analoge me besueshmërinë e transmetimit) dhe t'i kërkojë atij të flasë më ngadalë (analoge me rrjedhën).

Shtresa e transportit siguron mjetet për transferimin e besueshëm të të dhënave nga një nyje dërguese në një nyje marrëse. Kjo shtresë krijon një lidhje logjike ndërmjet pikave fundore të rrjetit; Për më tepër, detyrat e shtresës së transportit përfshijnë segmentimin dhe rimontimin e të dhënave të transmetuara nga të ndryshme aplikacionet shtresat e sipërme në një rrjedhë të të dhënave të një shtrese transporti. Ky transmetim siguron transferimin e të dhënave nga skaji në fund midis pikave fundore.

Rrjedha e të dhënave të shtresës së transportit është një lidhje logjike midis pikave fundore në një rrjet; Shtresa e transportit gjithashtu kontrollon nëse mund të vendoset një lidhje midis aplikacioneve. Në Fig. Figura 11.2 ilustron funksionimin e shtresës së transportit.

Shtresa e transportit ofron funksionet e mëposhtme:

    segmentimi i të dhënave të aplikacionit të nivelit të lartë;

    menaxhimi i ndërveprimit nga fundi në fund;

    transferimi i segmenteve nga një nyje fundore në tjetrën;

    kontrolli i rrjedhës duke ndryshuar madhësinë e dritares;

    sigurimi i besueshmërisë duke caktuar numra dhe duke përdorur konfirmime.

Për shtresën e transportit rrjeti i jashtëm mund të përfaqësohet si një medium i caktuar (zakonisht i përshkruar si një re) përmes të cilit paketat e të dhënave transmetohen nga dërguesi te marrësi. Ky mjedis është përgjegjës për përcaktimin se cila rrugë është optimale për një marrës të caktuar. Tashmë në këtë fazë, ju mund të kuptoni rolin e rëndësishëm që luajnë ruterat në procesin e transmetimit të të dhënave në rrjet.

Paketa e protokolleve TCP/IP përbëhet nga dy protokolle të veçantë: TCP dhe IP. Protokolli IP është një protokoll i shtresës 3 pa lidhje që mundëson transferimin efikas të të dhënave përmes një rrjeti. TCP është një protokoll i shtresës 4 dhe është një shërbim i orientuar drejt lidhjes që ofron kontroll të rrjedhës dhe për rrjedhojë besueshmëri të lartë të transmetimit. Kombinimi i këtyre dy protokolleve ju lejon të zgjidhni një gamë të gjerë detyrash të transferimit të të dhënave. Natyrisht, grupi i protokollit TCP/IP përbëhet nga shumë protokolle të tjera, por TCP dhe IP janë protokollet kryesore. Nga rruga, të gjitha Rrjeti i internetit bazohet në mënyrë specifike në grumbullin e protokollit TCP/IP.

Kontrolli i rrjedhjes

Kur shtresa e transportit TCP përcjell segmentet e të dhënave, mund të garantojë integritetin e të dhënave. Një mënyrë për të arritur këtë qëllim është kontrolli i rrjedhjes (rrjedhinkontrollin) , i cili shmang problemet që lidhen me situatat kur një nyje në njërin skaj të një lidhjeje tejmbush buferët e një stacioni në skajin tjetër. Mbingarkesa shkakton probleme serioze sepse mund të çojë në humbje të të dhënave.

Shërbimet e shtresës së transportit i lejojnë përdoruesit të kërkojnë transport të besueshëm të të dhënave midis nyjeve dërguese dhe marrëse. Për të siguruar transferim të besueshëm të të dhënave ndërmjet sistemeve partnere të komunikimit, përdoret një mekanizëm i orientuar drejt lidhjes. Transporti i besueshëm ofron funksionet e mëposhtme:

    siguron që dërguesi të marrë konfirmimin e dorëzimit të secilit segment;

    ofron ri-dërgesëçdo segment për të cilin nuk është marrë konfirmimi i dorëzimit;

    lejon që segmentet të renditen në destinacion në rendin e duhur;

    parandalon bllokimin e rrjetit dhe siguron menaxhimin e mbipopullimit nëse ndodh.

Instalimi, menaxhimi dhe përfundimi i sesionit

Në modelin e referencës OSI, aplikacione të shumta mund të përdorin njëkohësisht një lidhje të vetme transporti. Funksioni i transportit të të dhënave zbatohet segment pas segmenti. Kjo do të thotë që aplikacione të ndryshme mund të transferojnë të dhëna në bazë të hyrjes së parë, daljes së parë (FIFO). Segmentet mund të synohen për një ose marrës të ndryshëm. Ky rregull nganjëherë quhet mekanizmi i shumëfishimit të dialogut të aplikacionit të nivelit të lartë (Figura 3).

Oriz. 3. Aplikacione të ndryshme në shtresën më të lartë të modelit OSI përdorin shtresën e transportit

Një nga funksionet kryesore të shtresës së transportit është të organizojë një sesion komunikimi për të krijuar një lidhje me një sistem peer-to-peer. Për të filluar transferimin e të dhënave, aplikacionet e dërguesit dhe të marrësit informojnë ato OS rreth inicializimit të lidhjes. Njëri prej stacioneve fillon një lidhje që duhet të pranohet nga stacioni tjetër. Modulet e sistemit operativ përgjegjës për funksionimin e protokolleve komunikojnë me njëri-tjetrin duke dërguar një mesazh të veçantë dhe kontrollojnë mundësinë e transferimit të të dhënave dhe gatishmërinë e nyjeve fundore.

Pas përfundimit të procesit të sinkronizimit dhe vendosjes së lidhjes, fillon transferimi i të dhënave. Gjatë procesit të transferimit, të dy stacionet vazhdojnë të shkëmbejnë mesazhe për t'u siguruar që të dhënat e marra janë të sakta. Në Fig. Figura 4 ilustron një lidhje tipike midis një dërguesi dhe një marrësi. Mesazhi i parë i kërkesës është i nevojshëm për të sinkronizuar nyjet fundore. E dyta dhe e treta nevojiten për të konfirmuar kërkesën fillestare të sinkronizimit; ato gjithashtu sinkronizojnë parametrat e lidhjes në drejtim të kundërt. Mesazhi i fundit është konfirmim(mirënjohje), e cila përdoret për të informuar marrësin se të dyja palët janë të gatshme të krijojnë një lidhje. Pasi të vendoset lidhja, fillon transferimi i të dhënave.

Oriz. 4. Procesi i krijimit të një lidhjeje me një sistem peer-to-peer

Gjatë transferimit të të dhënave, bllokimi mund të ndodhë për dy arsye. E para është se një kompjuter i shpejtë mund të gjenerojë një rrymë të dhënash më shpejt sesa mund t'i transmetojë rrjeti. E dyta ndodh në një situatë ku shumë kompjuterë në të njëjtën kohë duhet të dërgojnë të dhëna tek një marrës. Në këtë rast, marrësi mund të përjetojë mbingarkesë, megjithëse secili dërgues individualisht nuk shkakton probleme.

Në rastet kur datagramet arrijnë shumë shpejt që nyja fundore ose porta t'i përpunojë ato, ato ruhen përkohësisht në memorie. Nëse rrjedha e të dhënave nuk zvogëlohet, nyja fundore ose porta, duke shteruar përfundimisht burimet e saj të memories, do të detyrohet të heqë të gjitha datagramet pasuese.

Për të parandaluar humbjen e të dhënave, funksioni i transportit mund t'i dërgojë dërguesit një mesazh informacioni: "Pajisja nuk është gati për të marrë". Duke vepruar si një semafor i kuq, ky mesazh tregues i sinjalizon dërguesit të ndalojë dërgimin e të dhënave. Pasi marrësi të jetë në gjendje të përpunojë përsëri të dhëna shtesë, ai dërgon një mesazh tregues transporti "pajisja gati për të marrë të dhëna", e cila është e ngjashme me një semafor jeshil. Me marrjen e një treguesi të tillë, dërguesi mund të rifillojë transmetimin e segmenteve.

Pas përfundimit të transferimit të të dhënave, dërguesi i dërgon një sinjal marrësit, i cili tregon përfundimin e transferimit. Marrësi konfirmon se lidhja është prishur, pas së cilës lidhja midis makinave përfundon.

Shtrëngim duarsh me tre hapa

Protokolli TCP përdor një algoritëm të orientuar drejt lidhjes, kështu që duhet të krijohet një lidhje logjike përpara se të transferohen të dhënat. Për të krijuar një lidhje rrjeti midis dy stacioneve të punës, është e nevojshme të sinkronizoni numrat e sekuencës së tyre fillestare (ISN - Initial Sequence Number). Sinkronizimi arrihet përmes shkëmbimit të segmenteve të specializuara që përmbajnë SYN (shkurt për ssinkronizimi) dhe numrat ISN. Modulet që mbajnë bitin SYN quhen ndonjëherë edhe mesazhe SYN. Për të zgjidhur problemin e krijimit, duhet të zgjidhni një mekanizëm të përshtatshëm për zgjedhjen e numrave ISN duke vendosur një lidhje fillestare për shkëmbimin e numrave ISN.

Sinkronizimi kërkon që secila palë të dërgojë ISN-në ​​e saj fillestare dhe të marrë konfirmimin në formën e një ACK (shkurt për mirënjohje) nga një palë tjetër në lidhje. Përveç kësaj, secila palë duhet të marrë numrin ISN të partnerit të komunikimit dhe të dërgojë një njoftim ACK për të. Sekuenca e shkëmbimit të mesazheve ndërmjet dy nyjeve të rrjetit, A dhe B, përshkruhet më poshtë.

Ky mesazh quhet njohje me tre hapa (tre- mënyrë shtrëngim duarsh) (Fig. 5).

Oriz. 5. Shtrëngim duarsh me tre hapa

1. AB SYN. Inicialja ime numër serik ISN është X, numri ACK është 0, biti SYN është vendosur, por biti ACK nuk është vendosur.

2. BNJË ACK. Numri juaj i sekuencës është X+1, numri im ISN është Y, bitet SYN dhe ACK janë vendosur.

3.APRAPA. Numri juaj i sekuencës është Y+1, numri im i sekuencës është X+1, biti ACK është vendosur dhe biti SYN nuk është vendosur.

Shtrëngimi i duarve me tre drejtime është një mekanizëm lidhjeje asinkrone që është i nevojshëm për të sinkronizuar numrat e sekuencës, pasi numra të tillë nuk varen nga ndonjë numërues global virtual në rrjet. Prandaj, në një rrjet që ekzekuton protokollin TCP, përdoren mekanizma të ndryshëm për caktimin e numrave ISN. Një prej tyre është shtrëngimi i duarve me tre hapa. Megjithatë, ky mekanizëm nuk synon vetëm të marrë një numër ISN. Duke e përdorur atë, pajisjet fundore shkëmbejnë informacion në lidhje me madhësinë e dritares së transmetimit të të dhënave, Parametri MTU dhe vonesa e transmetimit të të dhënave në rrjet. Marrësi i SYN-së së parë nuk ka asnjë mjet për të përcaktuar nëse segmenti i marrë ishte një mesazh i vjetër i shtyrë ose një mesazh i ri derisa të merret mesazhi tjetër; përjashtimi i vetëm është nëse marrësi ruan numrin e fundit të sekuencës së përdorur në lidhje (gjë që nuk është gjithmonë e mundur). Prandaj, marrësi duhet t'i kërkojë dërguesit të verifikojë një mesazh të tillë SYN.

Mekanizmi i dritares rrëshqitëse

Në formën më të përgjithshme të përcjelljes së besueshme të të dhënave të orientuar drejt lidhjes, paketat e të dhënave duhet të dorëzohen në fundin marrës në të njëjtën mënyrë në të cilën janë transmetuar. Protokolli sinjalizon një dështim nëse ndonjë paketë e të dhënave humbet, korruptohet, dyfishohet ose merret jashtë funksionit. Zgjidhja më e thjeshtë për këtë problem është përdorimi i konfirmimeve të marrësit për marrjen e secilit segment të të dhënave.

Megjithatë, nëse dërguesi detyrohet të presë për një konfirmim pas dërgimit të secilit segment, siç tregohet në Fig. 6, atëherë shpejtësia e transmetimit me këtë metodë zvogëlohet ndjeshëm. Meqenëse një interval i caktuar kohor kalon nga momenti kur dërguesi përfundon dërgimin e një pakete të dhënash deri në përfundimin e përpunimit të çdo konfirmimi të marrë, ai mund të përdoret për të transmetuar një pjesë shtesë të të dhënave. Numri i paketave të të dhënave që lejohen t'i dërgohen dërguesit pa marrë një konfirmim quhet dritare(dritare).

TCP përdor ato që quhen njohje në pritje; ato përmbajnë një numër të lidhur me oktetin që pritet më pas. Mekanizmi i dritares rrëshqitëse është vendi ku madhësitë e dritareve negociohen në mënyrë dinamike gjatë gjithë sesionit TCP. Mekanizmi i dritares rrëshqitëseështë një mekanizëm i kontrollit të rrjedhës që kërkon që marrësi të pranojë një konfirmim nga dërguesi pas transmetimit të një sasie të caktuar të të dhënave.

Oriz. 6. Madhësia e dritares është një

Për të kontrolluar rrjedhën e të dhënave të transferuara ndërmjet dy pajisjeve, TCP përdor mekanizmi i kontrollit të rrjedhës(mekanizmi i kontrollit të rrjedhës). Marrësi i raporton dërguesit se të dhënat janë marrë; marrja e një njoftimi të tillë ju lejon të vendosni madhësinë e dritares. Dritarja specifikon numrin e okteteve, bazuar në numrin aktual të konfirmimit, që një pajisje TCP është në gjendje të marrë në një kohë të caktuar.

Për shembull, me një madhësi dritareje 3, dërguesi mund t'i dërgojë marrësit tre oktete. Pas kësaj, ai duhet të presë konfirmimin nga marrësi. Nëse marrësi ka marrë tre oktete, ai duhet t'i dërgojë një konfirmim për këtë dërguesit të okteteve. Më pas dërguesi mund të dërgojë tre oktetet e ardhshme. Nëse marrësi nuk merr tre oktete, për shembull për shkak të tejmbushjes së buferit, atëherë ai nuk do të dërgojë një konfirmim. Nëse dërguesi nuk merr një konfirmim, kjo do të thotë që oktetet e fundit duhet të ritransmetohen dhe në të njëjtën kohë të zvogëlohet shpejtësia e transmetimit.

Madhësia e dritares TCP mund të ndryshojë kur të dhënat rrjedhin midis dy pajisjeve të rrjetit. Çdo konfirmim i dërguar nga marrësi përmban informacion në lidhje me numrin e bajteve që marrësi është në gjendje të marrë. TCP përdor atë që njihet si një dritare e kontrollit të mbingarkesës, e cila zakonisht ka të njëjtën madhësi me dritaren e pajisjes marrëse, por përgjysmohet në madhësi nëse një segment i të dhënave humbet (për shembull, për shkak të mbingarkesës së rrjetit). Ky mekanizëm lejon që madhësia e dritares të zvogëlohet ose rritet sipas nevojës gjatë menaxhimit të buferit të pajisjes dhe përpunimit të rrjedhës së të dhënave. Madhësia më e madhe e dritares lejon transmetimin e njëkohshëm sasi e madhe oktetë.

Kur dërguesi transmeton tre okteta, ai kalon për të pritur një sinjal ACK për katër oktetë. Nëse marrësi është në gjendje të përpunojë një bllok të dhënash me dy oktet, ai e hedh oktetin e tretë dhe e cakton atë si bllokun e ardhshëm të pritur të të dhënave. Kjo specifikon madhësinë e dritares së re, e cila është e barabartë me dy. Dërguesi transmeton dy oktetet e ardhshme, por madhësia e dritares është ende tre (duke supozuar se pajisja ende mund të trajtojë tre oktetë menjëherë). Marrësi kërkon oktetin numër 5 dhe vendos madhësi të re dritare të barabarta me dy.

Konfirmimet

Një mekanizëm i besueshëm shpërndarjeje siguron që një rrjedhë e të dhënave e dërguar nga një stacion do të dorëzohet mbi lidhjen e të dhënave të një tjetri pa dyfishim ose humbje të të dhënave. Njohja pozitive me ritransmetim është një nga teknikat që garanton shpërndarje të besueshme të rrjedhave të të dhënave. Njohja pozitive kërkon që marrësi të komunikojë me dërguesin duke dërguar një mesazh njohjeje pas marrjes së të dhënave. Dërguesi regjistron çdo paketë që dërgon dhe pret për konfirmim përpara se të dërgojë paketën tjetër të të dhënave. Në momentin që segmenti përcillet, dërguesi gjithashtu nis një kohëmatës dhe ritransmeton bllokun e të dhënave nëse vendosur me kohëmatës koha skadon përpara se të merret konfirmimi.

Në Fig. Figura 7 tregon një dërgues që transmeton paketat 1, 2 dhe 3. Marrësi i pranon paketat duke kërkuar paketën 4. Dërguesi, pasi ka marrë një konfirmim, dërgon paketat 4, 5 dhe 6. Nëse paketa 5 nuk i dorëzohet marrësit , ai dërgon një konfirmim duke kërkuar dërgimin e një pakete tjetër 5. Dërguesi ridërgon paketën 5 dhe duhet të marrë një konfirmim të duhur për të vazhduar dërgimin e paketës numër 7.

Protokolli TCP zbaton një sekuencë segmentesh të ndjekura nga një konfirmim. Secilit datagram i caktohet një numër përpara transmetimit (Fig. 8). Pasi marrësi të ketë marrë të gjitha datagramet, ato mblidhen në një mesazh të plotë. Përgjegjësia e protokollit TCP është të rikuperojë të dhënat e dëmtuara, të humbura, të dyfishuara ose jashtë rendit që janë transmetuar në internet. Mekanizmi i rikuperimit funksionon duke caktuar një numër sekuence për çdo oktet të transmetuar, pas marrjes së të cilit marrësi duhet të dërgojë një konfirmim (ACK). Nëse nuk merret konfirmim brenda intervalit kohor të pritjes, të dhënat ritransmetohen nga dërguesi. Pasi oktetet t'i dorëzohen marrësit, numrat e sekuencës së tyre përdoren për të ribashkuar mesazhin nga fragmentet dhe për të eliminuar dublikatat. Të dhënat e dëmtuara rikuperohen duke përdorur një shumë kontrolli që i shtohet çdo segmenti të transmetuar. Shuma e kontrollit verifikohet nga marrësi dhe nëse nuk përputhet, të dhënat e korruptuara hidhen.

Oriz. 7. Madhësia e dritares është tre

Oriz. 8. Numrat e renditjes dhe konfirmimet

ProtokolliTCP

TCP(Protokolli i kontrollit të transmisionit - protokolli i kontrollit të transmetimit) është një protokoll i shtresës së transportit të orientuar drejt lidhjes dhe ofron transmetim të besueshëm të të dhënave të plotë dupleks. Protokolli TCP është pjesë e grumbullit të protokollit TCP/IP. Në një mjedis të orientuar drejt lidhjes, duhet të krijohet një lidhje midis dy kompjuterëve për të filluar transferimin e të dhënave. Protokolli TCP është përgjegjës për segmentimin e mesazheve në pako, ribashkimin e tyre tek marrësi dhe ritransmetimin e çdo pjese të të dhënave nëse ato nuk janë marrë. Protokolli është gjithashtu i aftë të krijojë kanalet virtuale ndërmjet aplikacioneve të përdoruesve fundorë.

Shërbimet dhe protokollet e nivelit të lartë që përdorin mekanizmat TCP:

    FTP (Protokolli i Transferimit të Skedarit);

    HTTP (Protokolli i Transferimit të Hipertekstit);

    SMTP (Simple Mail Transfer Protocol - protokoll i thjeshtë i postës elektronike);

Fushat e segmentit TCP të paraqitura në rrëshqitje janë përshkruar më poshtë.

Porta e dërguesit - numri i portit të thirrjes.

Porta e marrësit - i quajtur numri i portit.

Numër serik - numri i përdorur për të rregulluar të dhënat hyrëse në sekuencën e duhur.

Numri i konfirmimit- numri i oktetit të ardhshëm TCP të pritur.

HLEN numri i fjalëve 32!bit në kokë.

Fusha e rezervuar- të gjitha bitet janë vendosur në 0.

Copa kodi- funksionet e shërbimit (për shembull, konfigurimi dhe përfundimi i një sesioni).

Dritare- numri i okteteve që dërguesi është i gatshëm të pranojë.

Kontrollo shumën- llogaritur shuma e kontrollit header dhe fushat e të dhënave.

Treguesi urgjent i të dhënave- tregon fundin e të dhënave urgjente.

Opsione- aktualisht është përcaktuar një parametër: madhësia maksimale Segmenti TCP.

Të dhënat- Të dhënat e protokollit të nivelit më të lartë.

ProtokolliPZHU

UDP (Përdoruesi Datagram Protokolli- Protokolli i transferimit të të dhënave të përdoruesit), formati i segmentit i të cilit tregohet në rrëshqitje, është një protokoll transporti pa lidhje në grumbullin e protokollit TCP/IP. UDP është një protokoll i thjeshtë që shkëmben datagrame pa konfirmim dhe pa garanci për dorëzim. Thjeshtësia e protokollit bëhet e dukshme kur krahasohen formatet e segmentit të protokolleve UDP dhe TCP. Kur përdorni protokollin UDP, trajtimi i gabimeve dhe ritransmetimi i të dhënave duhet të trajtohen nga një protokoll i nivelit më të lartë. Për shembull, nëse transferimi ndërpritet gjatë dërgimit të të dhënave përmes TFTP, vetëm një operator njerëzor mund të ri-shkarkojë informacionin.

Lista e mëposhtme tregon fushat e segmentit UDP që shfaqet në rrëshqitje

    Porta e dërguesit - numri i portit të thirrjes.

    Porta e marrësit - i quajtur numri i portit.

    Gjatësia- numri i bajteve, duke përfshirë kokën dhe të dhënat.

    Kontrollo shumën- kontrolli i llogaritur i fushave të kokës dhe të dhënave.

    Të dhënat- Të dhënat e protokollit të nivelit më të lartë.

Protokolli UDP nuk përdor një mekanizëm të dritares rrëshqitëse, kështu që besueshmëria e transmetimit të të dhënave duhet të sigurohet protokollet e shtresave të aplikimit(protokolli i shtresës së aplikimit). UDP është krijuar për aplikacione që nuk kanë nevojë të lidhin segmentet e renditura së bashku.

Protokolli UDP përdoret nga shërbimet dhe protokollet e mëposhtme të nivelit të lartë:

    TFTP (Trivial File Transfer Protocol - protokolli më i thjeshtë transferimi i skedarëve);

    SNMP (Simple Network Management Protocol - protokoll i thjeshtë i menaxhimit të rrjetit);

    DHCP (Dynamic Host Configuration Protocol - dynamic Host Configuration Protocol);

    DNS (Sistemi i emrave të domenit - shërbimi i emrit të domenit).

Numrat e portave të protokollitTCPDhePZHU

Për të transferuar informacion në nivelet e sipërme si protokollin TCP ashtu edhe Protokolli UDP përdorni numrin e portit ose të ashtuquajturin fole. Numrat e portave përdoren për të gjurmuar ndërveprimet e ndryshme që ndodhin njëkohësisht në rrjet.

Zhvilluesit e softuerit të aplikacioneve kanë rënë dakord të përdorin numrat e rezervuar të portit të caktuar nga Autoriteti i Numrave të Caktuar në Internet (IANA). Për shembull, çdo shkëmbim që përfshin transferimin e të dhënave duke përdorur protokollin FTP duhet të përdorë portat standarde 20 (për të dhënat) dhe 21 (për kontroll). Komunikimeve në rrjet që nuk përfshijnë aplikacione që kanë një numër porti të njohur, u caktohen numra portash në mënyrë rastësore, por zgjidhen nga një gamë specifike vlerash mbi 1023. Disa porte janë të rezervuara në Protokollet TCP dhe PZHU. Megjithëse disa porte janë të rezervuara në TCP dhe UDP, aplikacionet mund të mos jenë të lidhura me këto numra.

Siç tregohet në rrëshqitje, për të zgjedhur aplikacionin përkatës sistemi fundor përdor numrin e portit. Numri i portit burimor është zakonisht një numër më i madh se 1023, i cili caktohet në mënyrë dinamike nga nyja dërguese. Për shembull, një nyje përpiqet të lidhet me një nyje tjetër nëpërmjet FTP duke dërguar pako që specifikojnë numrin e portit TCP të marrësit 21 (FTP) dhe gjeneron në mënyrë dinamike një numër porti burimor prej 1028. Ky çift portash (dërguesi dhe marrësi) përcakton unike të ndërveprimit ndërmjet dy nyjeve . Nëse e njëjta nyje fillon një lidhje FTP me një nyje të tretë, porta e destinacionit mbetet e vendosur në 21, por porta e dërguesit zgjidhet të jetë e ndryshme (për shembull, 1030) për të ndarë dy sesionet e komunikimit.

Artikujt më të mirë mbi këtë temë