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

Dec 19, 2020 pm 12:52 PM
tcp

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!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie setze ich das TCP/IP-Protokoll in Win10 zurück? So setzen Sie den TCP/IP-Protokollstapel in Windows 10 zurück Wie setze ich das TCP/IP-Protokoll in Win10 zurück? So setzen Sie den TCP/IP-Protokollstapel in Windows 10 zurück Mar 16, 2024 am 11:07 AM

Wie setze ich das TCP/IP-Protokoll in Win10 zurück? Tatsächlich ist die Methode sehr einfach. Benutzer können die Eingabeaufforderung direkt eingeben und dann die Tastenkombination Strg + Umschalt + Eingabetaste drücken, um den Vorgang auszuführen, oder den Reset-Befehl zum Einrichten direkt ausführen Benutzern eine detaillierte Einführung zum Zurücksetzen des TCP/IP-Protokollstapels in Windows 10. Methode 1 zum Zurücksetzen des TCP/IP-Protokollstapels in Windows 10. Administratorrechte 1. Wir verwenden die Tastenkombination Win+R, um das Ausführungsfenster direkt zu öffnen, geben dann cmd ein und halten die Tastenkombination Strg+Umschalt+Eingabe gedrückt. 2. Oder wir können direkt im Startmenü nach der Eingabeaufforderung suchen und mit der rechten Maustaste klicken

So verwenden Sie TCP, um die Konversation zwischen Client und Server in Python zu implementieren So verwenden Sie TCP, um die Konversation zwischen Client und Server in Python zu implementieren May 17, 2023 pm 03:40 PM

TCP-Client Ein Client-Beispielcode, der das TCP-Protokoll verwendet, um einen kontinuierlichen Dialog zu erreichen: importsocket#Client-Konfiguration HOST='localhost'PORT=12345#Erstellen Sie einen TCP-Socket und stellen Sie eine Verbindung zum Server her client_socket=socket.socket(socket.AF_INET,socket . SOCK_STREAM)client_socket.connect((HOST,PORT))whileTrue:#Get user input message=input("Bitte geben Sie die zu sendende Nachricht ein:&

Bis bald! TCP winkt zweimal, hast du es gesehen? Was ist mit den vier Händeschütteln? Bis bald! TCP winkt zweimal, hast du es gesehen? Was ist mit den vier Händeschütteln? Jul 24, 2023 pm 05:18 PM

Das hier erwähnte „verbindungsorientierte“ bedeutet, dass Sie eine Verbindung herstellen, die Verbindung verwenden und die Verbindung freigeben müssen. Der Verbindungsaufbau bezieht sich auf den bekannten TCP-Drei-Wege-Handshake. Bei der Nutzung einer Verbindung erfolgt die Datenübertragung in Form eines Versands und einer Bestätigung. Es gibt auch die Freigabe der Verbindung, bei der es sich um unsere gemeinsame TCP-Vierwellenwelle handelt.

Verwendung von Netty4 für die TCP-Kommunikation in der Java-API-Entwicklung Verwendung von Netty4 für die TCP-Kommunikation in der Java-API-Entwicklung Jun 17, 2023 pm 11:18 PM

TCP ist eine Art Computernetzwerk-Kommunikationsprotokoll und ein verbindungsorientiertes Übertragungsprotokoll. In der Java-Anwendungsentwicklung wird die TCP-Kommunikation häufig in verschiedenen Szenarien verwendet, z. B. bei der Datenübertragung zwischen Client und Server, bei der Audio- und Videoübertragung in Echtzeit usw. Netty4 ist ein leistungsstarkes, hoch skalierbares und leistungsstarkes Netzwerkprogrammier-Framework, das den Datenaustauschprozess zwischen Server und Client optimieren kann, um ihn effizienter und zuverlässiger zu machen. Die spezifischen Implementierungsschritte bei der Verwendung von Netty4 für die TCP-Kommunikation lauten wie folgt: Einführung

Wie sende ich mehrere Dateien über eine einzige TCP-Verbindung in Java? Wie sende ich mehrere Dateien über eine einzige TCP-Verbindung in Java? Apr 27, 2023 am 08:49 AM

