Beziehung zwischen TCP-Konversationen und TCP-Streams in Wireshark

Beziehung zwischen TCP-Konversationen und TCP-Streams in Wireshark

Ich habe gelesen überGesprächeUndTCP-Streamsaber ich bin mir immer noch nicht ganz sicher, in welcher Beziehung sie zueinander stehen, wenn sie sich auf derselben Ebene befinden.

Für unterschiedliche Ebenen ist mir klar, dass beispielsweise eine IP-Konversation aus mehreren TCP-Streams bestehen kann.

Kann eine TCP-Konversation aus mehreren TCP-Streams bestehen? Und umgekehrt, kann ein TCP-Stream mehrere TCP-Konversationen enthalten? Warum?

Antwort1

In diesem Fall AGesprächerfolgt auf TCP-Ebene (Transport) und ist gleichbedeutend mit einer TCP-Verbindung zwischen zwei Ports.

Ein „TCP-Stream“ ist in diesem Zusammenhang die Aggregation der Anwendungsnachrichten, die in einer Konversation übermittelt wurden. Der Stream in Ihrem Link zeigt beispielsweise einen internen Host, auf dem einUPNP-fähiges Programm, das einen Router auffordert, Port 5000 für es weiterzuleiten, und der Router antwortet. Was Sie also tatsächlich sind, ist das Datenfeld des TCP-Segments. Aus diesem Grund finde ich, dass es schlecht benannt ist. Alle TCP-Informationen wurden entfernt, sodass nur die Nachrichten übrig bleiben, die die Software auf beiden Hosts sendet und empfängt. Sie könntenHTTPGETs und Antworten,FTPPUTs,SMTPMAILs oder die native Befehlssprache einer anderen Anwendung.

Persönlich bin ich mir nicht sicher, ob mir die Terminologie von Wireshark in dieser Dokumentation gefällt, aber sie dient ihrer Perspektive als Protokollanalysator gut. Eine Anwendung betrachtet eine Socket-Verbindung zwischen zwei Endpunkten als IO-Stream, unabhängig vom zugrunde liegenden Protokoll.

Nebenbei bemerkt würde ich sagen, dass ich nicht damit einverstanden bin, dass IP „Konversationen“ führt. IP überträgt nicht die Daten, die zur Aufrechterhaltung eines virtuellen Schaltkreises erforderlich sind, und überlässt dies einer höheren Schicht. TCP verwaltet einen strengen Schaltkreis, und UDP verwaltet einen sehr lockeren Schaltkreis und überlässt die Reihenfolge, Fehlerkorrektur und Flusskontrolle seiner Anwendung.

Antwort2

TCPKonversationen und TCP-Streamssollenauf derselben Ebene sein, aber zumindest in einigen Versionen von Wireshark verwenden sie unterschiedlichen Code, um zu identifizieren, welche Pakete Teil der Konversation/des Streams sind, sodass sie möglicherweise unterschiedliche Antworten geben.

Einer von ihnen könnte beispielsweise den gesamten Datenverkehr zwischen zwei Endpunkten (IP-Adresse/Port-Paare) als Teil derselben Konversation/desselben Datenstroms behandeln, selbst wenn eine TCP-Verbindung zwischen diesen beiden Endpunkten geschlossen wird und innerhalb derselben Erfassung zufällig eine andere zwischen denselben beiden Endpunkten geöffnet wird (unwahrscheinlich, da Ports nicht dazu neigen, sofort wiederverwendet zu werden, aber nicht unmöglich), während der andere das Schließen der Verbindung erkennen und die beiden als separate Konversationen/Datenströme anzeigen könnte.

Wenn sie nicht denselben Code verwenden, handelt es sich wohl um einen Fehler, der aber möglicherweise noch nicht behoben wurde.

Offensichtlich,IP„Gespräche“, die zwischen zweiIPEndpunkte (zwei IP-Adressen) unterscheiden sich von TCP-Konversationen/Streams. Wie Sie bemerken, können zwischen zwei IP-Endpunkten mehrere TCP-Konversationen, UDP-Konversationen usw. und somit mehrere TCP/UDP/usw.-Konversationen in derselben IP-Konversation stattfinden.

Antwort3

Wenn man sich nur die Beispiele auf den Seiten ansieht, auf die Sie verweisen, scheint es nicht so, als ob die Begriffe funktional unterschiedlich wären. Beide scheinen die Länge einer einzelnen Netzwerkverbindung zu sein.

Auf der Konversationsseite werden nicht mehrere Verbindungen zusammengefasst, sondern jede einzelne mit Dauer und Byteanzahl angezeigt. Das Stream-Fenster zeigt lediglich die Details der tatsächlich gesendeten Daten.

verwandte Informationen