2010-07-15 2 views
5

Je suis capturer le trafic http avec tcpdump et je suis intéressé à démarrage lent TCP et comment la fenêtre tailles augmentation:Wireshark et tcpdump -r: fenêtre tcp étrange taille

$ sudo tcpdump -i eth1 -w wget++.tcpdump tcp and port 80 

Quand je regarde le fichier de vidage avec Wireshark la progression de la taille des fenêtres semble normal, à savoir 5840, 5888, 5888, 8576, 11264, etc ...

Mais quand je visionne le fichier de vidage via

$ tcpdump -r wget++.tcpdump -tnN | less 

Je reçois ce qui semble être les fenêtres insensées tailles (adresses IP omis par souci de concision):

: S 1069713761:1069713761(0) win 5840 <mss 1460,sackOK,timestamp 24220583 0,nop,wscale 7> 
: S 1198053215:1198053215(0) ack 1069713762 win 5672 <mss 1430,sackOK,timestamp 2485833728 24220583,nop,wscale 6> 
: . ack 1 win 46 <nop,nop,timestamp 24220604 2485833728> 
: . 1:1419(1418) ack 1 win 46 <nop,nop,timestamp 24220604 2485833728> 
: P 1419:2002(583) ack 1 win 46 <nop,nop,timestamp 24220604 2485833728> 
: . ack 1419 win 133 <nop,nop,timestamp 2485833824 24220604> 
: . ack 2002 win 178 <nop,nop,timestamp 2485833830 24220604> 

Est-il possible d'obtenir la taille des fenêtres normales/absolues sur la ligne de commande?

Répondre

8

Les tailles de fenêtre sont correctes - elles sont simplement non calibrées. L'initiateur de connexion a défini un wscale (facteur de mise à l'échelle de la fenêtre) de 7, de sorte que les valeurs win suivantes doivent être multipliées par 128 pour obtenir la taille de la fenêtre en octets. Ainsi, le win 46 indique une fenêtre de 5888 octets.

Le destinataire de connexion a mis un wscale de 6, de sorte que ses win valeurs doivent être multipliées par 64. Ainsi win 133 indique une fenêtre de 8512 octets, et win 178 indique 11392 octets.

+0

D'abord, pourquoi cela se fait? Deuxièmement, y a-t-il un moyen d'obtenir 'tcpdump' pour faire automatiquement la mise à l'échelle dans la sortie lors de l'affichage du fichier de vidage comme le fait Wireshark? –

+0

@Robert: C'est fait de cette façon parce que la spécification TCP/IP originale fournissait un champ de 16 bits pour la taille de la fenêtre; Lorsque cela s'avérait insuffisant, le mécanisme de mise à l'échelle de la fenêtre permettait de représenter des nombres plus grands sans avoir à changer la taille du champ. Il ne semble pas qu'il y ait un moyen d'afficher les tailles de fenêtre redimensionnées dans 'tcpdump' - vous pouvez toujours soumettre un patch;) Vous pouvez toujours utiliser' tshark' (la version textuelle de Wireshark) à la place. – caf

2

En outre, si l'outil (Wireshark ou tcpdump, il n'a pas d'importance) ne voit pas le syn, il doit imprimer la valeur non ajustée, ce qui peut vous tromper

Questions connexes