În forma sa de bază, TCP poate avea o dimensiune a ferestrei
de 1, ceea ce înseamnă că pentru fiecare
segment transmis de expeditor, receptorul trimite o confirmare pentru acel segment individual.
Acest lucru însă încetinește
dramatic transferul, deoarece expeditorul nu mai poate
transmite date până când nu primește confirmarea acelui singur segment transmis.
Capacitatea de transfer ar fi foarte scăzută
în funcție de
cronometrul de transfer între datele de trimitere și primirea confirmării.
Cu toate acestea, TCP permit dimensiuni mai mari ale ferestrelor pentru a permite transmiterea mai
multor segmente înainte de primirea
unei confirmări. 12 Fereastra
este numărul de segmente de
date pe care expeditorul le poate trimite fără a primi o confirmare de la receptor.
În acest caz,
am setat-o ​​la 1, ceea ce înseamnă că atunci când gazda
A dorește să trimită trafic către gazdă, poate trimite un segment deoarece dimensiunea ferestrei
este setată la 1 gazdă B, odată ce primește acel segment, trimite o confirmare.
În acest exemplu, să presupunem că gazda A trimite segmentul cu numărul de ordine al 1
gazdă B care ar recunoaște pentru segmentul 2.
Gazdă A va trimite apoi segmentul
2 și gazda B, după primirea cu succes a segmentului respectiv sau
a ACK pentru segmentul 3.
Gazdă A va trimite apoi segmentul 3 gazdei B.
Acest proces va continua apoi pe durata sesiunii, dar acest lucru este
în mod evident foarte fiabil, dar cantitatea de transfer este foarte scăzută.
A ar trebui să tamponeze segmentele de ieșire
până când primește o confirmare pentru segmentul transmis.
acum, din motive de argument, să presupunem
că durează o secundă pentru trafic
cu începutul cu dimensiunea ferestrei mici
și apoi mărește exponențial dimensiunea ferestrei pentru a măsura cantitatea
de date pe care receptorul o poate primi și ce poate face rețeaua.
Ați observat probabil acest lucru, când descărcați un fișier de pe Internet inițial,
viteza de descărcare este lentă, dar
apoi crește până la un anumit punct în timp.
Acest lucru se datorează faptului că dimensiunea ferestrei este
inițial mică, dar apoi crește exponențial până când un
pachet este abandonat sau gazda receptoare nu poate gestiona cantitatea de date primite.
Deci, veți observa inițial că viteza de descărcare este
foarte lentă, crește foarte repede și apoi ajunge la un punct și apoi rămâne
în jurul acelei viteze.
Așadar, încă o dată,
să presupunem că gazdele din acest exemplu au o dimensiune fixă ​​a ferestrei de 3.
Aceasta înseamnă că A poate trimite 3 segmente înainte de a primi o confirmare.
Astfel, în acest caz, gazda A trimite segmentul
1, 2 și 3 gazdă B recunoaște pentru segmentul 4, permițând A
să știe că a primit succes segmentul 1, 2 și 3
gazdă A apoi trimite segmentul 4,5 și 6 deoarece are o dimensiune a ferestrei
fix din 3 și gazdă B recunoaște pentru
segmentul 7, permițând A să știe că a primit segmente de 4,5 și 6.
Amintiți-vă cu confirmări, confirmați segmentul următor pe care doriți să îl primiți nu segmentul pe
care l-ați primit deja. 80 Deci, gazda B nu recunoaște pentru segmentul
6, dar recunoaște segmentul 7.
După cum am menționat, o fereastră de alunecare permite gazdei să evalueze cantitatea de date
pe care receptorul o poate primi și ce poate face rețeaua.
Deci, în acest exemplu, să presupunem că gazda folosește
o fereastră glisantă așa cum determină ce poate face
rețeaua atunci când un pachet este abandonat de rețea, gazda va încetini.
Aceste informații sunt acoperite cu mult
mai multe detalii în cursurile care conțin calitatea serviciilor.
Cu acest curs, presupuneți că
atunci când un pachet
devine scăzut, dimensiunea ferestrei sa redus dramatic pe scurt, dimensiunea ferestrei este fie fereastra acordată expeditorului de către receptor,
fie o fereastră calculată numită fereastra de congestie sau CWND fereastra de
congestie sau CWND este inițial setat la o valoare foarte mică la stabilirea conexiunii
și apoi crește la o rată exponențială.
Pentru fiecare segment pierdut, fereastra de congestie este
jumătate după ce segmentul pierdut a fost re-transmis,
fereastra de congestie crește din nou până
când atinge o valoare jumătate din fereastra
inițială de congestie, apoi încetinește creșterea acesteia, folosind un algoritm numit evitarea congestionării.
Ea crește exponențial până la jumătate din dimensiunea inițială a ferestrei de congestie
și apoi crește încet la rata liniară.
În calitate de serviciu, se pot utiliza îmbunătățiri ale eficienței transmisiilor TCP
prin intermediul link-urilor, deoarece pachetele sunt scoase la întâmplare din diferite fluxuri
sau diferite sesiuni care traversează o interfață individuală, în loc să scadă
pachetele de
la mai mulți expeditori în același timp.
acest lucru evită o problemă numită sincronizare globală în care pachetele din mai
multe sesiuni TCP scad în același timp și, prin urmare, mai multe gazde diminuează dimensiunea ferestrei și
încetinirea ritmului în același timp 110 și apoi
să crească treptat dimensiunea ferestrei și, prin urmare, transferul lor în același timp.
Deci, aveți o mulțime de gazde încetinind și accelerarea în același timp,
cu WRED unele gazde
va încetini și alte gazde vor fi creșterea lor de transfer, deoarece sau picături aleatoare.
Consultați documentația privind calitatea serviciului pentru mai multe detalii despre WRED În acest
exemplu, să presupunem că începem cu dimensiunea inițială a ferestrei de 3.
Deci A transmite 3 segmente la B, dar numai segmentul 1 și 2 ajung la gazda B
segmentul 3 dispare.
Host B poate reduce dimensiunea ferestrei în acest exemplu la 2 și recunoaște segmentul 3.
Amintiți-vă că confirmarea este pentru următorul pachet pe care gazdele se așteaptă să îl primească și pentru că
gazda B nu a
primit segmentul 3, recunoaște succesul primirii segmentului 1 și 2.
Host A va retransmite segmentul 3, iar în acest exemplu trimite segmentul 4, dar de asemenea solicită o dimensiune a ferestrei
de 3.
Ambele segmente sunt primite cu succes de către gazda B, astfel încât gazda B
va recunoaște pentru segmentul 5, dar
în acest exemplu, încă dorește o dimensiune a ferestrei de 2.
Host A va trimite doar 2 segmente, deoarece dimensiunea ferestrei negociate este 2,
dar A poate cere ca dimensiunea ferestrei să fie mărită la 3.
Cu fereastra de alunecare, există o negociere dinamică a dimensiunii ferestrei și dimensiunea ferestrei se
poate schimba în mod dramatic în timpul unei sesiuni, în funcție de
ceea ce poate procesa receptorul și de ceea ce poate gestiona rețeaua.