- PR -

ブラウザからHTTPサーバへリクエスト時にTCPのRSTフラグがセットされる

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/10/25
投稿数: 5
投稿日時: 2006-05-24 10:33
いつもお世話になっております。
サーバ:WindowsXP
HTTPサーバ:Apache1.3
ブラウザ:IE、FireFox

ServletでWebアプリケーションを作成したのですが、パケットをキャプチャすると
リクエストによって数回RSTフラグが送出されることがあります。
GETするイメージの数が多い時に多発しているような気がしますが、はっきりした
ことは分かりません。

ウィンドウサイズの調整などで回避できるようなものでしょうか?
アプリケーションの動きとしては問題ないのですが、IEだとRSTフラグで全画面再描画に
なるみたいなので、それを解決したいのです。

よろしくお願いします。
hebikuzure
ベテラン
会議室デビュー日: 2006/03/11
投稿数: 56
投稿日時: 2006-05-24 15:41
そもそもRSTを出しているのはサーバーですか、クライアントですか?
場合によっては中間のプロキシなどで出す事もありますが、そうした物が無い環境でも同様ですか?
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2006-05-25 07:40
以前TCP/IPドライバを実装した同僚に聞いた話ですが、Windowsは割りと頻繁にRSTフラグを使うそうですね。

RSTは通信の異常によりTCP内部状態が異常になったときに、相手の内部状態を初期状態に戻すために使われます。RSTが頻繁に発生していると言うことは、通信負荷によってパケットロストが発生していると言った事が考えられます。

引用:

アプリケーションの動きとしては問題ないのですが、IEだとRSTフラグで全画面再描画に
なるみたいなので、それを解決したいのです。


それが問題になるような仕様で、WEBを使っている事が間違いだと思う。
未記入
会議室デビュー日: 2005/10/25
投稿数: 5
投稿日時: 2006-05-25 10:19
ご回答ありがとうございます。

>そもそもRSTを出しているのはサーバーですか、クライアントですか?
>場合によっては中間のプロキシなどで出す事もありますが、そうした物が無い環境でも>同様ですか?
プロキシは通していません。開発環境のネットワーク内です。
最初にフラグをセットしているのはクライアントです。
>通信負荷によってパケットロストが発生していると言った事が考えられます。
同じネットワークセグメントでやってるので、パケロスではないです。

パケットダンプはこんな感じです。

イメージをGETリクエストした後、(FIN, ACK)を送っています。
FireFoxでも同じでしたので、HTMLの構文かデータサイズか、イメージの属性か、
ApacheのKeep-Aliveなどの設定か、いずれにしてもブラウザのせいではないようです。
画像の少ない小さいページではRSTは送られません。

Frame 5 (256 bytes on wire, 256 bytes captured)
Transmission Control Protocol, Src Port: http (80), Dst Port: 1190 (1190), Seq: 1, Ack: 495, Len: 202
Source port: http (80)
Destination port: 1190 (1190)
Sequence number: 1 (relative sequence number)
Next sequence number: 203 (relative sequence number)
Acknowledgement number: 495 (relative ack number)
Header length: 20 bytes
Flags: 0x0018 (PSH, ACK)
Window size: 65041
Checksum: 0x0b15 [correct]
SEQ/ACK analysis
This is an ACK to the segment in frame: 4
The RTT to ACK the segment was: 0.007750000 seconds
Hypertext Transfer Protocol
Protocol Info
HTTP GET /img/hoge.gif HTTP/1.1
----------------------------------------------------------------
Frame 6 (501 bytes on wire, 501 bytes captured)
Transmission Control Protocol, Src Port: 1190 (1190), Dst Port: http (80), Seq: 495, Ack: 203, Len: 447
Source port: 1190 (1190)
Destination port: http (80)
Sequence number: 495 (relative sequence number)
Next sequence number: 942 (relative sequence number)
Acknowledgement number: 203 (relative ack number)
Header length: 20 bytes
Flags: 0x0018 (PSH, ACK)
Window size: 65333
Checksum: 0xa01d [incorrect, should be 0x4c6f]
SEQ/ACK analysis
This is an ACK to the segment in frame: 5
The RTT to ACK the segment was: 0.111680000 seconds
Hypertext Transfer Protocol
Protocol Info
TCP 1190 > http [FIN, ACK] Seq=942 Ack=203 Win=65333 [TCP CHECKSUM INCORRECT] Len=0
----------------------------------------------------------------
Frame 7 (54 bytes on wire, 54 bytes captured)
Transmission Control Protocol, Src Port: 1190 (1190), Dst Port: http (80), Seq: 942, Ack: 203, Len: 0
Source port: 1190 (1190)
Destination port: http (80)
Sequence number: 942 (relative sequence number)
Acknowledgement number: 203 (relative ack number)
Header length: 20 bytes
Flags: 0x0011 (FIN, ACK)
Window size: 65333
Checksum: 0x9e5e [incorrect, should be 0xc300]
Protocol Info
HTTP HTTP/1.1 200 OK (GIF89a)[Unreassembled Packet]
----------------------------------------------------------------
Frame 8 (1514 bytes on wire, 1514 bytes captured)
Transmission Control Protocol, Src Port: http (80), Dst Port: 1190 (1190), Seq: 203, Ack: 942, Len: 1460
Source port: http (80)
Destination port: 1190 (1190)
Sequence number: 203 (relative sequence number)
Next sequence number: 1663 (relative sequence number)
Acknowledgement number: 942 (relative ack number)
Header length: 20 bytes
Flags: 0x0010 (ACK)
Window size: 64594
Checksum: 0x0c89 [correct]
SEQ/ACK analysis
This is an ACK to the segment in frame: 6
The RTT to ACK the segment was: 0.013726000 seconds
Hypertext Transfer Protocol
Compuserve GIF, Version: GIF89a
Version: GIF89a
Screen width: 600
Screen height: 100
Global settings: (Global color table present) (7 bits per color) (8 bits per pixel)
Background color index: 0
Global color map: 000000000000000000000000000000000000000000000000...
Extension: Graphics Control
Image
[Unreassembled Packet: GIF image]
Protocol Info
TCP 1190 > http [RST, ACK] Seq=943 Ack=1663 Win=0 Len=0
----------------------------------------------------------------
Frame 9 (54 bytes on wire, 54 bytes captured)
Transmission Control Protocol, Src Port: 1190 (1190), Dst Port: http (80), Seq: 943, Ack: 1663, Len: 0
Source port: 1190 (1190)
Destination port: http (80)
Sequence number: 943 (relative sequence number)
Acknowledgement number: 1663 (relative ack number)
Header length: 20 bytes
Flags: 0x0014 (RST, ACK)
Window size: 0
Checksum: 0xbc7e [correct]
SEQ/ACK analysis
This is an ACK to the segment in frame: 8
The RTT to ACK the segment was: 0.000132000 seconds
Protocol Info
HTTP Continuation or non-HTTP traffic

1

スキルアップ/キャリアアップ(JOB@IT)