Jemand hat mir den folgenden Trace geschickt und gefragt, ob es sich dabei um Wiederholungsübertragungen handelt, da die „Paketnummern“ doppelt vorkommen
T 0536 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 A T 0486 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 PA R 0000 TCP host2.sub2.dom2.com host.subdomain.domain.co 4000 49957 A R 0000 TCP host2.sub2.dom2.com host.subdomain.domain.co 4000 49957 A R 0000 TCP host2.sub2.dom2.com host.subdomain.domain.co 4000 49957 A R 0000 TCP host2.sub2.dom2.com host.subdomain.domain.co 4000 49957 A R 0044 TCP host2.sub2.dom2.com host.subdomain.domain.co 4000 49957 PA T 0536 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 A T 0536 TCP host.subdomain.domain.com host2.sub2.dom2.com 49957 4000 A
Ich war etwas verwirrt über ihre Verwendung des Begriffs „Paketnummern“; sie bezog sich dabei auf die letzten beiden numerischen Spalten. Ich erklärte ihr, dass es sich dabei um die Quell- und Zielportnummern handelt, nicht um Paketnummern. Leider konnte ich ihre Frage nicht beantworten, da sie nicht genügend Informationen aus dem TCP-Paket-Header erfasst hatte, um feststellen zu können, ob es sich um Wiederholungsübertragungen handelte oder nicht.
Um festzustellen, ob es sich bei einem TCP-Paket um eine erneute Übertragung handelt, muss die Sequenznummer des Pakets erfasst werden. Zu Beginn jeder TCP-Verbindung wählen die beiden Hosts zufällige Sequenznummern aus und erhöhen diese dann für jedes Byte an TCP-Daten, das sie senden. Der empfangende Host gibt im Bestätigungsfeld die Sequenznummer zurück, die er als Nächstes erwartet.
Das folgende Beispiel zeigt, was ich als Mindestanzahl an Steuerargumenten für `packet_monitor` empfehle; vorausgesetzt, Sie interessieren sich für mehr als nur die Information, dass ein Paket gesendet oder empfangen wurde. Das Argument `interface` gibt die zu überwachende IP-Schnittstelle an. Wenn Sie keinen Schnittstellennamen angeben, überwacht `packet_monitor` alle Schnittstellen. `packet_monitor` kann eine große Menge an Stream-Speicher beanspruchen; die Verwendung des Arguments `interface` hilft, diesen Speicherbedarf zu reduzieren. Das Argument -verbose sorgt dafür, dass die Sequenz- und Bestätigungsnummern tatsächlich ausgegeben werden; ohne dieses Argument gibt es keine Möglichkeit, Wiederholungsübertragungen zu identifizieren. Es gibt auch weitere Informationen aus, die bei der Analyse von Traces nützlich sind, zum Beispiel die Werte für die Time-to-Live (TTL) und die Fenstergröße (window). Die Argumente -filter -host und -port helfen dabei, eine bestimmte Verbindung zu identifizieren und die Anzahl der Pakete zu reduzieren, die Sie sich ansehen müssen.
packet_monitor -interface #sdlmux.m16.11-2 -verbose -filter -host 172.16.1.34 -p +ort 23 dir icmp type tcp dir len proto source destination src port dst port type Xmit IP Ver/HL 45, ToS 0, Len 29, ID 8569, Flg/Frg 0, TTL 3c, Prtl 6 Cksum 9eaf, Src ac100174, Dst ac100122 TCP von phx_vos-m16.51094 an 172.16.1.34.telnet Seq 448953077, Ack 1766884569, Fenster 65535, 1 Datenbyte, Flags Push Ack. X/Off 05, Flags 18, Cksum 9c85, Urg-> 0000
Empf. IP Ver/HL 45, ToS 0, Länge 29, ID 45db, Flg/Frg 0, TTL 3c, Port 6 Prüfsumme de3d, Quell-ID ac100122, Ziel-ID ac100174 TCP von 172.16.1.34.telnet an phx_vos-m16.51094 Seq 1766884569, Ack 448953078, Fenster 8192, 1 Datenbyte, Flags Push Ack. X/Off 05, Flags 18, Cksum c984, Urg-> 0000
Sende-IP Ver/HL 45, ToS 0, Länge 29, ID 8576, Flg/Frg 0, TTL 3c, Port 6 Prüfsumme 9ea2, Quell-IP ac100174, Ziel-IP ac100122 TCP von phx_vos-m16.51094 an 172.16.1.34.telnet Seq 448953078, Ack 1766884570, Fenster 65535, 1 Datenbyte, Flags Push Ack. X/Off 05, Flags 18, Cksum d883, Urg-> 0000
Empf. IP Ver/HL 45, ToS 0, Länge 29, ID 45dc, Flg/Frg 0, TTL 3c, Port 6 Prüfsumme de3c, Quell-AC 100122, Ziel-AC 100174 TCP von 172.16.1.34.telnet an phx_vos-m16.51094 Seq 1766884570, Ack 448953079, Fenster 8192, 1 Datenbyte, Flags Push Ack. X/Off 05, Flags 18, Cksum c982, Urg-> 0000
Sende-IP Ver/HL 45, ToS 0, Länge 28, ID 8580, Flg/Frg 0, TTL 3c, Port 6 Prüfsumme 9e99, Quelle ac100174, Ziel ac100122 TCP von phx_vos-m16.51094 an 172.16.1.34.telnet Seq 448953079, Ack 1766884571, Fenster 65535, 0 Datenbytes, Flags Ack. X/Off 05, Flags 10, Cksum 098b, Urg-> 0000
Empf. IP Ver/HL 45, ToS 0, Länge 28, ID 45dd, Flg/Frg 0, TTL 3c, Port 6 Prüfsumme de3c, Quelle ac100122, Ziel ac100174 TCP von 172.16.1.34.telnet an phx_vos-m16.51094 Seq 1766884571, Ack 448953079, Fenster 8192, 0 Datenbytes, Flags Ack. X/Off 05, Flags 10, Cksum e98a, Urg-> 0000
Die oben genannten Sequenznummern werden um 1 erhöht, da jedes Paket nur 1 Byte an Daten enthält. Würden die Pakete 10 Byte, 23 Byte oder 1023 Byte umfassen, würden die Sequenznummern um 10, 23 bzw. 1023 erhöht.
Wie sieht eine Wiederholung also aus? Bei einer Wiederholung ist die Sequenznummer kleiner oder gleich der vorherigen Sequenznummer und enthält mindestens 1 Byte an Daten; Pakete ohne Daten zählen nicht. Im folgenden Beispiel wird die Sequenznummer 448953089 mehrmals wiederholt. Mit Ausnahme des ersten Mal handelt es sich jedes Mal um eine Wiederholung.
packet_monitor -interface #sdlmux.m16.11-2 -verbose -filter -host 172.16.1.34 -p +ort 23 dir icmp type tcp dir len proto source destination src port dst port type
Empf. IP Ver/HL 45, ToS 0, Länge 28, ID 4d43, Flg/Frg 0, TTL 3c, Port 6 Prüfsumme d6d6, Quell-AC 100122, Ziel-AC 100174 TCP von 172.16.1.34.telnet an phx_vos-m16.51094 Seq 1766885133, Ack 448953089, Fenster 8192, 0 Datenbytes, Flags Ack. X/Off 05, Flags 10, Cksum e74e, Urg-> 0000
Sende-IP Ver/HL 45, ToS 0, Länge 29, ID 9191, Flg/Frg 0, TTL 3c, Port 6 Prüfsumme 9287, Quelle ac100174, Ziel ac100122 TCP von phx_vos-m16.51094 an 172.16.1.34.telnet Seq 448953089, Ack 1766885133, Fenster 65535, 1 Datenbyte, Flags Push Ack. X/Off 05, Flags 18, Cksum 9745, Urg-> 0000
Sender-IP Ver/HL 45, ToS 0, Länge 29, ID 919a, Flg/Frg 0, TTL 3c, Port 6 Prüfsumme 927e, Quelle ac100174, Ziel ac100122 TCP von phx_vos-m16.51094 an 172.16.1.34.telnet Seq 448953089, Ack 1766885133, Fenster 65535, 1 Datenbyte, Flags Push Ack. X/Off 05, Flags 18, Cksum 9745, Urg-> 0000
Sender-IP Version/Header-Länge 45, ToS 0, Länge 29, ID 91a0, Flags/Framing 0, TTL 3c, Port 6 Prüfsumme 9278, Quelle ac100174, Ziel ac100122 TCP von phx_vos-m16.51094 an 172.16.1.34.telnet Seq 448953089, Ack 1766885133, Fenster 65535, 1 Datenbyte, Flags Push Ack. X/Off 05, Flags 18, Cksum 9745, Urg-> 0000
. . .
Sender-IP Version/Header-Länge 45, ToS 0, Länge 29, ID 91f9, Flag/Framing 0, TTL 3c, Port 6 Prüfsumme 921f, Quelle ac100174, Ziel ac100122 TCP von phx_vos-m16.51094 an 172.16.1.34.telnet Seq 448953089, Ack 1766885133, Fenster 65535, 1 Datenbyte, Flags Push Ack. X/Off 05, Flags 18, Cksum 9745, Urg-> 0000
Empf. IP Ver/HL 45, ToS 0, Länge 29, ID 4f04, Flg/Frg 0, TTL 3c, Port 6 Prüfsumme d514, Quell-AC 100122, Ziel-AC 100174 TCP von 172.16.1.34.telnet an phx_vos-m16.51094 Seq 1766885133, Ack 448953090, Fenster 8192, 1 Datenbyte, Flags Push Ack. X/Off 05, Flags 18, Cksum 7744, Urg-> 0000
Neben den Argumenten „interface“ und „verbose“ würde ich auch die Argumente „time_stamp“ und „numeric“ hinzufügen. Das Argument „time_stamp“ versieht jedes angezeigte Paket mit einem Zeitstempel. Dies erleichtert die Zuordnung von Meldungen in Protokolldateien zum Trace und ermöglicht es Ihnen, abzuschätzen, wie lange Ereignisse – wie beispielsweise eine Wiederholungssequenz – tatsächlich dauern. Das Argument „numeric“ reduziert den Overhead, da keine Host- oder Portnamen nachgeschlagen werden.
packet_monitor -interface #sdlmux.m16.11-2 -verbose -time_stamp -numeric -filter + -host 172.16.1.34 -port 23 dir icmp type + tcp hh:mm:ss.ttt dir len proto source destination src port ds +t port type 14:30:17.604 Xmit IP Ver/HL 45, ToS 0, Len 29, ID 9b7b, Flg/Frg 0, TTL 3 +c, Prtl 6 Prüfsumme 889d, Quelle ac100174, Ziel ac100122 TCP von 172.16.1.116.51094 an 172.16.1.34.telnet Seq 448953090, Ack 1766885134, Fenster 65535, 1 Datenbyte, Flags Push Ack. X/Off 05, Flags 18, Prüfsumme 9b43, Urg-> 0000
14:30:17.606 Empfangenes IP-Paket Version/HL 45, ToS 0, Länge 29, ID 5442, Flags/Framing 0, TTL 3 +c, Port 6 Prüfsumme cfd6, Quelle ac100122, Ziel ac100174 TCP von 172.16.1.34.telnet an 172.16.1.116.51094 Seq 1766885134, Ack 448953091, Fenster 32768, 1 Datenbyte, Flags Push Ack. X/Off 05, Flags 18, Cksum 1b42, Urg-> 0000
Wenn Sie wissen, dass das Problem auf der TCP- oder IP-Ebene liegt, sind das in der Regel alle Informationen, die Sie benötigen. Sollte das Problem jedoch auf der Anwendungsebene liegen, benötigen Sie zusätzlich die eigentlichen Daten. Mit dem Argument -hex_dump können Sie die Daten anzeigen. Standardmäßig werden nur die ersten 128 Bytes der Daten angezeigt. Um auf der sicheren Seite zu sein, setze ich die Länge immer auf 1500, wodurch alle Daten im Paket angezeigt werden.
packet_monitor -interface #sdlmux.m16.11-2 -verbose -time_stamp -numeric -hex_du +mp -length 1500 -filter -host 172.16.1.34 -port 23 dir icmp type + tcp hh:mm:ss.ttt dir len proto source destination src port ds +t port type 10:25:19.387 Rcvd IP Ver/HL 45, ToS 0, Len 3b, ID f8f, Flg/Frg 0, TTL 3 +c, Prtl 6 Prüfsumme 1478, Quelle ac100122, Ziel ac100174 TCP von 172.16.1.34.49562 an 172.16.1.116.telnet Seq 110526313, Ack 1206659552, Fenster 32768, 19 Datenbytes, Flags Push Ack +. X/Off 05, Flags 18, Prüfsumme d3ee, Urg-> 0000 Offset 0 . . . 4 . . . 8 . . . C . . . 0...4... 8...C... 0 54 68 69 73 20 69 73 20 6f 6e 6c 79 20 61 20 74 * Dies ist nur ein t 10 65 73 74 * est
10:25:19.389 Sende-IP Ver/HL 45, ToS 0, Länge 3 Bytes, ID f969, Flg/Frg 0, TTL 3 +c, Port 6 Prüfsumme 2a9d, Quelle ac100174, Ziel ac100122 TCP von 172.16.1.116.telnet an 172.16.1.34.49562 Seq 1206659552, Ack 110526332, Fenster 8192, 19 Datenbytes, Flags Push Ack +. X/Off 05, Flags 18, Cksum 33dc, Urg-> 0000 Offset 0 . . . 4 . . . 8 . . . C . . . 0...4... 8...C... 0 54 68 69 73 20 69 73 20 6f 6e 6c 79 20 61 20 74 * Dies ist nur ein t 10 65 73 74 * est
10:25:22.263 Sende-IP Ver/HL 45, ToS 0, Länge 28, ID f994, Flg/Frg 0, TTL 3 +c, Port 6 Prüfsumme 2a85, Quelle ac100174, Ziel ac100122 TCP von 172.16.1.116.telnet an 172.16.1.34.49562 Seq 1206659571, Ack 110526332, Fenster 8192, 0 Datenbytes, Flags Ack. X/Off 05, Flags 10, Cksum 7b7a, Urg-> 0000 Keine TCP-Daten.
Bevor Sie einen packet_monitor-Trace mit Daten an Dritte senden, denken Sie daran, die Daten – sowohl Text als auch Hex-Werte – zu bereinigen, um proprietäre Informationen zu entfernen. Unter bestimmten Umständen kann es auch sinnvoll sein, die IP-Adressen zu bereinigen. Die IP-Adressen kommen an zwei Stellen vor: In der Zeile zur Dekodierung des Protokoll-Headers erscheinen sie im standardmäßigen Dezimalschreibweise mit Punkten. In der Zeile unmittelbar über der Dekodierungszeile erscheinen sie als Hex-Werte.
10:25:22.263 Sende-IP Ver/HL 45, ToS 0, Länge 28, ID f994, Flg/Frg 0, TTL 3 +c, Port 6 Prüfsumme 2a85, Quelle ac100174, Ziel ac100122 TCP von 172.16.1.116.telnet an 172.16.1.34.49562 Seq 1206659571, Ack 110526332, Fenster 8192, 0 Datenbytes, Flags Ack. X/Off 05, Flags 10, Cksum 7b7a, Urg-> 0000 Keine TCP-Daten.
