TCP pouzdanost transport
Svi smo upoznati s TCP protokolom kao pouzdanim protokolom transporta, ali kako to osigurava pouzdanost transporta?
Da bi se postigao pouzdan prijenos, potrebno je razmotriti mnoge čimbenike, poput korupcije podataka, gubitka, umnožavanja i krhotina bez narudžbe. Ako se ovi problemi ne mogu riješiti, pouzdan prijenos se ne može postići.
Stoga TCP koristi mehanizme kao što su broj niza, odgovor potvrde, kontrola ponovnog preispitivanja, upravljanje vezama i kontrola prozora kako bi se postigao pouzdan prijenos.
U ovom ćemo se radu usredotočiti na klizni prozor, kontrolu protoka i kontrolu zagušenja TCP -a. Mehanizam ponovnog slanja pokriven je odvojeno u sljedećem odjeljku.
Kontrola mrežnog protoka
Mrežna kontrola protoka ili znati kao kontrola mrežnog prometa zapravo je manifestacija suptilnog odnosa između proizvođača i potrošača. Vjerojatno ste naišli na ovaj scenarij na poslu ili u intervjuima. Ako kapacitet proizvođača da proizvodi uvelike premašuje sposobnost potrošača da konzumira, uzrokovat će da red raste na neodređeno vrijeme. U ozbiljnijem slučaju, možda znate da kada se poruke RabbitMQ previše gomilaju, to može uzrokovati degradaciju performansi cijelog MQ poslužitelja. Isto vrijedi i za TCP; Ako ostanu neprovjereni, previše će poruka biti stavljeno u mrežu, a potrošači će premašiti svoj kapacitet, dok će proizvođači i dalje slati duplicirane poruke, što će uvelike utjecati na performanse mreže.
Da bi se riješio ovog fenomena, TCP pruža mehanizam za pošiljatelja za kontrolu količine podataka poslanih na temelju stvarnog prijemnog kapaciteta prijemnika, koji je poznat kao kontrola protoka. Prijemnik održava prozor za primanje, dok pošiljatelj održava prozor za slanje. Treba napomenuti da su ti prozori samo za jednu TCP vezu i da nisu sve veze dijele prozor.
TCP pruža kontrolu protoka pomoću varijable za prozor prijema. Prozor prijema daje pošiljatelju naznaku koliko je prostora za predmemoriju još uvijek dostupan. Pošiljatelj kontrolira iznos podataka poslanih u skladu s stvarnim kapacitetom prihvaćanja prijemnika.
Domaćin prijemnika obavještava pošiljatelja o veličini podataka koje može primiti, a pošiljatelj šalje do tog ograničenja. Ova granica je veličina prozora, sjećate se zaglavlja TCP -a? Postoji polje prozora prijema koje se koristi za označavanje broja bajtova koje je prijemnik u stanju ili voljan primiti.
Voditelj pošiljatelja povremeno će slati paket sonde prozora, koji se koristi za otkrivanje je li domaćin prijemnika još uvijek u mogućnosti prihvatiti podatke. Kad je međuspremnik prijemnika u opasnosti od prelijevanja, veličina prozora je postavljena na manju vrijednost kako bi se uputio pošiljatelja da kontrolira količinu poslanih podataka.
Evo dijagrama upravljanja mrežnim protokom:
Kontrola mrežnih zagušenja
Prije uvođenja kontrole zagušenja, moramo shvatiti da pored prozora za primanje i prozora za slanje, postoji i prozor zagušenja, koji se uglavnom koristi za rješavanje problema po kojoj brzini pošiljatelj započinje slanje podataka u prozor za primanje. Stoga, prozor zagušenja održava i pošiljatelj TCP -a. Potreban nam je algoritam da bismo odlučili koliko je podataka prikladno slati, jer slanje premalo ili previše podataka nije idealno, dakle koncept prozora zagušenja.
U prethodnoj kontroli protoka mreže, ono što smo izbjegli bilo je pošiljatelj koji je podacima ispunjavao predmemoriju prijemnika, ali nismo znali što se događa u mreži. Obično su računalne mreže u zajedničkom okruženju. Kao rezultat, može doći do zagušenja mreže zbog komunikacije između ostalih domaćina.
Kad se mreža zaguši, ako se i dalje šalje veliki broj paketa, može uzrokovati probleme poput kašnjenja i gubitka paketa. U ovom trenutku, TCP će prenositi podatke, ali ponovni prijenos će povećati teret na mreži, što će rezultirati većim kašnjenjima i većim gubicima paketa. To može ući u začarani ciklus i nastaviti sve veće.
Dakle, TCP ne može zanemariti ono što se događa na mreži. Kad je mreža zagušena, TCP se žrtvuje smanjujući količinu podataka koje šalje.
Stoga se predlaže kontrola zagušenja koja ima za cilj izbjegavati popunjavanje cijele mreže podacima pošiljatelja. Da bi regulirao količinu podataka koji bi pošiljatelj trebao poslati, TCP definira koncept nazvan prozor zagušenja. Algoritam za kontrolu zagušenja prilagodit će veličinu prozora zagušenja prema stupnju zagušenja mreže, tako da kontrolira količinu podataka koje je pošiljatelj poslao.
Što je prozor zagušenja? Kakve to veze ima s prozorom za slanje?
Prozor zagušenja je državna varijabla koju održava pošiljatelj koja određuje količinu podataka koje pošiljatelj može poslati. Prozor zagušenja dinamički se mijenja prema razini zagušenja mreže.
Prozor za slanje dogovoreno je na veličini prozora između pošiljatelja i prijemnika koji ukazuje na količinu podataka koje prijemnik može primiti. Prozor zagušenja i prozor za slanje su povezani; Prozor za slanje obično je jednak minimumu zagušenja i primanja prozora, odnosno SWND = min (CWND, RWND).
Prozor zagušenja CWND se mijenja na sljedeći način:
Ako u mreži nema zagušenja, tj. Ne događa se vremensko ograničenje ponovnog prijenosa, prozor zagušenja se povećava.
Ako u mreži dođe do zagušenja, prozor zagušenja smanjuje se.
Pošiljatelj određuje je li mreža zagušena promatranjem je li ACK -ov paket priznanja primljen u određeno vrijeme. Ako pošiljatelj u određenom vremenu ne primi paket priznanja ACK -a, smatra se da je mreža zagušena.
Pored prozora zagušenja, vrijeme je za raspravu o algoritmu za kontrolu zagušenja TCP -a. Algoritam za kontrolu zagušenja TCP sastoji se od tri glavna dijela:
Spori početak:U početku je prozor zagušenja CWND -a relativno mali, a pošiljatelj povećava prozor zagušenja eksponencijalno kako bi se brzo prilagodio kapacitetu mreže.
Izbjegavanje zagušenja:Nakon što prozor zagušenja premaši određeni prag, pošiljatelj povećava prozor zagušenja na linearni način kako bi usporio brzinu rasta prozora zagušenja i izbjegavanje preopterećenja mreže.
Brzi oporavak:Ako se dogodi zagušenje, pošiljatelj prepolovi prozor zagušenja i ulazi u stanje brzog oporavka kako bi odredio mjesto oporavka mreže putem primljenih duplikata ACKS -a, a zatim nastavlja povećavati prozor zagušenja.
Spori početak
Kada se uspostavi TCP veza, prozor zagušenja CWND je u početku postavljen na minimalnu vrijednost MSS (maksimalne veličine segmenta). Na ovaj način, početna stopa slanja odnosi se na MSS/RTT bajte/sekundu. Stvarna dostupna širina pojasa obično je mnogo veća od MSS/RTT, tako da TCP želi pronaći optimalnu stopu slanja, što se može postići pomoću sporog starta.
U postupku sporog pokretanja, vrijednost prozora zagušenja CWND će se inicijalizirati na 1 MSS, a svaki put kada se priznaje segment paketa, vrijednost CWND-a povećat će se za jedan MSS, to jest, vrijednost CWND-a postat će 2 MSS. Nakon toga, vrijednost CWND -a udvostručuje se za svaki uspješan prijenos segmenta paketa i tako dalje. Specifični postupak rasta prikazan je na sljedećoj slici.
Međutim, stopa slanja ne može uvijek rasti; Rast mora završiti nekad. Dakle, kada se povećava stopa slanja? Sporo-start obično završava porast stope slanja na jedan od nekoliko načina:
Prvi način je slučaj gubitka paketa tijekom postupka slanja sporog starta. Kada se dogodi gubitak paketa, TCP postavlja prozor zagušenja pošiljatelja CWND na 1 i ponovno pokreće postupak sporog pokretanja. U ovom se trenutku uvodi koncept SSTHRESH praga sporog starta, čija je početna vrijednost polovica vrijednosti CWND -a koja stvara gubitak paketa. To jest, kada se otkrije zagušenje, vrijednost SSTHRESH je polovica vrijednosti prozora.
Drugi način je izravno korelacija s vrijednošću SSTHRESH SPERSH. Budući da je vrijednost SSTHRESH polovica vrijednosti prozora kada se otkrije zagušenje, gubitak paketa može se dogoditi prilikom svakog udvostručenja kada je CWND veći od SSTHRESH. Stoga je najbolje postaviti CWND na SSTHRESH, što će uzrokovati da se TCP prebaci na način upravljanja zagušenja i završi sporo pokretanje.
Posljednji način koji sporo pokretanje može završiti je ako se otkriju tri suvišne ACK -a, TCP izvodi brz ponovni prijenos i ulazi u stanje oporavka. (Ako nije jasno zašto postoje tri ACK paketa, bit će objašnjeno odvojeno u mehanizmu ponovnog slanja.)
Izbjegavanje zagušenja
Kad TCP uđe u stanje kontrole zagušenja, CWND je postavljen na polovicu praga zagušenja. To znači da se vrijednost CWND -a ne može udvostručiti svaki put kada se primi segment paketa. Umjesto toga, usvojen je relativno konzervativni pristup u kojem se vrijednost CWND povećava za samo jedan MSS (maksimalna duljina segmenta paketa) nakon što je svaki prijenos dovršen. Na primjer, čak i ako se priznaju 10 segmenata paketa, vrijednost CWND -a će se povećavati samo za jedan MSS. Ovo je linearni model rasta, a također ima gornju granicu rasta. Kada se dogodi gubitak paketa, vrijednost CWND -a mijenja se u MSS, a vrijednost SSThresh -a postavljena je na polovicu CWND -a. Ili će također zaustaviti rast MSS -a kada se primi 3 suvišna ACK odgovora. Ako su tri suvišne ACK -a još uvijek primljene nakon prepolovanja vrijednosti CWND -a, vrijednost SSTHRESH bilježi se kao polovina vrijednosti CWND -a i unosi se stanje brzog oporavka.
Brzi oporavak
U stanju brzog oporavka, vrijednost prozora zagušenja CWND povećava se za jedan MSS za svaki primljeni suvišni ACK, odnosno ACK koji ne stiže u nizu. Ovo će se koristiti segmentima paketa koji su uspješno preneseni u mreži kako bi se poboljšala učinkovitost prijenosa što je više moguće.
Kad stigne ACK iz segmenta izgubljenog paketa, TCP smanjuje vrijednost CWND -a i zatim ulazi u stanje izbjegavanja zagušenja. Ovo je kontrolirati veličinu prozora zagušenja i izbjegavanje daljnjeg povećanja zagušenja mreže.
Ako se vremensko ograničenje pojavi nakon stanja kontrole zagušenja, mrežno stanje postaje ozbiljnije i TCP migrira iz stanja izbjegavanja zagušenja u stanje sporog pokretanja. U ovom slučaju, vrijednost prozora zagušenja CWND postavlja se na 1 MSS, maksimalna duljina segmenta paketa i vrijednost SSTHRESH praga sporog pokretanja postavljena je na polovicu CWND-a. Svrha toga je ponovno povećati veličinu prozora zagušenja nakon što se mreža oporavi kako bi se uravnotežila brzina prijenosa i stupanj zagušenja mreže.
Sažetak
Kao pouzdan transportni protokol, TCP implementira pouzdan transport po broju niza, potvrdom, kontrolom ponovnog slanja, upravljanjem vezama i kontrolom prozora. Među njima, mehanizam za kontrolu protoka kontrolira količinu podataka koje je pošiljatelj poslao u skladu s stvarnom prijemnom kapacitetom prijemnika, što izbjegava probleme zagušenja mreže i degradacije performansi. Mehanizam za kontrolu zagušenja izbjegava pojavu zagušenja mreže podešavanjem količine podataka koje je poslao pošiljatelj. Koncepti prozora zagušenja i prozor za slanje povezani su jedni s drugima, a količina podataka kod pošiljatelja kontrolira se dinamičkim podešavanjem veličine prozora zagušenja. Polako početak, izbjegavanje zagušenja i brzi oporavak tri su glavna dijela algoritma za kontrolu zagušenja TCP -a, koji prilagođavaju veličinu prozora zagušenja kroz različite strategije kako bi se prilagodili kapacitetu i stupnju zagušenja mreže.
U sljedećem ćemo odjeljku detaljno ispitati TCP -ov mehanizam ponovnog prijenosa. Mehanizam ponovnog slanja važan je dio TCP -a za postizanje pouzdanog prijenosa. Osigurava pouzdani prijenos podataka ponovnim prelaskom izgubljenih, oštećenih ili odgođenih podataka. Načelo provedbe i strategija mehanizma ponovnog slanja uvedet će se i detaljno analizirati u sljedećem odjeljku. Pratite!
Post Vrijeme: veljače-24-2025