Hauptunterschied: Die Flusskontrolle löst das Problem der Rateninkongruenz zwischen Sender und Empfänger; die Überlastungskontrolle löst das Problem der Vermeidung einer Erschöpfung der Netzwerkressourcen. Die Flusskontrolle wird durch Schiebefenster implementiert; die Überlastungskontrolle wird durch Überlastungsfenster implementiert.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, Dell G3-Computer.
Verwandte Empfehlungen: „Programmierunterricht“
Der Unterschied zwischen Flusskontrolle und Überlastungskontrolle
TCP-Flusskontrolle und Überlastungskontrolle scheinen zwei relativ ähnliche Konzepte zu sein, die leicht zu Verwirrung führen können. Tatsächlich unterscheiden sie sich jedoch in ihren angestrebten Zielen und Methoden völlig.
Die Flusskontrolle löst das Problem der Rateninkongruenz zwischen Sender und Empfänger. Wenn der Sender zu schnell sendet, hat der Empfänger keine Zeit zum Empfangen und Verarbeiten. Der verwendete Mechanismus ist ein Schiebefenstermechanismus, der die Anzahl der Pakete steuert, die gesendet, aber nicht bestätigt werden.
Die Überlastungskontrolle löst das Problem, die Erschöpfung der Netzwerkressourcen zu verhindern. Durch selbstdisziplinierte Vermeidungsmaßnahmen kann jeder die Erschöpfung begrenzter Netzwerkressourcen verhindern. Wenn ein Paketverlust auftritt, wird die Senderate gesteuert, um die Netzwerklast zu reduzieren.
Flusskontrolle
Die Fenstergröße bleibt während eines bestimmten Verbindungskommunikationsprozesses unverändert. Das Schiebefenster ist ein Mechanismus, der die Größe der Daten darstellt, die auf der Sendeseite gesendet werden können, und die Größe der Daten, die auf der Empfangsseite empfangen werden können.
Überlastungskontrolle
Der Prozess der linearen Erhöhung nach Überschreiten der Grenzgröße während der Überlastungsvermeidungsphase und der Prozess der Änderung des Überlastungsfensters auf 1 und der Halbierung der Grenzgröße nach Feststellung eines Paketverlusts.
Erweiterte Informationen
Flusskontrolle ist eine End-to-End-Kontrolle. Wenn A beispielsweise Daten zu schnell an B sendet, kann B diese nicht empfangen (B-Pufferfenster). ist zu klein oder die Verarbeitung ist zu langsam) ), die Steuerung ist zu diesem Zeitpunkt die Flusskontrolle, und das Prinzip wird durch Ändern der Größe des Schiebefensters erreicht.
Überlastungskontrolle liegt vor, wenn das Netzwerk zwischen A und B blockiert ist, was zu einer langsamen Übertragung oder einem Paketverlust führt und keine Zeit für die Übertragung bleibt. Indem verhindert wird, dass zu viele Daten in das Netzwerk eingespeist werden, wird verhindert, dass Router oder Verbindungen im Netzwerk überlastet werden. Die Überlastungskontrolle ist ein globaler Prozess, der alle Hosts, Router und alle Faktoren betrifft, die mit der Verringerung der Netzwerkleistung zusammenhängen.
Flusskontrollmechanismus:
Angenommen, Host A sendet Daten an Host B. Der von beiden Parteien festgelegte Fensterwert beträgt 400. Angenommen, jedes Nachrichtensegment ist 100 Byte lang, der Anfangswert der Sequenznummer ist seq = 1, ACK in Großbuchstaben gibt an, dass der Header als ACK betrachtet wird, und ACK in Kleinbuchstaben gibt den Wert an des Bestätigungsfeldes.
Der Host B des Empfängers führte dreimal eine Flusskontrolle durch. Beim ersten Mal wird das Fenster auf rwind=300 gesetzt, beim zweiten Mal wird es auf rwind=100 reduziert und schließlich wird es auf rwind=0 reduziert, d. h. der Absender darf keine weiteren Daten mehr senden. Dieser Zustand, der dazu führt, dass der Absender das Senden anhält, bleibt bestehen, bis Host B erneut einen neuen Fensterwert sendet.
Angenommen, kurz nachdem B ein Null-Fenster-Nachrichtensegment an A gesendet hat, verfügt der Empfangspuffer von B über etwas Speicherplatz. Also schickte B ein Nachrichtensegment mit rwind=400 an A. Dieses Nachrichtensegment ging jedoch während der Übertragung verloren. A hat auf den Empfang der von B gesendeten Nicht-Null-Fensterbenachrichtigung gewartet, und B hat auf die von A gesendeten Daten gewartet. Dadurch entsteht ein Deadlock. Um diese Deadlock-Situation zu lösen, verfügt TCP über einen kontinuierlichen Timer für jede Verbindung. Solange eine Partei der TCP-Verbindung die Null-Fenster-Benachrichtigung von der anderen Partei erhält, startet sie den kontinuierlichen Timer. Wenn die durch den kontinuierlichen Timer festgelegte Zeit abläuft, sendet sie ein Null-Fenster-Erkennungsnachrichtensegment (das nur 1 Byte Daten trägt). ) und die andere Partei Der aktuelle Fensterwert wird bei der Bestätigung dieses Erkennungssegments angegeben.
Überlastungskontrollmechanismus:
Langsamer Start und Stauvermeidung
Die Bestimmung der Rate der gesendeten Nachrichtensegmente muss nicht nur auf der Empfangsfähigkeit des Empfängers basieren, sondern auch die Gesamtsituation berücksichtigen, die keine Überlastung im Netzwerk verursacht. Dies wird durch die beiden Statusgrößen bestimmt Empfangsfenster und das Überlastungsfenster. Das Empfängerfenster (Reciver Window), auch bekannt als Advertised Window, ist der neueste vom Empfänger versprochene Fensterwert basierend auf der aktuellen Empfangspuffergröße und eine Flusssteuerung vom Empfänger. Das Überlastungsfenster cwnd (Überlastungsfenster) ist ein Fensterwert, der vom sendenden Ende basierend auf seinem geschätzten Netzwerküberlastungsgrad festgelegt wird. Es handelt sich um eine Flusskontrolle vom sendenden Ende.
Slow-Start-Prinzip:
1) Wenn der Host mit dem Senden von Daten beginnt und alle Datenbytes des größeren Sendefensters sofort in das Netzwerk eingespeist werden, kann es aufgrund unklarer Netzwerkbedingungen zu Problemen kommen Netzwerküberlastung
2) Eine bessere Möglichkeit besteht darin, es zu testen, d Überlastungsfenster cwnd auf ein Maximum Der MSS-Wert des Nachrichtensegments. Nach Erhalt jeder Bestätigung eines neuen Segments wird das Überlastungsfenster um bis zu einen MSS-Wert erhöht. Wenn rwind groß genug ist, ist eine weitere Variable erforderlich, um zu verhindern, dass das Überlastungsfenster cwind zu einer Netzwerküberlastung führt Schwelle für langsamen Start. ssthresh
Der spezifische Prozess der Überlastungskontrolle ist:
1) TCP-Verbindungsinitialisierung, Überlastungsfenster auf 1 setzen
2) Führen Sie den langsamen Startalgorithmus aus, cwind erhöht sich exponentiell, bis cwind == ssthress beginnt mit der Durchführung des Algorithmus zur Überlastungsvermeidung, cwnd wächst nach einem linearen Gesetz
3) Wenn eine Netzwerküberlastung auftritt, aktualisieren Sie den ssthresh-Wert auf die Hälfte des ssthresh-Werts vor der Überlastung, setzen Sie cwnd auf 1 zurück und befolgen Sie Schritt (2).
Schnelle Neuübertragung und schnelle Wiederherstellung
Eine TCP-Verbindung bleibt manchmal längere Zeit inaktiv, da ein langsamer Start und die Vermeidung von Überlastungen diese Art von Problem nicht gut lösen können. Daher wird eine schnelle Neuübertragung vorgeschlagen -Methoden zur Wiederherstellung der Überlastungskontrolle.
Der schnelle Neuübertragungsalgorithmus bricht den Neuübertragungsmechanismus nicht ab, sondern überträgt das verlorene Nachrichtensegment in einigen Fällen früher erneut (wenn der Absender drei wiederholte Bestätigungs-ACKs erhält, wird daraus geschlossen, dass das Paket verloren gegangen ist, und übertragen Sie verlorene Segmente sofort erneut, ohne auf das zu warten der Neuübertragungstimer läuft ab). Der Slow-Start-Algorithmus wird nur verwendet, wenn TCP eingerichtet ist.
Der schnelle Wiederherstellungsalgorithmus hat die folgenden zwei Schlüsselpunkte:
1) Wenn der Absender drei aufeinanderfolgende doppelte Bestätigungen erhält, führt er den „multiplikativen Reduktionsalgorithmus“ aus und halbiert den Schwellenwert für den langsamen Start. Dies soll eine Überlastung des Netzwerks verhindern.
2) Da der Absender nun davon ausgeht, dass das Netzwerk wahrscheinlich nicht überlastet ist, führt er den Slow-Start-Algorithmus jetzt nicht aus. Stattdessen setzt er den cwnd-Wert auf den Wert, nachdem der Slow-Start-Schwellenwert halbiert wurde, und beginnt dann mit der Ausführung Algorithmus zur Vermeidung von Überlastungen, um das Überlastungsfenster linear zu vergrößern.
Zusammenfassung:
Die ersten beiden Algorithmen werden verwendet, bevor eine Überlastung auftritt, und die letzten beiden Algorithmen werden verwendet, nachdem eine Überlastung auftritt (d. h. drei wiederholte Bestätigungen).
Weitere verwandte Artikel finden Sie auf der
Chinesischen PHP-WebsiteDas obige ist der detaillierte Inhalt vonWas ist der Hauptunterschied zwischen Flusskontrolle und Überlastungskontrolle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!