- - PR -
ブラウザからHTTPサーバへリクエスト時にTCPのRSTフラグがセットされる
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-05-24 10:33
いつもお世話になっております。
サーバ:WindowsXP HTTPサーバ:Apache1.3 ブラウザ:IE、FireFox ServletでWebアプリケーションを作成したのですが、パケットをキャプチャすると リクエストによって数回RSTフラグが送出されることがあります。 GETするイメージの数が多い時に多発しているような気がしますが、はっきりした ことは分かりません。 ウィンドウサイズの調整などで回避できるようなものでしょうか? アプリケーションの動きとしては問題ないのですが、IEだとRSTフラグで全画面再描画に なるみたいなので、それを解決したいのです。 よろしくお願いします。 | ||||
|
投稿日時: 2006-05-24 15:41
そもそもRSTを出しているのはサーバーですか、クライアントですか?
場合によっては中間のプロキシなどで出す事もありますが、そうした物が無い環境でも同様ですか? | ||||
|
投稿日時: 2006-05-25 07:40
以前TCP/IPドライバを実装した同僚に聞いた話ですが、Windowsは割りと頻繁にRSTフラグを使うそうですね。
RSTは通信の異常によりTCP内部状態が異常になったときに、相手の内部状態を初期状態に戻すために使われます。RSTが頻繁に発生していると言うことは、通信負荷によってパケットロストが発生していると言った事が考えられます。
それが問題になるような仕様で、WEBを使っている事が間違いだと思う。 | ||||
|
投稿日時: 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