[11] TCP リセット問題は、 HTTPパイプラインと TCP の動作に関する問題です。
[2] 鯖が TCP 接続をすぐに閉じると、
クライアントが最後の要求を読めない可能性があります。
鯖が完全に閉じた接続に対してクライアントが新しいデータ
(パイプライン化された次の要求) を送信して鯖が受信すると、
鯖の TCPスタックがリセット (RST
)
をクライアントに送信します。これをクライアントが受信すると、
クライアント側の HTTP 応用が読んで解釈する前にクライアントの
ack されていないデータを消してしまうことになります。 >>1
[3] この問題を回避するため、鯖は接続を次の手順で閉じます。 >>1
[7] この問題が TCP のみか、他のトランスポート層プロトコルにもあるのかは不明です >>1。
[9] クライアントは、失敗した接続 (鯖が最後の完全な応答で明示的に閉じたのでない接続) の後にパイプライン化された要求を再試行する場合には、 接続を確立した直後にパイプライン化してはなりません。 >>8