Controlul debitului

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Notă despre dezambiguizare.svg Dezambiguizare - Dacă sunteți în căutarea controlului fluxului limbajelor de programare , consultați structura de control .

În telecomunicații în contextul rețelelor de telecomunicații , controlul fluxului , pe lângă controlul congestiei , este un tip de control al transmisiei efectuat de agenții unei comunicații (expeditorul și destinatarul) pe pachetele trimise și primite prin intermediul unor protocoale de comunicații precum TCP .

Obiectivul acestui control este de a evita ca expeditorul să trimită o cantitate excesivă de date care ar putea, în unele situații, să depășească tamponul de recepție al receptorului, generând o pierdere de pachete și necesitatea retransmisiei cu o pierdere a eficienței ( Goodput ) datorită retransmisii de pachete pierdute, ceea ce îl face deosebit de util pentru menținerea performanței conexiunii .

Cu alte cuvinte, controlul debitului este la nivel logic și fizic la capetele conexiunii, depinzând exclusiv de capacitățile de recepție ale receptorului, în timp ce controlul congestiei, în timp ce implică și emițătorul și receptorul la capete, depinde de trafic pe nodurile interne. comutarea rețelei de transport pe care circulă și fluxurile de date ale altor conexiuni între alți utilizatori, care, împreună, ar putea genera cu precizie efecte de congestie internă.

Descriere

Într-un scenariu comun de conexiune TCP, aveți de obicei o gazdă A de trimitere și o gazdă primitoare B, ambele gazde configurând buffere de recepție. Procesul de aplicare asociat va citi datele din acest buffer, dar nu neapărat la sosire, poate pentru că este angajat într-o altă sarcină, citind astfel datele ulterior, generând o coadă de pachete în buffer cu riscul de revărsare și pierderea consecventă a pachetelor. Mai mult, dacă aplicația citește lent datele, se poate întâmpla ca expeditorul să deborde tamponul de recepție, trimițând datele prea repede. TCP oferă un serviciu de control al fluxului pentru a evita aceste probleme.

Implementare

TCP oferte de control al fluxului de având expeditorul să păstreze o variabilă numită fereastra de primire care dă expeditorul o indicație a spațiului liber disponibil în memoria tampon a destinatarului. Deoarece TCP este un protocol full-duplex , cei doi expeditori mențin ferestre de recepție distincte.

Să definim acum câteva variabile:

  • LastByteRead : Numărul ultimului octet din fluxul de date citit de procesul de aplicare în B.
  • LastByteRcvd : Numărul ultimului octet copiat în bufferul de recepție al lui B.

Deoarece fiecare segment TCP nu trebuie să iasă din buffer-ul alocat, este necesar să aveți:

  • LastByteRcvd - LastByteRead ≤ RcvBuffer.

Fereastra de recepție, numită RcvWindow , este setată egală cu cantitatea de spațiu disponibil în buffer: RcvWindow = RcvBuffer - (LastByteRcvd - LastByteRead)

Deoarece spațiul disponibil în buffer variază în funcție de timp în funcție de pachetele primite și de activitatea de citire a bufferului în sine, dimensiunea RcvWindow este, de asemenea, dinamică.

Apoi gazda B îi spune lui A cât spațiu are disponibil în buffer-ul său plasând valoarea curentă a RcvWindow în câmpul ferestrei de recepție pe segment pe care îl trimite către A. La rândul său, gazda A păstrează două variabile care sunt LastByteSent și LastByteAcked (ultimul octet trimis) , ultimul octet găsit). Diferența dintre aceste două valori indică cantitatea de date trimise și nevăzute încă de A pe conexiune. Prin urmare, păstrarea diferenței LastByteSent-LastByteAcked ≤ RcvWindow asigură faptul că gazda A nu depășește tamponul de recepție al gazdei B. Cu toate acestea, se poate întâmpla ca bufferul lui B să fie plin și, în consecință, gazda A să rămână blocată și să nu poată transmite date suplimentare. Pentru a rezolva această problemă, TCP face ca gazda A să continue să trimită segmente constând din doar un octet zero atunci când fereastra de recepție a lui B este zero. Aceste segmente vor fi aruncate până când bufferul lui B începe să se golească. Odată golit tamponul, gazda A va primi feedback non-nul de la RcvWindow a lui B și de acolo va continua să trimită (dacă mai există) date către gazda B.

Informatică

În informatică , în contextul programării , controlul fluxului înseamnă controlul asupra fluxului de execuție al unui program de către procesor operat grație structurilor de control tipice limbajului de programare în care este scris codul sursă al programului.

Elemente conexe

linkuri externe

Controlul autorității LCCN (EN) sh2005007524 · GND (DE) 4194071-4
Telematică Portal telematic : accesați intrări Wikipedia care vorbesc despre rețele, telecomunicații și protocoale de rețea