Ablaufsteuerung
In der Telekommunikation im Kontext von Telekommunikationsnetzen ist die Flusskontrolle zusätzlich zur Staukontrolle eine Art der Übertragungskontrolle , die von den Agenten einer Kommunikation (dem Absender und dem Empfänger) an Paketen durchgeführt wird, die über einige Kommunikationsprotokolle gesendet und empfangen werden , wie z TCP .
Das Ziel dieser Kontrolle besteht darin, zu vermeiden, dass der Sender eine übermäßige Datenmenge sendet, die in einigen Situationen den Empfangspuffer des Empfängers überlaufen lassen könnte, was zu einem Verlust von Paketen und der Notwendigkeit einer erneuten Übertragung mit einem Effizienzverlust ( Goodput ) führen könnte Neuübertragung von verlorenen Paketen, wodurch es besonders nützlich für die Aufrechterhaltung der Verbindungsleistung ist .
Mit anderen Worten, die Flusskontrolle ist auf der logischen und physikalischen Ebene an den Enden der Verbindung ausschließlich abhängig von den Empfangsfähigkeiten des Empfängers, während die Staukontrolle, unter Einbeziehung des Senders und des Empfängers an den Enden, davon abhängt Verkehr auf den internen SchaltenKnoten Transportnetzes , auf dem auch die Datenströme anderer Verbindungen zwischen anderen Benutzern laufen, die zusammengerechnet gerade interne Staueffekte erzeugen könnten.
Beschreibung
In einem üblichen TCP-Verbindungsszenario haben Sie typischerweise einen sendenden Host A und einen empfangenden Host B, beide Hosts richten Empfangspuffer ein. Der zugeordnete Anwendungsprozess liest die Daten aus diesem Puffer, aber nicht unbedingt, wenn sie ankommen, vielleicht weil er mit einer anderen Aufgabe beschäftigt ist und somit die Daten zu einem späteren Zeitpunkt liest, wodurch eine Warteschlange von Paketen im Puffer mit dem Risiko eines Überlaufs erzeugt wird und daraus resultierender Verlust von Paketen. Wenn die Anwendung die Daten langsam liest, kann es außerdem passieren, dass der Sender den Empfangspuffer überläuft, indem er die Daten zu schnell sendet. TCP bietet einen Flusssteuerungsdienst , um diese Probleme zu vermeiden.
Umsetzung
TCP bietet eine Flusskontrolle, indem der Absender eine Variable namens Empfangsfenster behält, die dem Absender einen Hinweis auf den freien Speicherplatz gibt, der im Puffer des Empfängers verfügbar ist. Da TCP ein Vollduplex- Protokoll ist, unterhalten die beiden Sender getrennte Empfangsfenster.
Lassen Sie uns nun einige Variablen definieren:
- LastByteRead : Nummer des letzten Bytes im Datenstrom, der vom Anwendungsprozess in B gelesen wurde.
- LastByteRcvd : Nummer des letzten in den Empfangspuffer von B kopierten Bytes.
Da kein TCP-Segment den zugewiesenen Puffer verlassen darf, ist Folgendes erforderlich:
- LastByteRcvd – LastByteRead ≤ RcvBuffer.
Das Empfangsfenster namens RcvWindow wird gleich dem im Puffer verfügbaren Speicherplatz gesetzt: RcvWindow = RcvBuffer - (LastByteRcvd - LastByteRead)
Da der im Puffer verfügbare Platz je nach eingehenden Paketen und der Leseaktivität des Puffers selbst mit der Zeit variiert, ist die Größe von RcvWindow ebenfalls dynamisch.
Dann teilt Host B A mit, wie viel Platz er in seinem Puffer zur Verfügung hat, indem er den aktuellen Wert von RcvWindow in das Segment-Empfangsfensterfeld einträgt, das er an A sendet. Host A behält wiederum zwei Variablen, nämlich LastByteSent und LastByteAcked (letztes gesendetes Byte , letztes gefundenes Byte). Die Differenz zwischen diesen beiden Werten gibt die Datenmenge an, die von A auf der Verbindung gesendet und noch nicht gesehen wurde. Daher stellt das Einhalten der LastByteSent-LastByteAcked ≤ RcvWindow-Differenz sicher, dass Host A den Empfangspuffer von Host B nicht überläuft. Es kann jedoch passieren, dass der Puffer von B voll wird und Host A folglich blockiert bleibt und keine weiteren Daten senden kann. Um dieses Problem zu lösen, bewirkt TCP, dass Host A weiterhin Segmente sendet, die nur aus einem Byte mit Null bestehen, wenn das Empfangsfenster von B Null ist. Diese Segmente werden verworfen, bis sich der Puffer von B zu leeren beginnt. Sobald der Puffer geleert ist, erhält Host A ein Nicht-Null-Feedback von Bs RcvWindow und sendet von dort aus (falls noch Daten vorhanden sind) Daten an Host B.
Informatik
In der Informatik bedeutet Flusskontrolle im Zusammenhang mit der Programmierung die Kontrolle über den Ausführungsablauf eines Programms durch den Prozessor , der dank der Kontrollstrukturen betrieben wird, die für die Programmiersprache typisch sind, in der der Quellcode des Programms geschrieben ist .
Verwandte Artikel
Externe Links
- ( EN ) Flow Control / Flow Control (andere Version) , in Encyclopedia Britannica , Encyclopædia Britannica, Inc.