TCP-Pakete, die nicht vom PHP-Listener erfasst werden

1438
trejder

Ich habe ein Gerät (GPS-Localizer), das TCP-Pakete (ich denke schon) an den Server über die angegebene IP-Adresse und über den angegebenen Port sendet. Da ich nur SSH-Zugriff auf diesen Server habe, habe ich zwei Sitzungen geöffnet und tcpdumpin einer von ihnen (mit den richtigen Parametern) und in der zweiten mit meinem eigenen Listener (in PHP geschrieben) ausgeführt.

Wenn ich eine Verbindung mit dieser IP-Adresse und diesem Port von einem meiner Browser her herstelle, sehe ich deutlich den Verkehr, der von beiden tcpdumpund meinem eigenen Listener erfasst wird . Ich gehe also davon aus, dass alles gut funktioniert.

Wenn ich jedoch meinen Localizer zwinge, Daten an diese IP / diesen Port zu senden, tcpdumpreagiert er nur und zeigt an, dass er etwas erfasst hat, während die Ausgabe meines eigenen Listeners leer bleibt.

Ich bin ein Neuling in Networking und TCP, also habe ich fälschlicherweise angenommen, dass dies eine TCP-Verbindung ist. Kann jemand mit mehr Erfahrung das bestätigen, indem er sich anschaut, was tcpdumperfasst wurde:

