質問

HTTP 1.0とHTTP 1.1の違いの概要を教えてください。私は両方のRFCでしばらく時間を費やしましたが、それらの間の多くの違いを引き出すことができませんでした。ウィキペディアはこう言っています:

  

HTTP / 1.1(1997-1999)

     

現在のバージョン。永続的な接続はデフォルトで有効になっており、プロキシでうまく機能します。また、リクエストのパイプライン化をサポートし、複数のリクエストを同時に送信できるため、サーバーがワークロードに備えて、リクエストされたリソースをより迅速にクライアントに転送できます。

しかし、それは私にはあまり意味がありません。これはやや複雑な主題であることがわかっているので、完全な答えを期待していませんが、誰かが少し低いレベルで違いの簡単な概要を教えてもらえますか?
これは、HTTPサーバーまたはアプリケーションを実装するために知っておく必要がある情報を探しているということです。私は主に正しい方向のナッジを探しているので、自分でそれを理解することができます。

役に立ちましたか?

解決

プロキシサポートとホストフィールド:

HTTP 1.1には、仕様により必要なHostヘッダーがあります。

HTTP 1.0は公式にはHostヘッダーを必要としませんが、追加するのに問題はなく、多くのアプリケーション(プロキシ)はプロトコルバージョンに関係なくHostヘッダーを表示することを期待しています。

例:

GET / HTTP/1.1
Host: www.blahblahblahblah.com

このヘッダーは、プロキシサーバー経由でメッセージをルーティングできるため、またWebサーバーが同じサーバー上の異なるサイトを区別できるため、便利です。

つまり、blahblahlbah.comとhelohelohelo.comが両方とも同じIPを指している場合です。 Webサーバーは、ホストフィールドを使用して、クライアントマシンが必要とするサイトを区別できます。

永続的な接続:

HTTP 1.1では、永続的な接続を使用することもできます。つまり、同じHTTP接続で複数の要求/応答を行うことができます。

HTTP 1.0では、リクエスト/レスポンスのペアごとに新しい接続を開く必要がありました。そして、各応答の後、接続は閉じられます。これにより、 TCPスロースタートが原因で、大きな効率の問題が発生します。

オプションの方法:

HTTP / 1.1はOPTIONSメソッドを導入します。 HTTPクライアントはこのメソッドを使用して、HTTPサーバーの機能を判別できます。主にWebアプリケーションでのクロスオリジンリソース共有に使用されます。

キャッシュ:

HTTP 1.0は、ヘッダー:If-Modified-Sinceを介したキャッシュをサポートしていました。

HTTP 1.1は、「エンティティタグ」と呼ばれるものを使用して、キャッシュサポートを大幅に拡張しています。 2つのリソースが同じ場合、それらは同じエンティティタグを持ちます。

HTTP 1.1は、If-Unmodified-Since、If-Match、If-None-Match条件付きヘッダーも追加します。

Cache-Controlヘッダーなど、キャッシュに関連する追加機能もあります。

100継続ステータス:

HTTP / 1.1 100 Continueに新しい戻りコードがあります。これは、サーバーがリクエストを処理できるかどうか、またはリクエストの処理を許可されているかどうかが不明な場合に、クライアントが大きなリクエストを送信しないようにするためです。この場合、クライアントはヘッダーのみを送信し、サーバーはクライアント100に続行を伝え、本文を続けます。

その他:

  • ダイジェスト認証とプロキシ認証
  • 追加の新しいステータスコード
  • チャンク転送エンコード
  • 接続ヘッダー
  • 強化された圧縮サポート
  • はるかに。

他のヒント

 HTTP 1.0(1994)

  • まだ使用中です
  • チャンクを処理できないクライアントが使用できます (または圧縮された)サーバー応答

 HTTP 1.1(1996- 2015)

  • バージョン1.0の多くの拡張機能を正式化
  • 永続的なパイプライン接続をサポート
  • チャンク転送、圧縮/解凍をサポート
  • 仮想ホスティング(複数のドメインをホストする単一のIPアドレスを持つサーバー)をサポートしています
  • 複数の言語をサポート
  • バイト範囲の転送をサポートします。中断されたデータを再開するのに便利 転送

HTTP 1.1は、HTTP 1.0の拡張機能です。以下にリストします 4つの主要な改善:

  1. 複数のドメインを許可することにより、IPアドレスを効率的に使用 単一のIPアドレスから提供されます。

  2. Webブラウザーが複数の 単一の持続的接続を介したリクエスト。

  3. 次のサポートにより、動的に生成されたページの高速応答 チャンクエンコーディング。応答をその前に送信できます。 全長は既知です。
  4. キャッシュを追加することにより、応答が速くなり、帯域幅が大幅に節約されます サポート。

ささいなアプリケーション(たとえば、Web対応の温度計から散発的に温度値を取得する)では、HTTP 1.0はクライアントとサーバーの両方に適しています。約20行のコードで、最低限のソケットベースのHTTP 1.0クライアントまたはサーバーを記述できます。

より複雑なシナリオでは、HTTP 1.1が最適です。より複雑なHTTP 1.1プロトコルの複雑さを処理するために、コードサイズが3〜5倍に増加することを期待してください。 HTTP 1.1では、さまざまなヘッダーを作成、解析、および応答する必要があるため、主に複雑さが生じます。クライアントにHTTPライブラリを使用させるか、サーバーにWebアプリケーションサーバーを使用させることで、この複雑さからアプリケーションを保護できます。

重要な互換性の問題は、永続的な接続のサポートです。最近、「サポート」されているサーバーで作業しました。 HTTP / 1.1、ただしクライアントがHTTP / 1.0リクエストを送信したときに接続を閉じることができませんでした。 HTTP / 1.1をサポートするサーバーを作成するときは、HTTP / 1.0のみのクライアントでも動作することを確認してください。

頭から思い出せる最初の違いの1つは、同じサーバーで実行されている複数のドメイン、部分的なリソースの取得です。これにより、リソースのダウンロードを取得して高速化できます(ほとんどすべてのダウンロードアクセラレータありません。)

Webサイトなどのようなアプリケーションを開発する場合、違いについてあまり心配する必要はありませんが、 GET の違いを少なくとも POST 動詞。

ブラウザを開発する場合は、はい、HTTPサーバーを開発しようとしている場合と同様に、完全なプロトコルを知る必要があります。

HTTPプロトコルのみを知りたい場合は、1.0ではなくHTTP / 1.1から始めることをお勧めします。

HTTP 1.1は、インターネットのTCP / IPプロトコルスイート上で実行されるWorld Wide WebアプリケーションプロトコルであるHypertext Transfer Protocolの最新バージョンです。 HTTP 1.0と比較すると、HTTP 1.1は元のHTTPよりも高速なWebページの配信を提供し、Webトラフィックを削減します。

Webトラフィック例:たとえば、サーバーにアクセスしている場合。同時に、非常に多くのユーザーがデータのためにサーバーにアクセスしているため、サーバーがハングする可能性があります。これはWebトラフィックです。

1.0と比較して、1.1はWebトラフィックを削減します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top