2010年10月26日

[Apache-Users 7826]ApacheのHTTPページからIE8にてファイルダウンロード時にRSTが送られてきてダウンロードに失敗する

** Apache ユーザーズメーリングリスト **
** 注意:このメールへの返信は Apache-Users へ行きます **

はじめまして、ikdと申します。
現在、掲題の件で悩まされています。何かご存じの方がいらしたら、
アドバイスや確認事項などご指摘いただけますでしょうか。

【サーバ環境】

・OSはWindows2003ServerR2(32bit)
・NICはチーミングにより冗長化
・Apache 2.2( KeepAlive On, KeepAliveTimeout 5 )
→htdocs下に、試験用のhtmlファイルと、ダウンロード用のエクセルファイル(40KB程度)
 を配置。htmlファイルの内容は、ダウンロード用のエクセルファイルをダウンロードで
 きるよう、アンカータグのhrefにファイル名を指定したもののみがあるページとなって
 いる。


クライアント環境(Windows7, IE8)にWiresharkをいれて確認したところ、クライアント
からサーバへGetを投げた後、サーバからクライアントへレスポンスし、さらに200 OKの
パケットを送信した後、サーバからクライアント端末へ向けてRSTパケットが送信されて
いました。

さらに、別環境(サーバスペック異なる、OSは同じ、チーミングなし)にて、上記環境か
らコピーしてきたApache2.2モジュール・設定ファイルをそのまま用いて確認したところ、
今度はRSTパケットはサーバから送られてこず、クライアント端末のIE8がファイルのダウ
ンロードを完了し、ダウンロード完了の画面になったタイミングで、クライアント側から
サーバに対しRSTパケットを投げていました。

また、送受信しているパケットを比較すると、この別環境では、サーバからクライアント
へ200 OKを送った後、さらにFIN/ACKを送信しています。これは問題が発生する環境では
みられませんでした。


Microsoftに確認したところ、

・ダウンロード処理中にサーバからRSTパケットを受けてしまうと、IEはダウンロードが
 正常に終了しなかったと判断し、ダウンロードの処理を中断してしまう。
・本来なら、RSTパケットは、ダウンロード完了のタイミングでクライアントからサーバ
 へ送信するもの。

なのだそうです。

さらに問題の起きる環境を確認したところ、KeepAliveをOffにすると、RSTパケットが
サーバから送られてこなくなり、また、KeepAliveをOnにして、KeepAliveTimeoutを
60といった値にすると、RSTパケットは60秒後にサーバから送信されてくるようになっ
たため、Apacheの設定も疑われている状態です。


問題が発生する環境で動いているApacheモジュールで、「サーバからRSTパケットを送
りつける」という動作が再現しない以上、この問題はApacheではなく、環境要因による
ものと考えております。KeepAliveTimeoutの値を変更することで、RSTパケット送信の
タイミングが変わってくるので、NIC、またはNICのチーミングに問題があるのでは、
と考えておりますがいかがでしょうか。

ほか、何か調査するべき点などあれば、ご教示いただけると幸いです。
よろしくお願いします。
--
入退会・変更・配送一時停止は以下へ
http://www.apache.jp/mailman/listinfo/apache-users


投稿者 xml-rpc : 2010年10月26日 07:56
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/99497
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。