Cosa sta facendo [PSH, ACK] durante la mia connessione a un server di catalogo globale?


14

Un mio server Linux sta cercando di stabilire una connessione LDAPS a un server di catalogo globale e la connessione viene interrotta (presumibilmente dal lato GC).

Ai fini della discussione, diciamo che 1.1.1.1 è il server Linux e 1.2.3.4 è il server di catalogo globale.

Se provo ad usare telnetdalla scatola di Linux, vedo:

[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.

Non c'è ritardo tra la 4a e la 5a riga. Abbassa immediatamente la connessione.

Ho pensato che i telnetrisultati potrebbero essere un po 'fuorvianti (dal momento che in realtà non è appropriato per alcun tipo di comunicazione sicura), quindi ho raccolto un'acquisizione di pacchetti del tentativo di connessione effettivo dall'appliance (utilizzando il programma effettivo che richiede LDAPS).

Ecco cosa vedo (di nuovo, IP e porte di origine sono stati rinominati per proteggere gli innocenti):

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

Sono un po 'arrugginito con TCP / IP, quindi per favore perdona la mia ignoranza ... Vedo la stretta di mano a tre vie che si svolge nei pacchetti 1-3. Ha senso. Cosa succede nel pacchetto n. 4? Cosa [PSH, ACK]significa? Questo sembra un riconoscimento ridondante che non è necessario. I dati effettivi vengono inviati in questo quarto pacchetto? O è questa una strana continuazione della stretta di mano?

Risposte:


24

PSHè un flag push: http://ask.wireshark.org/questions/20423/pshack-wireshark-capture

Il flag Push dice allo stack di rete del destinatario di "spingere" i dati direttamente nel socket di ricezione e di non attendere altri pacchetti prima di farlo.

Il flag Push di solito indica che i dati sono stati inviati sovrascrivendo un ritardo di efficienza TCP incorporato, come l'algoritmo di Nagle o i riconoscimenti ritardati .

Questi ritardi rendono la rete TCP più efficiente al costo di una certa latenza (di solito intorno a qualche decina di millisecondi). Un'applicazione sensibile alla latenza non vuole attendere i ritardi di efficienza di TCP, quindi l'applicazione li disabiliterà, facendo sì che i dati vengano inviati il ​​più rapidamente possibile con un set di flag Push.

Su Linux, questo viene fatto con i setsockopt()flag TCP_QUICKACKe TCP_NODELAY. Vedi man 7 socketper maggiori informazioni.


5

@DarkMoon ha spiegato cosa significa la bandiera PSH. Per quanto riguarda i tuoi dati, la creazione della connessione viene completata (handshake a 3 vie), quindi, sì, il client ha inviato 194 byte di dati al server ( Len=194). Il server non ha gradito i dati e ha chiuso la connessione. Potenzialmente il client non è configurato correttamente per comunicare con il server o viceversa, ad esempio una mancata corrispondenza SSL / TLS.

Se hai accesso, suggerirei di esaminare i log sul server per vedere se ha registrato ciò che non gli piaceva dei dati del client.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.