1. ホーム
  2. http

[解決済み] Keep-aliveヘッダーの明確化

2022-10-24 11:13:18

質問

あるサイトの構築を依頼され、共同開発者の一人が、keep-aliveヘッダを含める必要があると教えてくれました。

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

msdn ->

<ブロッククオート

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

を見てみると

  • IIS(F)が送信する場合 keep alive ヘッダ( を送信するか、ユーザがキープアライブ ) , それはつまり ( E , C , B ) 自分のセッションだけの接続を保存しますか?
  • この情報はどこに保存されるのでしょうか ( この接続はRoyiに属しています。 ) ?
  • 他の誰もその接続を使用できないということでしょうか?
  • もしそうなら、keep alive-header は、重複する接続のユーザーを減らすということですか?
  • もしそうなら、どのくらいの期間、接続が私に保存されるのでしょうか?(言い換えれば、もし私が keep alive- "keep" を設定した場合、いつまでですか?)

p.s. 興味のある方のために :

クリック このサンプルページ はキープアライブヘッダを返します。

どのように解決するのですか?

<ブロッククオート

この情報はどこに保存されているのですか? A とサーバ F ")ですか?

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

HTTPは、クライアントがサーバーに接続し、リクエストを行い、レスポンスを得るという、リクエスト・レスポンスで動作します。keep-aliveを使用しない場合、HTTPサーバーへの接続は各レスポンスの後に閉じられます。HTTP keep-alive を使用すると、特定の条件が満たされるまで、基盤となる TCP 接続を開いたままにしておくことができます。

これにより、1 つの TCP 接続で複数のリクエストとレスポンスのペアを使用できるようになり、TCP の比較的遅い接続の起動の一部を排除することができます。

IIS (F) が keep alive ヘッダーを送信する (またはユーザーが keep-alive を送信する) 場合、(E,C,B) は接続を保存することを意味するのでしょうか?

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

私のセッションのためだけなのでしょうか?

<ブロッククオート

他の人はその接続を使用できないということですか?

それは TCPコネクションの意図 を意図しているのです。

<ブロッククオート

もしそうなら、keep alive-header は、重複する接続ユーザーを減らすということでしょうか?

重複接続の定義 "重複接続"。以下を参照してください。 HTTP持続的接続 のような、いくつかのメリットとデメリットがあります。

  • CPU とメモリの使用量が少ない (同時に開く接続が少ないため)。
  • リクエストとレスポンスの HTTP パイプライニングを有効にします。
  • ネットワークの輻輳を軽減します (TCP コネクションの数を減らします)。
  • 後続のリクエストの待ち時間を短縮 (ハンドシェイクなし)。

もしそうなら、接続はどれくらいの期間保存されるのでしょうか?(言い換えれば、もし私がkeep alive- "keep"を設定した場合、いつまでですか?)

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

Keep-Alive: timeout=15, max=100

参照 ハイパーテキスト転送プロトコル (HTTP) の Keep-Alive ヘッダ を参照してください (キープアライブヘッダについて、HTTP/2 のドラフトでは、両者よりも詳細に説明されています。 2616 2086 ):

  • ホストが設定する timeout パラメータは、ホスト側がアイドル状態のコネクションを閉じたままにしておく時間を指定します。ホストによってデータが送受信されていない場合、接続はアイドル状態です。

  • max パラメータは、クライアントが行う、あるいはサーバが持続的な接続で行うことを許可するリクエストの最大数を表します。指定された数のリクエストとレスポンスが送信されると、このパラメータを含むホストは接続を終了することができます。

しかし、サーバーは任意の時間やリクエスト数の後に接続を閉じることができます (ただ、現在のリクエストに対するレスポンスを返している限りにおいて)。これがどのように実装されるかは、HTTP サーバーに依存します。