インターネットを使用している場合は、HTTP または HTTPS という用語に遭遇したことがあるでしょう。特に現在アクティブな数十億の Web サイトを考慮すると、これは最も閲覧された手紙でもあります。
HTTP または HyperText Transfer Protocol の頭字語です。 これはクライアント側とサーバーの両方のプロトコルとして機能し、インターネット上でメッセージがどのように送信され、構築されるかを定義します。
主なポイント
- HTTP 1.0 では接続ごとに 1.1 つの要求のみが許可されますが、HTTP XNUMX では複数の要求が許可されます。
- HTTP 1.1 は永続的な接続をサポートしているため、Web サイトの読み込みを高速化できますが、HTTP 1.0 はサポートしていません。
- HTTP 1.1 は HTTP 1.0 よりも効率的なヘッダー圧縮を備えているため、帯域幅の使用量が削減されます。
HTTP 1.0 と HTTP 1.1 の比較
HTTP 1.0 は、1996 年に導入された HTTP プロトコルの最初のバージョンです。これは、要求と応答のベースで動作するシンプルでステートレスなプロトコルです。 HTTP 1.1 は、1999 年に導入された HTTP プロトコルの最も広く使用されているバージョンです。これは、永続的な接続、キャッシュ、パイプライン処理、チャンク転送エンコーディングのサポートなど、いくつかの新機能を導入した HTTP 1.0 の改良バージョンです。

1996 年、HTTP/1.0 が正式に導入され、承認されました。 それ以来、その人気は急上昇しています。
HTTPv1.0 では基本的な認証 (チャレンジ/レスポンス制御) のみが提供されます。 この手法の主な問題は、ユーザー名とパスワードが暗号化されていないため、時間の制約がなく、スパイされやすくなっているということです。
ステータス コードは 16 個しかありませんでした。
HTTP 1.1 は永続的な接続も提供します。これは、多くの応答と要求を同じ HTTP 接続で送信できることを意味します。
OPTIONS メソッドは HTTP/1.1 で新しく追加されました。 この手法は、HTTP クライアントが HTTP サーバーの機能を検出するために簡単に使用できます。 これは主に、クロスオリジン リソース共有のための Web アプリケーションで使用されます。
比較表
比較のパラメータ | HTTP 1.0 | HTTP 1.1 |
---|---|---|
ステータスコード | 定義できるステータス コードは 16 あります。 ただし、エラー ポップアップは十分に正確ではありません。 | 24 のステータス コードを指定できるため、エラー レポートがより高速かつ効率的になります。 |
認証メカニズム | パスワードとユーザー名もクリア テキストまたは base64 エンコードで送信されるため、基本認証メカニズムは安全ではありません。 | ダイジェスト認証とNTLM認証を利用しているため、比較的安全です。 |
キャッシング | If-Modified-Since ヘッダーは、キャッシングを支援するために使用されます。 | キャッシュ制御のようないくつかの追加ヘッダーを使用します。 |
化する強力なツール群 | キャッシュをサポートして、より多くのページをより迅速に提供します。 | 「ホストごとに XNUMX つの接続」という要件の回避策として、スプライト、連結、インライン化、ドメイン シャーディングなどの多くの最適化が利用されています。 |
主な機能 | TCP 接続ごとに XNUMX つの要求と応答しかありません。 | これにより、接続の再利用が可能になります。つまり、TCP 接続ごとに多くの要求と応答を送受信できます。 |
HTTP 1.0 とは何ですか?
HTTPv1.0 では基本的な認証 (チャレンジ/レスポンス制御) のみが提供されます。 この手法の主な問題は、ユーザー名とパスワードが暗号化されていないため、スパイ行為を受けやすく、時間の制約がないことです。
スパイによって取得された情報は、取得後長期間使用される可能性があります。クライアントは、有効な応答を得るために、HTTP 要求タイプと要求された URI を含む、パスワード、ユーザー名、および 1 回限りの値のチェックサムを計算する必要があります。
HTTP1.0 は、リクエストごとに TCP の新しい接続を利用することを意図していたため、アピールごとに、TCP の新しい接続を確立する費用を支払う必要がありました。
ほとんどのインターネット トランザクションは短時間であり、スロー スタート段階を超えることはめったにないため、使用可能な帯域幅を最適に使用できません。
一部のバージョン 1.0 実装では、「キープアライブ」ヘッダーを利用してリンクを維持できるように要求していましたが、これはプロキシ間の場合にはうまく機能しませんでした。
サーバーは、特定の接続に対する一致する要求と同じ順序で応答を提供する必要があります。 クライアントは、同じ接続 (パイプライン) を介して別のリクエストを送信する前に、前のリクエストへの応答を待つ必要はありません。
また、TCP プロトコルの機能を最適化しながら、ネットワークの往復待ち時間を短縮します。
HTTP 1.1 とは何ですか?
永続的な接続とパイプラインを導入することで、この問題を解決します。 HTTP/1.1 は、永続的な接続を使用する場合、明示的に切断を要求されない限り、TCP の接続をアクティブに保つ必要があることを意味します。
これにより、クライアントはそれぞれの応答を待たずに同じ接続を介して多数のアピールを送信できるようになり、HTTP/1.1 よりも HTTP/1.0 のパフォーマンスが大幅に向上します。
残念ながら、この最適化手法には固有のボトルネックがあります。
いくつかのデータ パケットは途中で互いに通過できないためです。 キューの先頭にあるリクエストが必要なリソースを取得できず、その後ろにあるすべてのリクエストがブロックされる場合があります。
これは HOL head-of-line ブロッキングとして知られており、HTTP/1.1 接続パフォーマンスの向上に関しては大きな問題です。
個別の並列 TCP 接続で問題が解決する場合がありますが、クライアントとサーバー間の同時 TCP 接続の数は制限されており、新しい接続ごとに多くのリソースが消費されます。
HTTP/1.1 のフロー制御は TCP に基づいています。 TCP が確立されると、サーバーとクライアントの両方がシステムのデフォルト設定を使用してバッファ サイズを決定します。
受信側のバッファが部分的にいっぱいである場合、受信側の受信ウィンドウまたはバッファ内の空きスペースの量を送信側に通知します。
HTTP 1.0 と HTTP 1.1 の主な違い
- ヘッダーでは HTTP1.0 が利用されますが、より洗練されたキャッシュ管理アプローチを導入するために HTTP1.1 が使用されます。
- HTTP1.0 では帯域幅の無駄が多少ありますが、HTTP 1.1 では帯域幅の無駄が少なくなります。
- Host ヘッダー フィールドは、HTTP1.1 要求および応答メッセージでサポートされていますが、HTTP1.0 では、各サーバーが個別の IP アドレスをバインドする必要があると考えられています。
- HTTP1.0 では、TCP 接続ごとに 1.1 つの要求と応答しかありませんが、HTTP XNUMX では接続の再利用が可能です。
- スプライト化、連結、インライン化、およびドメイン シャーディングは、HTTP 1.1 で利用される最適化の一部ですが、HTTP 1.0 は Web サイトをより迅速に提供するためのキャッシングをサポートしています。