web-dev-qa-db-ja.com

Wireshark TCPウィンドウサイズ値

Wiresharkを使用してアプリケーションをデバッグし、TCP=ウィンドウサイズの値が通信の片側で縮小するのを監視しています。

パケットのTCP=セクションに「ウィンドウサイズの値:1」と表示されている場合、それは送信元のウィンドウサイズが1か、宛先のウィンドウサイズが1であることを意味しますか?片側が他の人が処理できる、私はそれがどれかを知っていることを確認したいだけです。

1 192.168.0.1-> 192.168.0.100、Modbus/TCP、長さ:66、ウィンドウサイズ値:1

2 192.168.0.100-> 192.168.0.1、TCP、長さ:60、ウィンドウサイズ値:92

3 192.168.0.100-> 192.168.0.1 TCP、長さ:310、ウィンドウサイズ値:92

4 192.168.0.1-> 192.168.0.100 TCP、長さ:54、ウィンドウサイズ値:0

それで192.168.0.1のウィンドウサイズは0ですか、それとも192.168.0.100のウィンドウが0であると報告していますか?ありがとう。

2
T Vernon

AからBまでのパケットのウィンドウサイズは、Aでパケットを受信するために使用できるバッファスペースの量を示します。したがって、Bがウィンドウサイズ1のパケットを受信すると、Aに送信できるバイト数をBに通知します。

ウィンドウサイズについて知っておく価値のあるいくつかの詳細は次のとおりです。

  • ウィンドウサイズは拡大縮小できます。接続の開始時のSYNパケットは、スケーリング係数を示します。 1バイトのみのウィンドウサイズはありそうもありません。より可能性の高い説明は、それが何らかの係数でスケーリングされていることです。たとえば、スケーリング係数が2048の場合、1はウィンドウが2048バイトであることを示します。
  • ウィンドウサイズは、そのパケットのACK番号を基準にして測定されます。したがって、アプリケーションが受信バッファーから読み取っていない場合、一連のACKパケットはACK [の数を増やし、ウィンドウサイズを減らして、ACK number + window size * scaling factorは(ほぼ)一定のままです。
3
kasperd

TCPヘッダーのウィンドウサイズフィールドは、送信者(この場合は192.168.0.1)が受信する予定のバイト数を示します。

0
imlepid