3

HTTP 接続のクローズについて 2 つの質問があります。

  1. クライアントが Connection: close で HTTP 要求を送信する場合、クライアントが応答を受信した後に TCP FIN を送信するのは、HTTP サーバーまたはクライアントの責任ですか?

  2. クライアントが不適切な形式の HTTP リクエストを送信し、サーバーが 400 BAD REQUEST を送信する場合、サーバーで接続を閉じるのがベスト プラクティスですか (HTTP リクエストに接続: keep-alive がある場合でも)、それとも接続を維持するのがベスト プラクティスですか?まだ活動中?

私の質問に答えてくれてありがとう?

4

1 に答える 1

5
  1. サーバーが 400 Bad Request を受信すると、キープアライブ ヘッダーを含む応答を送信します。これは、クライアントが別の要求を送信したい場合、既存の接続を使用できるためです (この接続は特定の時間内にシャットダウンされます)。有効期限があります)。Keep-Alive ヘッダーは、TCP 接続要求でネットワークを飽和状態にしないことを目的としています。あなたは基本的に、「2分間お話しします。あなたが私に送ってくれるものは何でも、このつながりで答えます」と言います。

  2. サーバーは、ユーザーからコマンドを受け取るオブジェクトにすぎません。あなたは彼に尋ねます、彼はそうするかどうか。TCP FIN は、接続をシャットダウンするためにサーバーに送信するものですが、サーバーと通信したくない場合は選択します。クライアントは最初の FIN を送信し、サーバーがそれを取得したことを確認するために ACK を受信します。次に、サーバーは独自の FIN を起動し、ACK を待ちます。すべてが問題なければ、あなたとあなたのサーバーはもはや友達ではありません。

于 2014-08-05T07:52:44.940 に答える