10:43:37.028958 IP 87.111.103.7.2020 > 192.168.1.2.7777: Flags [S], seq 1457768261, win 5120, options [mss 1360,nop,wscale 0,nop,nop,TS[|tcp]> 10:43:37.029564 IP 192.168.1.2.7777 > 87.111.103.7.2020: Flags [S.], seq 1118512962, ack 1457768262, win 5792, options [mss 1460,nop,nop,TS[|tcp]> 10:43:37.526145 IP 87.111.103.7.2020 > 192.168.1.2.7777: Flags [.], ack 1, win 5200, options [nop,nop,TS val 79 ecr 35113125], length 0 10:43:37.526934 IP 192.168.1.2.7777 > 87.111.103.7.2020: Flags [P.], ack 1, win 362, options [nop,nop,TS val 35113175 ecr 79], length 152 10:43:38.225678 IP 87.111.103.7.2020 > 192.168.1.2.7777: Flags [.], ack 153, win 5048, options [nop,nop,TS val 80 ecr 35113175], length 0 10:43:43.765708 IP 87.111.103.7.2020 > 192.168.1.2.7777: Flags [P.], ack 153, win 5200, options [nop,nop,TS val 89 ecr 35113175], length 119 10:43:43.765768 IP 192.168.1.2.7777 > 87.111.103.7.2020: Flags [.], ack 120, win 362, options [nop,nop,TS val 35113799 ecr 89], length 0 10:43:44.445757 IP 87.111.103.7.2020 > 192.168.1.2.7777: Flags [P.], ack 153, win 5200, options [nop,nop,TS val 91 ecr 35113175], length 119 10:43:44.446014 IP 192.168.1.2.7777 > 87.111.103.7.2020: Flags [.], ack 120, win 362, options [nop,nop,TS val 35113867 ecr 91], length 0 10:47:38.675424 IP 192.168.1.2.7777 > 87.111.103.7.2020: Flags [F.], seq 153, ack 120, win 362, options [nop,nop,TS val 35137290 ecr 91], length 0 10:47:41.636064 IP 87.111.103.7.2020 > 192.168.1.2.7777: Flags [.], ack 154, win 5200, options [nop,nop,TS val 568 ecr 35137290], length 0 10:47:41.655520 IP 87.111.103.7.2020 > 192.168.1.2.7777: Flags [R.], seq 120, ack 154, win 5200, length 0 

Ist das wirklich eine TCP-Verbindung (Pakettyp)? Wenn ja, kann jemand eine Idee haben, warum mein Listener nicht antwortet, während er auf die TCP-Verbindung von einem Browser aus richtig reagiert? Wenn dies keine TCP-Verbindung ist, was ist es dann? Was muss mein Zuhörer hören, um diese Art von Verkehr zu erfassen?

BEARBEITEN : Was mich hier am meisten stört, ist, dass jede Verbindung von meinem Lokalisierer durch tcpdumpmit gekennzeichnet ist length 0(während Antwort zurück immer etwas Länge hat). Mir ist aber aufgefallen, dass auch Browserverbindungen mit gekennzeichnet length 0sind. Vielleicht ist das kein wirkliches Problem.

0
Clarification: When you say listener, do you mean network sniffer, or do you mean a service (the passive end of the connection) that has called ? ctrl-alt-delor vor 11 Jahren 0
@richard: Du sprichst mit einer Vernehmung in einem Netzwerk! :] Mein Listener ist (sollte) alle (korrekt formatierten) Daten einfügen, sie werden an eine Datenbank gesendet und nicht an andere übergeben. Ich denke, es ist mehr ein passives Ende als ein Schnüffler. Die von meinem Lokalisierer gesendeten Daten sind zu 100% an meinen Zuhörer und sonst nirgends gerichtet. trejder vor 11 Jahren 0
OK, die Verwirrung war, dass tcpdump ein Schnüffler ist. Wireshark ist ein weiterer, der mit einem dritten Computer ein Kabel hören kann. Sie sprechen aber vom passiven Ende (der Hörer, nicht mit dem Leser zu verwechseln. Da beide Enden lesen können (die Verbindung ist symmetrisch, sobald die Verbindung hergestellt ist.)) ctrl-alt-delor vor 11 Jahren 0

2 Antworten auf die Frage

1
ctrl-alt-delor

just to answer the last bit (you say this is the most worrying)

This is what I see: all data has a length, all without data (syn,ack,fin,rst) have length 0. It looks OK.

87.111.103.7 port 2020 -- 192.168.1.2 port 7777 syn -> <- syn ack ack -> <-data ack -> data -> <- ack data -> <- ack <- fin fin -> rst -> 
Danke für Ihre Antwort. Aber was ist mit meiner eigentlichen Frage? Ist das eine korrekte TCP-Übertragung? Wenn ja, haben Sie eine Idee, warum mein Hörer sie nicht aufnimmt? Ich verwendete ein einfaches TCP-Listener-Formular [PHP.net-Beispielseite] (http://php.net/manual/de/sockets.examples.php) - Version, die für Multi-Client-Zwecke und mit einigen eigenen Korrekturen aktualisiert wurde. Es erfasst die TCP-Verbindung von jedem Browser aus perfekt, bleibt aber für alles, was mein Lokalisierer sendet, taub. trejder vor 11 Jahren 0
Zeigen Sie uns vielleicht den Code, den Sie geschrieben haben. ctrl-alt-delor vor 11 Jahren 0
Der Code ist ziemlich lang, und da er fast genau derselbe ist wie auf [PHP.net Sockets-Beispielseite] (http://php.net/manual/de/sockets.examples.php), denke ich, dass es so sein wird besser, Sie dort weiterzuleiten. Das habe ich in meinem letzten Kommentar geschrieben. Wenn Sie den Code sehen möchten, den ich für meinen Listener verwende, folgen Sie bitte der [PHP.net Sockets-Beispielseite] (http://php.net/manual/de/sockets.examples.php) und blättern Sie nach unten an den Benutzer verfasste Notizen (Ende der Seite, Beispiel von javier). Vielen Dank! trejder vor 11 Jahren 0
0
Stefan Seidel

Ihre Müllkippe sieht gut aus. Ihr Gerät (ich nehme an, dass es sich um 192.168.1.2 handelt) sendet Pakete mit einer Länge von mehr als 0 und Ihr Server bestätigt den Empfang über 0-Byte-ACK-Pakete. Es ist auf jeden Fall hilfreich, wenn Sie diese -XXin Ihre tcpdump-Befehlszeile einfügen.

tcpdump -XX port 2020 
Klar, es wird hilfreich sein. Es gibt jedoch kein Problem mit `tcpdump` nur mit meinem PHP-Listener - wie im obigen Kommentar angegeben. Ich versuche herauszufinden, warum mein Zuhörer für Verbindungen von localizer (tcpdump `erfasst wird) taub bleibt, während er z. B. für Verbindungen von Webbrowsern funktioniert. trejder vor 11 Jahren 0
Nun, ich meine hilfreich in dem Sinne, dass es Ihnen zeigen wird, welche Daten Ihr Hörer erhalten soll. Wenn das Gerät beispielsweise nur NUL-Bytes sendet, wird die Ausgabe des Listeners höchstwahrscheinlich nicht angezeigt. Stefan Seidel vor 11 Jahren 0
Vielen Dank! Ich habe `-xx` in das Kommando aufgenommen und zusätzliche Infos gemacht. Nein, die Frage ist, wie kann ich manuell dekodieren, was er erfasst hat - dh: 0x0000: 0008 9bc0 2fb6 74ea 3ae4 64aa 0800 4500 0x0010: 0044 b847 4000 0706 3be3 53dc 6a03 c0a8 0x0020: 0102 07e4 1e61 59ad ed00 000000 c002 0x0030: 1400 1b76 0000 0204 0550 0103 0300 0101 0x0040: 080a 0000`? Ist dies nur eine hexadezimale Notation der echten Daten, die von meinem Lokalisierer gesendet werden? trejder vor 11 Jahren 0
Mit '-XX' (Großbuchstabe X) haben Sie auch die ASCII-Notation. Wenn es sich bei den von Ihnen übermittelten Daten um alles handelt, was Sie haben, sieht es so aus, als würde Ihr Localizer leere Datenpakete senden. Möglicherweise müssen Sie die Dokumentation des Geräts überprüfen. Eine weitere Option ist die folgende: Sie stoppen Ihren PHP-Listener und führen stattdessen einen Befehlszeilen-Listener wie folgt aus: `nc -l 7777 | Hexdump-C` (beachten Sie die Hauptstadt C). Stefan Seidel vor 11 Jahren 0
Nun, [hier] (http://pastebin.com/Wjs6p846) ist ein Pastebin für alles, was "tcpdump" normalerweise von diesem Lokalisierer erhält. Ich war mir ziemlich sicher, dass die Tatsache, dass es Müll sendet, der Grund ist, warum der PHP-Listener diesen Verkehr nicht erfassen kann. Nein, ich verwende sehr eingeschränkte Linux-Systeme (NAS, nicht vollständige Server) und kann / kann kein "nc" installieren. Und nein - soweit ich weiß, gibt es keine Dokumente, APIs oder Anleitungen für Entwickler / Hauptbenutzer dieses Lokalisierers (billiges China TK102). Nur einige Grundlagen für Neulinge, wie man es konfiguriert. trejder vor 11 Jahren 0