


Verstehen Sie das zuverlässige Übertragungsprinzip von TCP in einem Artikel
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.
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.
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 verwerfenund 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.
Um die Kanalauslastung zu verbessern, kann die Pipeline-Übertragung verwendet werden, um mehrere Pakete kontinuierlich zu senden, was die Kanalauslastung erheblich verbessern kann.
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

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:&

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.

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

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).

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

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?

[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
