2010-07-15 10 views
5

ich HTTP-Verkehrs mit tcpdump bin Erfassung und bin an Start langsam TCP und wie Fenstergrößen Erhöhung:wireshark und tcpdump -r: seltsame TCP-Fenstergrößen

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

Wenn ich sehe die Dump-Datei mit dem Wireshark Progression der Fenstergrößen sieht normal aus, dh 5840, 5888, 5888, 8576, 11264, etc ...

Aber wenn ich die Dump-Datei über

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

ich sehe, was scheint unsinnig Fenster zu sein Größen (IP-Adressen der Kürze halber weggelassen):

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

Gibt es eine Möglichkeit normal/absolute Fenstergrößen auf der Kommandozeile zu bekommen?

Antwort

8

Die Fenstergrößen sind korrekt - sie sind nur unskaliert.

Der Verbindungsinitiator hat einen wscale (Fensterskalierungsfaktor) von 7 festgelegt, sodass die nachfolgenden Werte win mit 128 multipliziert werden müssen, um die Fenstergröße in Byte zu erhalten. So zeigt die win 46 ein Fenster von 5888 Bytes an.

Die Verbindung hat einen Empfänger wscale von 6 eingestellt, so dass ihre win Werte von 64 multipliziert werden müssen also win 133 zeigt ein Fenster von 8512 Bytes und zeigt win 178 11392 Bytes.

+0

Erste täuschen kann, warum geschieht dies? Zweitens, gibt es einen Weg, wie ich 'tcpdump' erreichen kann, um die Skalierung in der Ausgabe automatisch zu machen, wenn ich die Dump-Datei so wie Wireshark sehe? –

+0

@Robert: Es ist so gemacht worden, weil die ursprüngliche TCP/IP-Spezifikation ein 16-Bit-Feld für die Fenstergröße lieferte; Wenn sich dies als unzureichend erwies, erlaubte der Fensterskalierungsmechanismus die Darstellung größerer Zahlen, ohne dass die Feldgröße geändert werden musste. Es scheint nicht, dass es eine Möglichkeit gibt, skalierte Fenstergrößen in 'tcpdump' anzuzeigen - Sie könnten immer einen Patch senden;) Sie könnten stattdessen' tshark' (Wiresharks textbasierte Version) verwenden. – caf

2

Auch, wenn das Werkzeug (wireshark oder tcpdump, es spielt keine Rolle) sehen nicht die syn, es der nicht skalierten Wert drucken, durch die Sie