ブラウザは、HTTP要求ごとに新しいTCP接続を作成しますか?


23

したがって、HTTPは基本的にTCP上の単なるテキストプロトコルであり、TCPは状態/接続ベースであることを知っています。つまり、ブラウザーはHTTP要求を行う前にTCPを介してサーバーに接続する必要があります。質問:ブラウザは通常、HTTP要求ごとに新しいTCP接続を作成しますか?

ユーザーがそのサーバーで閲覧している限り、ブラウザはTCPリクエストを開いてそれを維持しますが、サーバーはそれを処理するために大量の最大接続を使用する必要があります。ただし、ブラウザーが各リクエストに対して接続を作成し、ユーザーが同じサーバーで多くの情報を閲覧する場合、これは無駄に思えます。通常はどのように機能しますか?たぶん、タイマーを使用して?

回答:


30

HTTP / 0.9(もう使用されていません)では、各要求は個別のTCP接続を使用し、接続を閉じることで応答の終了が通知されました。

HTTP / 1.0では、個別の接続が依然として公式のデフォルトです。ただし、Connection: Keep-Aliveサーバーがサポートしている場合、非公式ですが非常に広くサポートされているリクエストヘッダーを使用して、永続的な接続をリクエストできます。

HTTP / 1.1では、永続的な接続がデフォルトになり、古い単一要求の動作を明示的に要求する必要があります。通常、複数(2〜5)の永続的な接続が使用されます。

(オプションでリクエストをパイプライン処理することもできますが、これは実装が難しく、解決するよりも多くの問題(ヘッドオブラインブロッキングなど)が発生するため、誰もHTTP / 1.xパイプラインを使用しません。)

HTTP / 2(別名SPDY)は、同時に多くの要求を多重化するように特別に設計されました。応答が任意の順序で、さらには同時に到着できるようにするフレーミング/パケット化レイヤーがあります。

リソース:ウィキペディアの記事およびRFC 2616のセクション8.1



6

「Connection:Keep-Alive」ヘッダーがあります。詳細については、enwikiを参照してください。

Wiresharkを使用して、接続をキャプチャおよび分析し、すべてのヘッダーを表示できます。


FiddlerではなくWiresharkを使用する理由
Pacerier

3
Fiddlerは1です。オープンソースソフトウェアではありません。2. Windowsのみ。
Vi。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.