1. ホーム
  2. http

[解決済み】HTTP 1.0 vs 1.1

2022-03-31 21:26:34

質問

HTTP 1.0とHTTP 1.1の違いについて、どなたか簡単に教えていただけませんか? 私は両方のRFCにしばらく時間を費やしましたが、それらの間の多くの違いを引き出すことができませんでした。 Wikipediaにはこのように書かれています。

<ブロッククオート

http/1.1 (1997-1999)

デフォルトで持続的接続が有効になっており、プロキシとの相性も良い。また、リクエストパイプラインをサポートしており、複数のリクエストを同時に送信することができます。これにより、サーバーは作業負荷に備えることができ、要求されたリソースをより迅速にクライアントに転送することができる可能性があります。

でも、それだとあまり意味がない。 少々複雑な話なので、完全な答えを期待しているわけではないのですが、どなたかもう少し低いレベルで違いを簡単に教えていただけませんか?

つまり、HTTPサーバーまたはアプリケーションのいずれかを実装するために必要な情報を探しているのです。私はほとんど私が自分自身でそれを把握できるように正しい方向に後押しするために探しています。

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

プロキシ対応とホストフィールド。

HTTP 1.1では仕様上Hostヘッダが必須となっています。

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

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

このヘッダーは、プロキシサーバーを経由してメッセージをルーティングできるようにするため、また、ウェブサーバーが同じサーバー上の異なるサイトを区別できるようにするため、有用です。

つまり、blahblahlbah.com と helohelohelo.com の両方が同じ IP を指しているとします。 ウェブサーバーは Host フィールドを使用して、クライアントマシンがどちらのサイトを望んでいるかを区別することができます。

持続的な接続。

HTTP 1.1 では、持続的な接続も可能です。これは、同じ HTTP 接続で複数のリクエスト/レスポンスを持つことができることを意味します。

HTTP 1.0では、リクエストとレスポンスのペアごとに新しいコネクションを開く必要がありました。 そして、レスポンスがあるたびにコネクションを閉じなければなりませんでした。 このため、以下のような大きな効率上の問題がありました。 TCPスロースタート .

OPTIONSメソッドです。

HTTP/1.1 では、OPTIONS メソッドが導入されました。 HTTP クライアントはこのメソッドを使って、HTTP サーバーの能力を判断することができます。 これは主に、ウェブアプリケーションにおける Cross Origin Resource Sharing (クロスオリジンリソース共有) のために使用されます。

キャッシング。

HTTP 1.0 では、ヘッダによるキャッシュがサポートされていました。If-Modified-Since "ヘッダによるキャッシュをサポートしていました。

HTTP 1.1 では、「エンティティタグ」と呼ばれるものを使用することで、キャッシュのサポートが大幅に拡張されました。 2つのリソースが同じであれば、同じエンティティタグを持つことになります。

HTTP 1.1 では、If-Unmodified-Since、If-Match、If-None-Match 条件付きヘッダも追加されました。

また、Cache-Controlヘッダーのようなキャッシュに関連する追加項目もあります。

100 Continue ステータス。

HTTP/1.1 の新しいリターンコードとして、100 Continue があります。 これは、サーバがリクエストを処理できるかどうか、あるいはリクエストを処理する権限があるかどうかさえわからないときに、クライアントが大きなリクエストを送信するのを防ぐためのものです。 この場合、クライアントはヘッダーのみを送信し、サーバーはクライアントに 100 Continue, go ahead with the body と伝えます。

もっともっと

  • ダイジェスト認証、プロキシ認証
  • 追加された新しいステータスコード
  • 転送エンコーディングのチャンク化
  • 接続ヘッダー
  • 圧縮機能のサポート強化
  • その他多数