HTTP セッションの終了後、TCP 接続はどうなりますか?
たとえば、ウェブサーバーから静的ウェブページをロードした後
ありがとう
通常、HTTP セッションとは、サーバーが特定のユーザーとの関連付けを保持していることを指し、任意の長さになる可能性があります (たとえば、Cookie を関連付けトークンとして使用)。
したがって、HTTP セッションには通常、複数の TCP セッションが含まれます。非永続的な HTTP 接続の場合、すべての要求には独自の TCP セッションがあります (その後閉じられます)。一方、永続的な HTTP 接続の場合、TCP セッション内で複数の HTTP リソースを取得でき、いずれかの側でタイムアウトのしきい値に達すると、いずれかの側でセッションが閉じられます。
Persistent HTTP connections (Keep-Alive: true)に関するウィキペディアの記事
1 つの TCP 接続で複数の HTTP 要求を持つことができます。したがって、HTTP セッションを一連の HTTP 要求/応答として参照すると、TCP 接続が閉じられます。
TCP レベルでは、終了側が FIN フラグが設定されたパケットを送信し、反対側が ACK でこれを確認し、すぐにまたは最終的に独自の FIN を実行し、最初の側が ACK で再度確認します。FIN フラグではなく RST で接続が放棄される可能性もあります。最初の FIN を送信したポートは TIME_WAIT 状態になります。これは、その後に到着するパケットを拒否するために使用されます。そうしないと、新しい接続のパケットと誤解される可能性があります。タイムアウト後、ポートは TIME_WAIT 状態から CLOSED 状態に移行します。
編集: 正常終了は FIN フラグで示されます。