Heim >Betrieb und Instandhaltung >Betrieb und Wartung von Linux >Verstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel

Verstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel

齐天大圣
齐天大圣Original
2020-12-19 12:52:192667Durchsuche

Die IP-Schicht unter TCP ist eine Best-Effort-Zustellung und unzuverlässig, daher muss TCP selbst eine zuverlässige Übertragung durchführen. Als Nächstes beginnen wir mit einem einfachen Stop-and-Wait-Protokoll, um zu erklären, wie eine zuverlässige Übertragung implementiert wird. Wir müssen auf mehrere Merkmale einer zuverlässigen Übertragung achten: kein Verlust, keine Duplizierung und ordnungsgemäße Ankunft.

Beachten Sie, dass TCP nicht das Stop-and-Wait-Protokoll verwendet, um eine zuverlässige Übertragung zu erreichen.

Stop Waiting Protocol

Die Datenübertragungseinheit der Transportschicht wird als Segment bezeichnet. Der Einfachheit halber werden sie im Folgenden alle als Gruppen bezeichnet.

Das Prinzip des Stop-and-Wait-Protokolls ist sehr einfach. Nachdem Sie ein Paket gesendet haben, stoppen Sie das Senden, warten Sie auf die Bestätigung des vorherigen Pakets und fahren Sie dann mit dem Senden der folgenden Pakete fort.

Das Folgende wird anhand verschiedener Situationen analysiert:

Fehlerfreie Situation

Die fehlerfreie Situation ist sehr einfach, wie unten gezeigt. Nachdem jedes Paket gesendet wurde, stoppt es das Senden und wartet auf die Bestätigung des Pakets, bevor es mit dem Senden nachfolgender Pakete fortfährt.

Verstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel

Ein Fehler tritt auf

Es gibt zwei Situationen, in denen ein Fehler auftritt: Die erste besteht darin, dass das gesendete Paket nicht erfolgreich an die Zieladresse zugestellt wurde, und die andere darin, dass das übertragene Datenpaket einen Fehler aufweist Fehler. Lassen Sie uns anhand der Abbildung die beiden Situationen analysieren. Schauen wir uns zunächst die Funktionsweise von B an: Wenn das Paket falsch ist, verwirft B das Paket, nachdem es empfangen wurde Es passiert nichts. Tun Sie es nicht (A wird nicht benachrichtigt, dass ein falsches Paket empfangen wurde). Wenn B das M1-Paket nicht erhält, weiß es nichts und wird keine Maßnahmen ergreifen.

Schauen wir uns an, was A als nächstes tut: Nachdem A das Paket gesendet hat, aber Bs Bestätigung des M1-Pakets nicht erhalten hat, muss das M1-Paket nach Ablauf der Wartezeit erneut gesendet werden. Um eine Timeout-Neuübertragung zu implementieren, müssen Sie einen Timeout-Timer festlegen. Wenn ein gesendetes Paket vor Ablauf des Timeout-Zeitraums bestätigt wird, wird der Timeout-Timer zurückgesetzt, andernfalls muss das Paket erneut übertragen werden. Verstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel

Es sind einige Punkte zu beachten:

Verstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel

A Nach dem Senden eines Pakets muss eine Kopie des Pakets für die Timeout-Neuübertragung gespeichert werden. Wenn eine Bestätigung für dieses Paket empfangen wird, kann die Kopie des Pakets verworfen werden.

Sie müssen jede Gruppe nummerieren, damit Sie den Ankunftsstatus jeder Gruppe kennen.

  • Das Timeout sollte etwas länger als die durchschnittliche Übertragungszeit eingestellt werden, um unnötige Neuübertragungen zu vermeiden.

  • Verlorene Bestätigung und verspätete Bestätigung
  • Neben Fehlern bei der Paketübertragung treten auch Fehler bei der Rücksendung der Bestätigung auf – verlorene Bestätigung und verspätete Bestätigung.

Sehen Sie sich zunächst die Situation des Bestätigungsverlusts an. Gruppe B von A hat sie erhalten und eine Bestätigung an A gesendet, aber die Bestätigung ging verloren und A hat sie nicht erhalten. Da A die Bestätigung von M1 nicht erhalten hat, überträgt es M1 erneut an B, nachdem es länger als die Zeitüberschreitung gewartet hat. Zu diesem Zeitpunkt empfängt B das doppelte Paket M1 und muss zwei Vorgänge ausführen:

das doppelte Paket M1 verwerfen

Verstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel

und die Bestätigung von M1 an A senden. Denn da A M1 erneut übertragen hat, bedeutet dies, dass A das Paket von M1 nicht empfangen hat. Daher muss B weiterhin Bestätigungen an M1 senden.

  • Sehen wir uns eine andere Situation an. Die Gruppenbestätigung für M1 ist verspätet (nach Ablauf der Auszeit erhalten). Nach Erhalt der doppelten Bestätigung wird A diese verwerfen und nichts weiter unternehmen.

    Durch den oben genannten Timeout-Neuübertragungsmechanismus kann eine zuverlässige Übertragung bei unzuverlässiger Netzwerkübertragung erreicht werden.

    Kanalauslastung

    Das obige Stop-and-Wait-Protokoll ist einfach, weist jedoch einen sehr großen Mangel auf: Die Kanalauslastung ist zu gering. Während des Zeitraums, in dem auf den Empfang der Bestätigung gewartet wird, ist der Kanal völlig inaktiv, was sehr verschwenderisch ist.

    Verstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel

    Um die Kanalauslastung zu verbessern, kann die Pipeline-Übertragung verwendet werden, um mehrere Pakete kontinuierlich zu senden, was die Kanalauslastung erheblich verbessern kann.

    Verstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel

    Zu den Protokollen, die die Pipeline-Übertragung nutzen, gehören das Continuous ARQ Protocol und das Window Sliding Protocol. TCP verwendet das Sliding-Window-Protokoll, um eine zuverlässige Übertragung durchzuführen.

Das obige ist der detaillierte Inhalt vonVerstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn