Transport spolehlivosti TCP
Všichni jsme obeznámeni s protokolem TCP jako spolehlivým transportním protokolem, ale jak zajišťuje spolehlivost transportu?
K dosažení spolehlivého přenosu je třeba zvážit mnoho faktorů, jako je korupce dat, ztráta, duplikace a střepy mimo řádu. Pokud tyto problémy nelze vyřešit, nelze dosáhnout spolehlivého přenosu.
Proto TCP používá mechanismy, jako je číslo sekvence, odpověď potvrzení, odesílání kontroly, správa připojení a řízení oken, aby se dosáhlo spolehlivého přenosu.
V tomto článku se zaměříme na posuvné okno, řízení toku a kontrolu přetížení TCP. Mechanismus opakovaného přenosu je v následující části pokryt samostatně.
Řízení toku sítě
Řízení toku sítě nebo známé, protože řízení síťového provozu je ve skutečnosti projevem jemného vztahu mezi výrobci a spotřebiteli. Pravděpodobně jste na tomto scénáři narazili hodně v práci nebo v rozhovorech. Pokud schopnost výrobce produkovat výrazně převyšuje schopnost spotřebitele konzumovat, způsobí to, že fronta roste na neurčito. Ve vážnějším případě možná víte, že když zprávy RabbitMQ příliš hromadí, může to způsobit degradaci výkonu celého serveru MQ. Totéž platí pro TCP; Pokud bude do sítě vloženo příliš mnoho zpráv, bude do sítě vloženo příliš mnoho zpráv a spotřebitelé překročí jejich kapacitu, zatímco výrobci budou i nadále odesílat duplicitní zprávy, což výrazně ovlivní výkon sítě.
Pro řešení tohoto jevu poskytuje TCP mechanismus pro odesílatele, který ovládá množství údajů zaslaných na základě skutečné příjmové kapacity přijímače, který je známý jako kontrola toku. Přijímač udržuje okno přijímání, zatímco odesílatel udržuje okno Odeslání. Je třeba poznamenat, že tato okna jsou pouze pro jedno připojení TCP a ne všechna připojení sdílejí okno.
TCP poskytuje řízení toku pomocí proměnné pro přijímací okno. Okno přijímání dává odesílateli indikaci toho, kolik prostoru mezipaměti je stále k dispozici. Odesílatel řídí množství údajů odeslaných podle skutečné akceptační kapacity přijímače.
Hostitel přijímače upozorňuje odesílatele velikosti dat, která může obdržet, a odesílatel odešle na tento limit. Tento limit je velikost okna, pamatujete si záhlaví TCP? Existuje pole přijímání okna, které se používá k označení počtu bajtů, které je přijímač schopen nebo ochotný přijímat.
Hostitel odesílatele pravidelně odešle paket sondy oken, který se používá k detekci, zda hostitel přijímače je stále schopen přijímat data. Když je vyrovnávací paměť přijímače v nebezpečí přetékání, velikost okna je nastavena na menší hodnotu, aby pokyn odesílateli ovládal množství odeslaných dat.
Zde je diagram řízení toku sítě:
Řízení přetížení sítě
Před zavedením kontroly přetížení musíme pochopit, že kromě okna přijímání a okna odesílání existuje také okno přetížení, které se používá hlavně k vyřešení problému, jaké rychlosti odesílatel začne odesílat data do okna přijímání. Okno pro přetížení je proto také udržováno odesílatelem TCP. Potřebujeme algoritmus, abychom rozhodli, kolik dat je vhodné odeslat, protože odeslání příliš málo nebo příliš mnoho dat není ideální, a proto koncept okna přetížení.
V předchozím řízení toku sítě jsme se vyhnuli tomu, aby odesílatel vyplňoval mezipaměť přijímače daty, ale nevěděli jsme, co se děje v síti. Obvykle jsou počítačové sítě ve sdíleném prostředí. V důsledku toho může dojít k přetížení sítě kvůli komunikaci mezi jinými hostiteli.
Pokud je síť přetížena, pokud se bude i nadále odesílat velké množství paketů, může to způsobit problémy, jako je zpoždění a ztráta paketů. V tomto okamžiku TCP přesahuje data, ale retransmise zvýší zátěž v síti, což povede k většímu zpoždění a další ztráty paketů. To se může dostat do začarovaného cyklu a stále se zvětšit.
TCP tedy nemůže ignorovat, co se děje v síti. Když je síť přetížena, TCP se obětuje snížením množství dat, která odesílá.
Proto je navržena kontrola přetížení, jehož cílem je zabránit naplnění celé sítě daty od odesílatele. Pro regulaci množství dat, které by měl odesílat odesílat, TCP definuje koncept nazývaný okno přetížení. Algoritmus řízení přetížení upraví velikost okna přetížení podle stupně přetížení sítě, aby se ovládalo množství dat odeslaných odesílatelem.
Co je to okno přetížení? Co to má společného s oknem odesílání?
Okno pro přetížení je proměnná stavové promocí zadržená odesílatelem, která určuje množství dat, které může odesílat odesílat. Okno přetížení se dynamicky mění podle úrovně přetížení sítě.
Okno Odesílání je dohodnutá velikost okna mezi odesílatelem a přijímačem, který označuje množství dat, které přijímač může obdržet. Okno přetížení a okno odesílání jsou příbuzné; Odesílací okno se obvykle rovná minimu přetížení a přijímání oken, tj. SWND = min (CWND, RWND).
Okno přetížení CWND se mění takto:
Pokud v síti nedochází k přetížení, tj. Nedostane se žádný časový limit přenosu, okno přetížení se zvyšuje.
Pokud v síti dojde k přetížení, sníží se okno přetížení.
Odesílatel určuje, zda je síť přetížena pozorováním, zda je ACK potvrzovací paket přijat ve stanoveném čase. Pokud odesílatel neobdrží balíček potvrzení ACK ve stanoveném čase, má se za to, že síť je přetížena.
Kromě okna přetížení je čas diskutovat o algoritmu kontroly přetížení TCP. Algoritmus řízení přetížení TCP se skládá ze tří hlavních částí:
Pomalý start:Okno CWND je zpočátku relativně malé a odesílatel exponenciálně zvyšuje okno přetížení, aby se rychle přizpůsobil kapacitě sítě.
Vyhýbání se přetížení:Poté, co okno přetížení překročí určitý prahová hodnota, odesílatel zvětšuje okno přetížení lineárním způsobem, aby zpomalil rychlost růstu okna přetížení a zabránil přetížení sítě.
Rychlé zotavení:Pokud dojde k přetížení, odesílatel poloviny okna přetížení a vstoupí do stavu rychlého zotavení, aby určil umístění obnovy sítě prostřednictvím přijatých duplicitních ACK a poté pokračuje ve zvyšování okna přetížení.
Pomalý start
Když je vytvořeno připojení TCP, okno přetížení CWND je původně nastaveno na minimální hodnotu MSS (maximální velikost segmentu). Tímto způsobem je počáteční sazba odesílání o MSS/RTT bytes/sekundu. Skutečná dostupná šířka pásma je obvykle mnohem větší než MSS/RTT, takže TCP chce najít optimální rychlost odesílání, které lze dosáhnout pomocí pomalého startu.
V procesu s pomalým startem bude hodnota okna přetížení CWND inicializována na 1 mss a pokaždé, když bude vysílaný segment paketu potvrzen, hodnota CWND bude zvýšena o jeden MSS, tj. Hodnota CWND se stane 2 ms. Poté se hodnota CWND zdvojnásobí pro každý úspěšný přenos segmentu paketů atd. Specifický růstový proces je znázorněn na následujícím obrázku.
Míra odesílání však nemůže vždy růst; Růst musí někdy skončit. Kdy tedy končí míra odesílání? Pomalý start obvykle končí zvýšení míry odesílání jedním z několika způsobů:
Prvním způsobem je případ ztráty paketů během procesu odesílání pomalého startu. Když dojde ke ztrátě paketu, TCP nastaví okno přetížení odesílatele CWND na 1 a restartuje proces pomalého startu. V tomto okamžiku je zavedena koncept prahového prahu SSTHRESH s pomalým startem, jehož počáteční hodnota je polovina hodnoty CWND, která generuje ztrátu paketů. To znamená, že když je detekováno přetížení, hodnota SSTHRESH je polovinou hodnoty okna.
Druhým způsobem je přímo korelovat s hodnotou prahového prahu SSTHRESH. Protože hodnota SSTHRESH je polovinou hodnoty okna, když je detekována přetížení, může dojít ke ztrátě paketu s každým zdvojnásobením, když je CWND větší než SSTHRESH. Proto je nejlepší nastavit CWND na SSTHRESH, což způsobí, že TCP přepne na režim řízení přetížení a skončí pomalý start.
Posledním způsobem, jakým může být zpomalený start, je, pokud jsou detekovány tři redundantní ACK, TCP provádí rychlý opakovaný přenos a vstupuje do stavu obnovy. (Pokud není jasné, proč existují tři pakety ACK, bude to vysvětleno samostatně v mechanismu opakovaného přenosu.)
Vyhýbání se přetížení
Když TCP vstoupí do stavu kontroly přetížení, CWND je nastavena na polovinu prahu přetížení SSTHRESH. To znamená, že hodnotu CWND nelze zdvojnásobit pokaždé, když je přijat segment paketů. Místo toho je přijat relativně konzervativní přístup, ve kterém je hodnota CWND zvýšena pouze o jednu MSS (maximální délka segmentu paketu) po dokončení každého přenosu. Například, i když je potvrzeno 10 segmentů paketů, hodnota CWND se zvýší pouze o jednu MSS. Jedná se o model lineárního růstu a má také horní hranici růstu. Když dojde ke ztrátě paketu, hodnota CWND se změní na MSS a hodnota SSTHRESH je nastavena na polovinu CWND. Nebo to také zastaví růst MSS, když jsou přijata 3 redundantní odpovědi ACK. Pokud jsou po polovině na polovinu CWND stále přijaty tři redundantní ACK, je hodnota SSTHRESH zaznamenána jako polovina hodnoty CWND a zadána stav rychlého zotavení.
Rychlé zotavení
Ve stavu rychlého zotavení je hodnota okna přetížení CWND zvýšena o jeden MSS pro každý přijatý redundantní ACK, tj. ACK, která nepřichází postupně. To má využít segmenty paketů, které byly v síti úspěšně přenášeny, aby se co nejvíce zlepšila účinnost přenosu.
Když dorazí ack segmentu ztracených paketů, TCP snižuje hodnotu CWND a poté vstoupí do stavu vyhýbání se přetížení. Tím je ovládána velikost okna přetížení a zabrání dalšímu zvýšení přetížení sítě.
Pokud dojde k časovému limitu po stavu kontroly přetížení, stav sítě se stává vážnějším a TCP migruje ze stavu vyhýbání se přetížení do stavu pomalého startu. V tomto případě je hodnota okna přetížení CWND nastavena na 1 msS, maximální délka segmentu paketu a hodnota prahového prahu SSTHRESH na pomalý start je nastavena na polovinu CWND. Účelem toho je opětovně zvětšit velikost okna přetížení poté, co se síť zotaví, aby se vyrovnala rychlost přenosu a stupeň přetížení sítě.
Shrnutí
Jako spolehlivý transportní protokol implementuje TCP spolehlivou transport podle čísla sekvence, potvrzení, ovládání přenosu, správu připojení a řízení oken. Mezi nimi mechanismus řízení toku řídí množství dat odeslaných odesílatelem podle skutečné přijímací kapacity přijímače, což zabrání problémům s přetížením sítě a zhoršení výkonu. Mechanismus řízení přetížení zabraňuje výskytu přetížení sítě úpravou množství dat odeslaných odesílatelem. Koncepty okna přetížení a odesílání okna jsou vzájemně spojeny a množství dat v odesílateli je řízeno dynamickou nastavením velikosti okna přetížení. Pomalý start, vyhýbání se přetížení a rychlé zotavení jsou tři hlavní části algoritmu pro kontrolu přetížení TCP, které upravují velikost okna přetížení různými strategiemi, aby se přizpůsobily kapacitě a stupni přetížení sítě.
V další části podrobně prozkoumáme mechanismus TCP opakovaného přenosu. Mechanismus opakovaného přenosu je důležitou součástí TCP k dosažení spolehlivého přenosu. Zajišťuje spolehlivý přenos dat tím, že opakuje ztracená, poškozená nebo zpožděná data. Princip implementace a strategie mechanismu opakovaného přenosu bude zavedena a analyzována podrobně v následující části. Zůstaňte naladěni!
Čas příspěvku: únor-24-2025