Que fait [PSH, ACK] pendant ma connexion à un serveur de catalogue global?

14

Un de mes serveurs Linux essaie d'établir une connexion LDAPS à un serveur de catalogue global et la connexion est interrompue (probablement par le côté GC).

Aux fins de discussion, disons que 1.1.1.1 est le serveur Linux et 1.2.3.4 est le serveur de catalogue global.

Si j'essaie d'utiliser à telnetpartir de la boîte Linux, je vois:

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

Il n'y a pas de délai entre les 4e et 5e lignes. Il abandonne immédiatement la connexion.

Je pensais que les telnetrésultats pourraient être un peu trompeurs (car ils ne conviennent en fait à aucun type de communication sécurisée), j'ai donc collecté une capture de paquets de la tentative de connexion réelle de l'appliance (en utilisant le programme réel nécessitant LDAPS).

Voici ce que je vois (encore une fois, les adresses IP et les ports source ont été renommés pour protéger les innocents):

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

Je suis un peu rouillé avec TCP / IP, alors pardonnez mon ignorance ... Je vois la prise de contact à trois avec les paquets 1 à 3. Ça a du sens. Mais que se passe-t-il dans le paquet n ° 4? Que veut [PSH, ACK]dire? Cela semble être une reconnaissance redondante inutile. Les données réelles sont-elles envoyées dans ce 4ème paquet? Ou est-ce une étrange continuation de la poignée de main?

Mike B
la source

Réponses:

24

PSHest un indicateur Push: http://ask.wireshark.org/questions/20423/pshack-wireshark-capture

L'indicateur Push indique à la pile réseau du récepteur de "pousser" les données directement vers le socket de réception, et de ne plus attendre de paquets avant de le faire.

L'indicateur Push signifie généralement que les données ont été envoyées tout en remplaçant un délai d'efficacité TCP intégré, tel que l'algorithme de Nagle ou les accusés de réception différés .

Ces retards rendent le réseau TCP plus efficace au prix d'une certaine latence (généralement autour de quelques dizaines de millisecondes). Une application sensible à la latence ne veut pas attendre les retards d'efficacité de TCP, de sorte que l'application les désactivera généralement, ce qui entraînera l'envoi de données aussi rapidement que possible avec un indicateur de poussée défini.

Sous Linux, cela se fait avec les setsockopt()drapeaux TCP_QUICKACKet TCP_NODELAY. Voir man 7 socketpour plus d'informations.

Lune Noire
la source
5

@DarkMoon a expliqué ce que signifie le drapeau PSH. Concernant vos données, l'établissement de la connexion se termine (prise de contact à 3 voies), puis, oui, le client a envoyé 194 octets de données au serveur ( Len=194). Le serveur n'a pas aimé les données et a fermé la connexion. Potentiellement, le client n'est pas configuré correctement pour communiquer avec le serveur ou vice versa, par exemple une incompatibilité SSL / TLS.

Si vous y avez accès, je suggère d'examiner les journaux sur le serveur pour voir s'il enregistre ce qu'il n'a pas aimé des données du client.

karyhead
la source