In seiner Grundform kann TCP eine Fenstergröße von 1 haben,
was bedeutet, dass der Empfänger für jedes vom
Sender übertragene Segment eine Bestätigung für dieses einzelne Segment sendet.
Dies verlangsamt jedoch den
Durchsatz drastisch, da der Sender keine Daten
mehr übertragen kann, bis er die Bestätigung dieses einzelnen Segments empfängt.
Der Durchsatz wäre abhängig vom Round-Trip-Zeitgeber
zwischen dem Senden
von Daten und dem Empfangen der Bestätigung sehr gering.
TCP ermöglicht jedoch größere Fenstergrößen, damit mehr Segmente übertragen werden können,
bevor eine Bestätigung empfangen
wird. 12 Das
Fenster gibt die Anzahl der
Datensegmente an, die der Sender senden darf, ohne vom Empfänger eine Bestätigung zu erhalten.
In diesem Fall
haben wir den Wert 1 festgelegt. Dies bedeutet, wenn Host A
Datenverkehr an Host B senden möchte, kann er 1 Segment senden, da die Fenstergröße auf
1 Host B gesetzt ist, sobald er dieses Segment empfängt, sendet es eine Bestätigung.
Nehmen wir in diesem Beispiel an, dass Host A das Segment mit der Sequenznummer 1 senden
würde. Host B würde für Segment 2 bestätigen.
Host A sendet dann Segment 2
und Host B, sobald das Segment erfolgreich empfangen wurde, wird die Bestätigung
oder Bestätigung für Segment 3 bestätigt.
Host A sendet dann Segment 3 an Host B.
Dieser Vorgang wird dann für die Dauer der Sitzung fortgesetzt. Dies
ist offensichtlich sehr zuverlässig, der Durchsatz ist jedoch sehr gering.
A müsste ausgehende Segmente puffern, bis sie
eine Bestätigung für das übertragene Segment erhalten.
Aus Gründen der Argumentation nehmen wir an,
dass der Datenverkehr mit dem Start
mit der kleinen Fenstergröße 1 Sekunde
dauert und dann die Fenstergröße exponentiell erhöht, um die Datenmenge
zu ermitteln, die der Empfänger empfangen kann und was das Netzwerk verarbeiten kann.
Sie werden dies wahrscheinlich bemerken. Beim Herunterladen einer Datei aus dem Internet ist
die Downloadgeschwindigkeit zunächst langsam, steigt jedoch
im Laufe der Zeit auf einen bestimmten Zeitpunkt an.
Dies liegt daran, dass die Fenstergröße anfänglich klein
ist, dann aber exponentiell zunimmt, bis ein Paket
verworfen wird oder der empfangende Host die empfangene Datenmenge nicht verarbeiten kann.
Sie werden also anfangs feststellen, dass die Downloadgeschwindigkeit
sehr langsam ansteigt und dann an einen Punkt kommt und dann auf
dieser Geschwindigkeit bleibt.
Nehmen wir also wieder
an, dass die Hosts in diesem Beispiel eine feste Fenstergröße von 3 haben.
Das bedeutet, dass A 3 Segmente senden kann, bevor eine Bestätigung empfangen wird.
In diesem Fall sendet Host A die Segmente 1,
2 und 3. Host B bestätigt das Segment 4 und teilt damit
A mit, dass es die Segmente 1, 2 und 3 erfolgreich empfangen
hat. Host A sendet dann die Segmente 4,5 und 6, da es eine feste Fenstergröße
hat von 3 und Host B bestätigt für
Segment 7 und teilt damit A mit, dass es Segmente 4,5 und 6 erhalten hat.
Denken Sie bei Bestätigungen daran, das nächste Segment zu bestätigen, das Sie erhalten möchten, nicht das Segment,
das Sie bereits erhalten haben. 80 Der Host B quittiert also nicht für das
Segment 6, sondern das Segment 7.
Wie bereits erwähnt, können Hosts über ein Schiebefenster feststellen, wie viele Daten der
Empfänger empfangen kann und was das Netzwerk verarbeiten kann.
Nehmen wir in diesem Beispiel an, dass der Host ein
Schiebefenster so verwendet, wie er festlegt, was das Netzwerk
verarbeiten kann, wenn ein Paket vom Netzwerk verworfen wird. Der Host wird langsamer.
Diese Informationen werden
in Kursen mit Servicequalität ausführlicher behandelt.
Bei diesem Kurs wird
davon ausgegangen, dass beim
Ablegen eines Pakets die Fenstergröße in Kürze drastisch reduziert wird. Die Fenstergröße ist entweder das Fenster, das dem Empfänger
vom Empfänger gewährt wird, oder ein berechnetes Fenster, das als Überlastungsfenster
oder CWND, das Überlastungsfenster oder CWND, bezeichnet wird beim Verbindungsaufbau zunächst auf sehr niedrigen
Wert gesetzt und steigt dann exponentiell an.
Für jedes verlorene Segment ist das Überlastungsfenster die
Hälfte, nachdem das verlorene Segment erfolgreich erneut übertragen
wurde. Das Überlastungsfenster wächst wieder bis zu einem
Wert, der die Hälfte des ursprünglichen Überlastungsfensters
erreicht, und verlangsamt dann sein Wachstum mit einem Algorithmus, der Überlastungsvermeidung genannt wird.
Es wächst exponentiell bis zur Hälfte der ursprünglichen Stauungsfenstergröße und steigt dann
langsam mit der linearen Rate an.
In Servicequalität können Weighted Random Early Detection oder WRED verwendet werden, um die
Effizienz von TCP-Übertragungen über die Verbindung zu verbessern, da Pakete aus verschiedenen Flows
oder verschiedenen Sitzungen, die über eine einzelne Schnittstelle laufen, zufällig abgelegt werden,
anstatt dass
Pakete von mehreren Sendern gleichzeitig abgelegt werden.
Dadurch wird das Problem der globalen Synchronisierung vermieden, bei dem
Pakete aus mehreren TCP-Sitzungen gleichzeitig abgelegt werden. Daher reduzieren mehrere Hosts ihre Fenstergröße
und verlangsamen gleichzeitig 110 und erhöhen
dann allmählich ihre Fenstergröße und damit ihren Durchsatz gleichzeitig.
Es gibt also viele Hosts, die gleichzeitig mit WRED langsamer und
schneller werden. Einige Hosts
werden langsamer und andere Hosts werden ihren Durchsatz erhöhen, da sie zufällig abfallen.
Weitere Informationen zu WRED finden Sie in der Dokumentation zur Servicequalität. In diesem
Beispiel nehmen wir an, dass wir mit der ursprünglichen Fenstergröße von 3 beginnen.
Also überträgt A 3 Segmente nach B, jedoch kommen nur die Segmente 1 und 2 am Host B an.
Das Segment 3 fehlt.
Host B kann in diesem Beispiel seine Fenstergröße auf 2 reduzieren und Segment 3 bestätigen.
Denken Sie daran, dass die Bestätigung für das nächste Paket gilt, das der Host erwartet, und da Host B
Segment 3 nicht empfangen hat,
wird das erfolgreiche Empfangen von Segment 1 und 2 bestätigt.
Der Host A sendet das Segment 3 erneut und sendet in diesem Beispiel das Segment 4, fordert jedoch auch eine Fenstergröße
von 3 an.
Beide Segmente werden erfolgreich vom Host B empfangen, sodass Host B das
Segment 5 bestätigt, in diesem
Beispiel jedoch immer noch eine Fenstergröße von 2 wünscht.
Host A sendet nur zwei Segmente, da die Größe des ausgehandelten Fensters 2
beträgt, aber A kann trotzdem die Vergrößerung der Fenstergröße auf 3 anfordern.
Mit dem Schiebefenster wird dynamisch über eine Fenstergröße verhandelt, und diese Fenstergröße kann
sich während einer Sitzung drastisch ändern, abhängig davon, was der
Empfänger verarbeiten kann und was das Netzwerk verarbeiten kann.