2010-07-15 29 views
5

estoy capturar el tráfico HTTP con tcpdump y estoy interesado en TCP comienzo lento y cómo aumenta el tamaño de la ventana:Wireshark y tcpdump -r: ventana TCP extraña tamaños

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

Cuando veo el archivo de volcado con Wireshark la progresión de tamaños de ventana se ve normal, es decir, 5840, 5888, 5888, 8576, 11264, etc ...

Pero cuando veo el archivo de volcado a través

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

consigo lo que parecen ser las ventanas sin sentido tamaños (direcciones IP omitidos por razones de brevedad):

: 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> 

¿Hay una manera de conseguir tamaños de las ventanas normales/absolutos en la línea de comandos?

Respuesta

8

Los tamaños de ventana son correctos, simplemente no tienen escala.

El iniciador de conexión ha establecido wscale (factor de escala de ventana) de 7, por lo que sus valores posteriores win se deben multiplicar por 128 para obtener el tamaño de ventana en bytes. Por lo tanto, win 46 indica una ventana de 5888 bytes.

El destinatario conexión ha establecido un wscale de 6, por lo que sus win valores deben multiplicarse por 64. Así win 133 indica una ventana de 8512 bytes, y win 178 indica 11392 bytes.

+0

En primer lugar, ¿por qué se hace esto? En segundo lugar, ¿hay alguna forma de que '' tcpdump' haga el escalado automático en la salida al ver el archivo volcado como lo hace Wireshark? –

+0

@Robert: Se hace de esta manera porque la especificación TCP/IP original proporcionó un campo de 16 bits para el tamaño de la ventana; cuando se encontró que esto era insuficiente, el mecanismo de escalado de ventana le permitió representar números más grandes sin tener que cambiar el tamaño del campo. No parece que haya una forma de mostrar tamaños de ventana escalados en 'tcpdump'; siempre puedes enviar un parche;) En su lugar, siempre puedes usar' tshark' (versión basada en texto de Wireshark). – caf

2

Además, si la herramienta (Wireshark o tcpdump, no importa) no ve la syn, tiene que imprimir el valor sin escala, que puede engañar

Cuestiones relacionadas