Was macht [PSH, ACK] während meiner Verbindung zu einem globalen Katalogserver?

14

Ein Linux-Server von mir versucht, eine LDAPS-Verbindung zu einem globalen Katalogserver herzustellen, und die Verbindung wird unterbrochen (vermutlich von der GC-Seite).

Nehmen wir zum Zwecke der Diskussion an, dass 1.1.1.1 der Linux-Server und 1.2.3.4 der globale Katalogserver ist.

Wenn ich versuche, telnetvon der Linux-Box zu verwenden, sehe ich:

[root@foobox ~]# telnet gcfoo.exampleAD.local 3269
Trying 1.2.3.4...
Connected to gcfoo.examplead.local.
Escape character is '^]'.
Connection closed by foreign host.

Es gibt keine Verzögerung zwischen der 4. und 5. Zeile. Die Verbindung wird sofort getrennt.

Ich dachte, dass die telnetErgebnisse etwas irreführend sein könnten (da sie für keine sichere Kommunikation geeignet sind), und sammelte daher eine Paketerfassung des tatsächlichen Verbindungsversuchs von der Appliance (unter Verwendung des tatsächlichen Programms, für das LDAPS erforderlich ist).

Folgendes sehe ich (IPs und Quellports wurden umbenannt, um die Unschuldigen zu schützen):

No.     Time      Source     Destination      Protocol    Length    Info
1       0.000000  1.1.1.1    1.2.3.4          TCP         66        27246 > msft-gc-ssl [SYN] Seq=0 Win=5840 Len=0 MSS=1460 SAC_PERM=1 WS=128
2       0.000162  1.2.3.4    1.1.1.1          TCP         62        msft-gc-ssl > 27246 [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1460 SACK_PERM=1
3       0.000209  1.1.1.1    1.2.3.4          TCP         54        27246 > msft-gc-ssl [ACK] Seq=1 Ack=1 Win=5840 Len=0
4       0.003462  1.1.1.1    1.2.3.4          TCP         248       27246 > msft-gc-ssl [PSH, ACK] Seq=1 Ack=1 Win=5840 Len=194
5       0.007264  1.2.3.4    1.1.1.1          TCP         60        msft-gc-ssl > 27246 [RST] Seq=1 Win=64046 Len=0

Ich bin ein bisschen verrostet mit TCP / IP, bitte verzeihen Sie meine Unwissenheit ... Ich sehe, dass der Drei-Wege-Handshake in Paketen 1-3 stattfindet. Das macht Sinn. Was ist denn in Paket 4 los? Was [PSH, ACK]bedeutet Dies scheint eine redundante Bestätigung zu sein, die nicht erforderlich ist. Werden in diesem 4. Paket aktuelle Daten gesendet? Oder ist das eine seltsame Fortsetzung des Händedrucks?

Mike B
quelle

Antworten:

24

PSHist eine Push-Flagge: http://ask.wireshark.org/questions/20423/pshack-wireshark-capture

Das Push-Flag weist den Netzwerkstapel des Empfängers an, die Daten direkt zum empfangenden Socket zu "pushen" und nicht auf weitere Pakete zu warten.

Das Push-Flag bedeutet normalerweise, dass Daten gesendet wurden, während eine eingebaute Verzögerung der TCP-Effizienz außer Kraft gesetzt wurde, z. B. Nagles Algorithmus oder Delayed Acknowledgements .

Diese Verzögerungen machen das TCP-Netzwerk effizienter, was zu einer gewissen Latenz führt (normalerweise um einige zehn Millisekunden). Eine latenzempfindliche Anwendung möchte nicht auf Verzögerungen bei der TCP-Effizienz warten, daher werden diese normalerweise von der Anwendung deaktiviert, sodass Daten mit einem gesetzten Push-Flag so schnell wie möglich gesendet werden.

Unter Linux geschieht dies mit den setsockopt()Flags TCP_QUICKACKund TCP_NODELAY. Siehe man 7 socketfür weitere Informationen.

Dunkler Mond
quelle
5

@DarkMoon erklärte, was das PSH-Flag bedeutet. In Bezug auf Ihre Daten wird der Verbindungsaufbau abgeschlossen (3-Wege-Handshake), und dann hat der Client 194 Datenbytes an den Server gesendet ( Len=194). Der Server mochte die Daten nicht und schloss die Verbindung. Möglicherweise ist der Client nicht richtig konfiguriert, um mit dem Server zu kommunizieren, oder umgekehrt, z. B. bei einer SSL / TLS-Nichtübereinstimmung.

Wenn Sie Zugriff haben, würde ich vorschlagen, die Protokolle auf dem Server zu untersuchen, um festzustellen, ob protokolliert wurde, was an den Clientdaten nicht gefallen hat.

Karyhead
quelle