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


106

サイトの作成を依頼され、共同開発者の1人から、keep-aliveヘッダーを含める必要があると言われました。

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

msdn->

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

見つめている

ここに画像の説明を入力してください

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

興味がある人のためのps:

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


2
Pfff、私は講義でこれを見たことがありますが、私はよくわかりません。キープアライブはサーバーとユーザーのみにあると思いました。結局のところ、その間のすべては、それがHTTPであることさえ知らないはずであり、ヘッダーを見ることは言うまでもありません。
Noctua

MSDNから引用された声明はdrivelです。これは、あるクライアントなしキープアライブが存在しない場合は、新しい接続をオープンする必要があります。
ローン侯爵

また、Webサーバーやクライアントではなく、サイトを構築している場合は、キープアライブヘッダーは既に作成されています。
ローン侯爵

回答:


145

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

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

HTTPはrequest-responseと連動します。クライアントはサーバーに接続し、要求を実行して応答を取得します。キープアライブがない場合、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

たとえば、Hypertext Transfer Protocol(HTTP)キープアライブヘッダー(キープアライブヘッダー26162086の両方よりも詳しく説明されているHTTP / 2のドラフト)を参照してください。

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

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

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


「重複した接続」を定義する---->同時に意味します。(と私はあなたが言ったようので、同時接続数が削減されると思う:私は右だ......?「それはキープアライブヘッダーを使用しています原因接続Xがジョンのために予約されています。」
Royi Namir

1
つまり、サーバーが一度に100の接続を処理でき、それらのすべての接続がキープアライブを使用している場合、101番目の接続がダンプされるということです。
Royi Namir 2013

1
@Royiいいえ、ブラウザが特定のホストに対して行うキープアライブ接続の数はわかりません。また、ブラウザが開くのは1つだけであるとは言いませんでした。同時に行われるリクエストの量は制限されており、ブラウザごとに異なります。私は、ブラウザが使用するキープアライブ場合の接続を、それが代わりに火のことを意味N以上の要求N例の火災のために、(接続は、すべての応答後に閉じますデフォルトによって)接続N経由の要求N / Mだけ、あるいはMそれが終わっ複数の要求を発射することができるので、接続開かれた接続ごとに、使用量を減らすことができます。
CodeCaster 2013

1
(:-))あなたはあなたのコメントで言った:クライアントはキープアライブを使用するときに同時接続を少なくし、それは並列ではなくシリアルでリクエストを起動します。それがキープアライブとどのように関係するのか私には理解できません。
Royi Namir 2013

5
E、C、Bはセッションを保存しません。これらはルーターであり、セッションテーブルがなく、同じである必要はありません。同じTCPクライアントからサーバーへのセッションからの複数のパケットが異なるパスをたどる可能性があるためです。ルーターの役割は、最適なIPパスを選択してそれに応じてパケットを転送することです。そのため、トランスポート層(TCP / UDP)に到達することも、アプリケーション層に到達してキープアライブヘッダーを確認することもありません。つまり、基本的にキープアライブは明示的にクライアントとサーバー間で行われ、暗黙的にそれにより、セッション認識デバイス(ファイアウォールなど)が明示的なクライアントからサーバーへのセッションに開かれます
Amine Kadimi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.