web-dev-qa-db-ja.com

キープアライブヘッダーの説明

サイトを構築するように依頼され、共同開発者の1人から、キープアライブヘッダーを含める必要があると言われました。

よく私はそれについてたくさん読みましたが、まだ質問があります。

msdn->

サーバーが各リクエストのコンテンツをより迅速に返すことができるため、クライアントがWebページコンテンツに対して複数のリクエストを行う場合、オープン接続によりパフォーマンスが向上します。それ以外の場合、サーバーはリクエストごとに新しい接続を開く必要があります

見つめている

enter image description here

  • IIS(F)がkeep aliveヘッダーを送信する場合(またはユーザーがkeep-alive)を送信する場合、それは(ECB)セッション専用の接続を保存しますか?
  • この情報はどこに保存されますか( "この接続は" Royi ")に属しますか?
  • 他の誰もその接続を使用できないことを意味しますか
  • もしそうなら-それはキープアライブヘッダーを意味します-重複する接続ユーザーの数を減らしますか?
  • もしそうなら、接続はどのくらいの間保存されますか? (つまり、キープアライブを設定すると、いつまで「キープ」しますか?)

追伸興味のある人のために:

このサンプルページ をクリックすると、キープアライブヘッダーが返されます

102
Royi Namir

この情報はどこに保存されますか(「この接続はコンピューターAとサーバーFの間です」)。

TCP接続は、送信元IPとポート、および宛先IPとポートによって認識されます。 OS、すべての中間セッション対応デバイス、およびサーバーのOSは、これにより接続を認識します。

HTTPは要求と応答で機能します。クライアントはサーバーに接続し、要求を実行して応答を取得します。キープアライブを使用しない場合、HTTPサーバーへの接続は各応答後に閉じられます。 HTTPキープアライブを使用すると、特定の基準が満たされるまで、基になるTCP接続を開いたままにします。

これにより、単一のTCP接続で複数の要求と応答のペアが可能になり、TCPの比較的遅い接続起動の一部がなくなります。

IIS(F)がキープアライブヘッダーを送信する(またはユーザーがキープアライブを送信する)場合、(E、C、B)は接続を保存します

いいえ。ルーターはセッションを記憶する必要はありません。実際、同じTCPセッションに属する複数のTCPパケットは、すべて同じルーターを通過する必要はありません。つまり、TCPが管理するためです。ルーターは最適なIPパスを選択し、パケットを転送するだけです。キープアライブは、クライアント、サーバー、およびその他の中間セッション対応デバイス専用です。

これは私のセッション専用ですか?

他の誰もその接続を使用できないことを意味しますか

これは TCP接続の意図 です。これは、これらの2者のみを対象としたエンドツーエンド接続です。

もしそうなら-それはキープアライブヘッダーを意味します-重複する接続ユーザーの数を減らしますか?

「重複接続」を定義します。次のような長所と短所については、 HTTP持続接続 を参照してください。

  • 同時に開いている接続が少ないため、CPUとメモリの使用量が少なくなります。
  • 要求と応答のHTTPパイプラインを有効にします。
  • ネットワークの輻輳の削減(TCP接続の削減)。
  • 後続のリクエストでのレイテンシーの削減(ハンドシェイクなし)。

もしそうなら、接続はどのくらいの間保存されますか? (つまり、キープアライブを設定すると、いつまで「キープ」しますか?)

典型的なキープアライブ応答は次のようになります。

Keep-Alive: timeout=15, max=100

ハイパーテキスト転送プロトコル(HTTP)キープアライブヘッダー を参照してください(キープアライブヘッダーが 2616 と-の両方よりも詳細に説明されているHTTP/2のドラフト) 2086 ):

  • ホストは、timeoutパラメーターの値を、ホストがアイドル状態の接続を閉じる前に開いたままにしておく時間に設定します。ホストがデータを送受信しない場合、接続はアイドル状態です。

  • maxパラメーターは、クライアントが行う要求の最大数、またはサーバーが永続的な接続で行われることを許可する要求の最大数を示します。指定された数の要求と応答が送信されると、パラメーターを含むホストは接続を閉じることができます。

ただし、サーバーは、任意の時間または要求の数(現在の要求への応答を返す限り)の後、接続を自由に閉じることができます。これがどのように実装されるかは、HTTPサーバーによって異なります。

140
CodeCaster