Heim häufiges Problem Wie kann das Problem der Sticky-TCP-Pakete gelöst werden?

Wie kann das Problem der Sticky-TCP-Pakete gelöst werden?

Jun 28, 2020 pm 01:02 PM
tcp 粘包

Methoden zur Lösung des TCP-Sticky-Packet-Problems: 1. Sendemethode mit fester Länge, das sendende Ende verwendet LEN als Länge zum Paketieren beim Senden von Daten. 2. Tail-Mark-Sequenzmethode für alle zu sendenden Daten Legen Sie am Ende des Pakets eine spezielle Byte-Sequenz fest. 3. Schritt-für-Schritt-Anleitung zur Header-Markierung, Definition eines Benutzer-Headers und Angabe der Größe jedes gesendeten Datenpakets im Header.

Wie kann das Problem der Sticky-TCP-Pakete gelöst werden?

Methoden zum Umgang mit dem TCP-Sticky-Packet-Problem:

1. Designplan 1: Behoben- Beim Senden von Daten wird beim Senden von Daten ein Design mit fester Länge verwendet, d wird hier als LEN aufgezeichnet), d. h. beim Senden von Daten verwendet das Ende LEN als Länge für die Paketierung. Auf diese Weise empfängt der Empfänger mit einer festen LEN, sodass Senden und Empfangen eins zu eins entsprechen können. Beim Unterpacken wird es möglicherweise nicht vollständig in mehrere vollständige LEN-Pakete aufgeteilt. Das letzte Paket ist im Allgemeinen kleiner als LEN. Zu diesem Zeitpunkt kann das letzte Paket den fehlenden Teil mit leeren Bytes füllen.

Natürlich hat dieser Ansatz Mängel.

1. Die unzureichende Länge des letzten Pakets ist mit leeren Teilen gefüllt, was eine ungültige Bytereihenfolge darstellt. Dann kann es für den Empfänger schwierig sein, diesen ungültigen Teil zu identifizieren. Er dient nur zum Ausfüllen und hat keine tatsächliche Bedeutung. Dies bereitet dem Empfänger Schwierigkeiten, die Bedeutung zu verarbeiten. Natürlich gibt es Lösungen, die durch das Hinzufügen von Flag-Bits kompensiert werden können, d. h. durch das Hinzufügen eines Headers fester Länge am Anfang jedes Datenpakets und das anschließende gemeinsame Senden der Endmarkierung des Datenpakets. Anhand dieser Markierung bestätigt der Empfänger die ungültige Bytefolge und erreicht so den vollständigen Empfang der Daten.

2. Wenn die Länge der gesendeten Pakete zufällig verteilt ist, wird Bandbreite verschwendet. Beispielsweise kann die Sendelänge 1.100, 1.000, 4.000 Byte usw. betragen, und alle müssen entsprechend der maximalen festen Länge gesendet werden, die 4.000 beträgt. Andere Pakete mit Datenpaketen, die kleiner als 4.000 Byte sind, werden ebenfalls aufgefüllt 4000, was zu einer ineffektiven Verschwendung von Netzwerklast führt.

Zusammenfassend lässt sich sagen, dass diese Lösung für Situationen geeignet ist, in denen die Länge des gesendeten Datenpakets relativ stabil ist (zu einem bestimmten festen Wert tendiert) und bessere Ergebnisse liefert.

Verwandte Lernempfehlungen:

PHP Programmieren vom Anfänger bis zum Experten

2. Designplan 2: Endmarkierungssequenz

Setzen Sie eine am Ende jedes zu sendenden Datenpakets Eine spezielle Byte-Sequenz. Diese Sequenz hat eine besondere Bedeutung und wird durch das Endzeichen der Zeichenfolge identifiziert.

Vorteile: Es vermeidet die Komplexität des Programmdesigns, seine Wirksamkeit ist leicht zu überprüfen und es ist einfacher, die Stabilitätsanforderungen des Softwaredesigns zu erfüllen. Zusammenfassend lässt sich sagen, dass Plan drei die beste Strategie ist!

Das obige ist der detaillierte Inhalt vonWie kann das Problem der Sticky-TCP-Pakete gelöst werden?. 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)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen 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

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

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.

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

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

Was ist der Unterschied zwischen TCP und IP? Was ist der Unterschied zwischen TCP und IP? Sep 04, 2023 pm 02:19 PM

TCP und IP sind zwei verschiedene Protokolle im Internet: 1. TCP ist ein Transportschichtprotokoll, während IP ein Netzwerkschichtprotokoll ist. 2. TCP bietet Funktionen wie Segmentierung, Sortierung, Bestätigung und erneute Übertragung von Datenpaketen Das Protokoll ist für die Bereitstellung von Quell- und Zieladressen für Datenpakete verantwortlich. 3. TCP ist ein verbindungsorientiertes Protokoll, während das IP-Protokoll verbindungslos ist. 4. TCP bietet auch Flusskontrolle und Überlastungskontrolle.

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?