281

HTTP 1.0 と HTTP 1.1 の違いを簡単に説明してくれませんか? 私は両方の RFC にしばらく時間を費やしましたが、それらの間の多くの違いを引き出すことができませんでした。ウィキペディアは次のように述べています。

HTTP/1.1 (1997-1999)

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

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

4

7 に答える 7

392

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

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 続けて本体を送信します。

はるかに:

  • ダイジェスト認証とプロキシ認証
  • 追加の新しいステータス コード
  • チャンク転送エンコーディング
  • 接続ヘッダー
  • 強化された圧縮サポート
  • はるかに。
于 2008-10-29T14:33:30.000 に答える
19

 HTTP 1.0 (1994)

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

 HTTP 1.1 (1996-2015)

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

HTTP 1.1 は、HTTP 1.0 を拡張したものです。主な改善点は次の 4 つです。

  1. 1 つの IP アドレスから複数のドメインにサービスを提供できるようにすることで、IP アドレスを効率的に使用します。

  2. Web ブラウザーが単一の永続的な接続を介して複数の要求を送信できるようにすることで、応答が高速化されます。

  3. チャンク エンコーディングのサポートにより、動的に生成されたページの応答を高速化します。これにより、全体の長さがわかる前に応答を送信できます。
  4. キャッシュ サポートを追加することで、応答が速くなり、帯域幅が大幅に節約されます。
于 2015-10-29T23:47:09.870 に答える
12

些細なアプリケーション (たとえば、Web 対応の温度計から散発的に温度値を取得する) の場合、HTTP 1.0 はクライアントとサーバーの両方で問題ありません。必要最小限のソケットベースの HTTP 1.0 クライアントまたはサーバーを約 20 行のコードで作成できます。

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

于 2008-10-29T14:13:43.813 に答える
8

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

于 2008-10-29T14:34:15.300 に答える
5

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

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

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

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

于 2008-10-29T13:59:23.530 に答える
2

HTTP 1.1 の仕様にはホスト ヘッダーが付属していますが、HTTP 1.0 には公式にはホスト ヘッダーがありませんが、ホスト ヘッダーの追加を拒否していません。

ホスト ヘッダーは、クライアントがプロキシ サーバー全体にメッセージをルーティングできるようにするために役立ちます。また、1.0 バージョンと 1.1 バージョンの HTTP の主な違いは次のとおりです。

  1. HTTP 1.1 には永続的な接続が付属しており、同じ HTTP 接続で複数の要求または応答を持つことができると定義されています。
  2. HTTP 1.0 では、リクエストとレスポンスごとに新しい接続を開く必要があります。
  3. HTTP 1.0 にはプラグマがありますが、HTTP 1.1 にはプラグマに似た Cache-Control があります。
于 2020-02-18T05:53:06.517 に答える