Warum gibt es in diesem Blog die Verwendung einer TCP-Verbindung zum Senden mehrerer Dateien? Ich habe kürzlich einige verwandte Dinge gelesen. Es ist kein Problem, Socket einfach zum Programmieren zu verwenden, aber dies legt nur einige grundlegende Konzepte fest. Gegen das eigentliche Problem lässt sich noch immer nichts unternehmen. Wenn ich Dateien übertragen muss, stelle ich fest, dass ich scheinbar gerade die Daten gesendet habe (Binärdaten), aber einige Informationen über die Datei verloren gegangen sind (die Dateierweiterung). Und ich kann jedes Mal nur einen Socket verwenden, um eine Datei zu senden, und es gibt keine Möglichkeit, Dateien kontinuierlich zu senden (da ich darauf angewiesen bin, den Stream zu schließen, um das Senden von Dateien abzuschließen, was bedeutet, dass ich die Länge der Datei tatsächlich nicht kenne , also kann ich nur Dateien senden, da eine Socket-Verbindung eine Datei darstellt).

Linux SIGPIPE-Signal Linux SIGPIPE-Signal Feb 19, 2024 pm 04:00 PM

Unter den TCP-Kommunikationsparteien werden der Einfachheit halber im Folgenden die Kommunikationsparteien durch A und B ersetzt. Wenn B gemäß dem TCP-Protokoll weiterhin Daten sendet, nachdem A die Verbindung geschlossen hat, empfängt B die RST-Antwort von A. Wenn B weiterhin Daten sendet, sendet das System ein SIGPIPE-Signal, um darüber zu informieren, dass die Verbindung getrennt wurde, und stoppt das Senden. Das Standardverarbeitungsverhalten des Systems für das SIGPIPE-Signal besteht darin, Prozess B beenden zu lassen. Das Standardverarbeitungsverhalten des Betriebssystems für das SIGPIPE-Signal ist sehr unfreundlich. Die TCP-Kommunikation ist ein Vollduplex-Kanal, der zwei Simplex-Kanälen entspricht, und jedes Ende der Verbindung ist für einen verantwortlich. Wenn das gegenüberliegende Ende „schließt“, obwohl die Absicht besteht, alle beiden Kanäle zu schließen, empfängt das lokale Ende nur das FIN-Paket. Gemäß den Bestimmungen des TCP-Protokolls, wenn a

Der Interviewer fragte: Wie viele HTTP-Anfragen kann eine TCP-Verbindung senden? Der Interviewer fragte: Wie viele HTTP-Anfragen kann eine TCP-Verbindung senden? Feb 22, 2023 pm 12:00 PM

Es gab einmal so eine klassische Interviewfrage: Was passiert im Prozess von der Eingabe der URL im Browser bis zur Anzeige der Seite? Ich glaube, dass die meisten Studenten, die sich vorbereitet haben, darauf antworten können, aber wenn Sie weiterhin fragen: Wenn der empfangene HTML-Code Dutzende von Bild-Tags enthält, auf welche Weise, in welcher Reihenfolge, wie viele Verbindungen hergestellt werden und welches Protokoll zum Herunterladen verwendet wird diese Bilder?

Fähigkeiten zur Verarbeitung langer TCP-Verbindungen mit hoher Parallelität für die Swoole-Entwicklungsfunktion Fähigkeiten zur Verarbeitung langer TCP-Verbindungen mit hoher Parallelität für die Swoole-Entwicklungsfunktion Aug 25, 2023 pm 10:01 PM

[Titel] Hochgradig gleichzeitige TCP-Techniken zur Verarbeitung langer Verbindungen für Swoole-Entwicklungsfunktionen [Einleitung] Mit der rasanten Entwicklung des Internets stellen Anwendungen immer höhere Anforderungen an die gleichzeitige Verarbeitung. Als leistungsstarke Netzwerkkommunikations-Engine auf PHP-Basis bietet Swoole leistungsstarke asynchrone, Multiprozess- und Coroutine-Funktionen, wodurch die gleichzeitigen Verarbeitungsfähigkeiten von Anwendungen erheblich verbessert werden. In diesem Artikel wird erläutert, wie Sie die Swoole-Entwicklungsfunktion verwenden, um lange TCP-Verbindungen mit hoher Parallelität zu verarbeiten, und detaillierte Anweisungen mit Codebeispielen bereitstellen. 【Text】1

See all articles