http

HTTP/1.0, HTTP/1.1, HTTP/2の違いとは?【ネットワーク】

HTTPには様々なバージョンがあります。今回はそれぞれのバージョンによる違いを見ていきましょう!

 

HTTPとは

そもそもHTTPとは何でしょうか。

HTTPとはHyperText Transfer Protocolの略であり、WWW(World Wode Web)上でWebサーバーとクライアント(ブラウザ等)がHTMLなどの情報をやり取りするための通信方法を定めたもの(プロトコル)です。

私たちユーザーがブラウザにURLを入力すると、ブラウザからWebサーバーへ通常ポート番号80番でTCPと言う通信のコネクションが確立されて、その通信経路を通してデータのやり取りを行います。

 

HTTP/1.0

HTTP/1.0は1996年に発表されました。

HTTP/1.0とは、上記で説明したTCPのコネクション1つにつき1回のリクエストと応答しかできないものです。

例えばWebページに画像が載っていたとしたらそのリソースをWebサーバーからもらわないといけないわけですが、その画像を貰うために1回コネクションをつなぎ、別の画像を貰うときにはまた別のコネクションをつなぎ…といった感じになります。

しかし、HTTP/1.0では不満が出てきたため後述のHTTP/1.1が考えられます。

 

HTTP/1.1

HTTP/1.1は1997年に発表され、その後2回改訂されます。

HTTP/1.0では1回のコネクションにつき1回のやり取りしか行えませんでしたが、HTTP/1.1では1つのコネクションで複数のやり取りが行えるようになりました。

これがHTTP/1.1で追加されたKeep-Aliveと言う機能です。

 

ただ、HTTP/1.1だと1つのコネクションで複数のやり取りは行えるものの、その中では1つのリクエストが完了するまで次のリクエストが送れません。

例えばWebページに複数の画像がある場合、1つ目の画像のダウンロードが完全に終了してから2つ目の画像、そして3つ目…となってしまい、現在のたくさんのリソースが必要とされるWebページでは大変効率が悪くなってしまいます。

これを解決したのがHTTP/2です。

 

HTTP/2

HTTP/2は2015年に発表されました。

Googleによって立ち上げられたHTTP互換のプロトコルSPDYが元になっています。

HTTP/2によって、Webの通信は大幅に効率化されます。

まずはHTTP/1.1で問題だった、リクエストが終わらないと次のリクエストを送信できない問題ですが、HTTP/2ではこの接続を非同期多重化することにより、前のリクエストの完了を待たずとも次のリクエストを送ることができます。

これによりWebページの読み込みが大幅に高速化されました。

 

また、HTTP/2ではヘッダ圧縮も行われるようになりました。

以前は、圧縮はリソースに対して行うものでした。

しかし、現在の通信ではやり取りしたいデータだけではなく、その通信に利用するヘッダ(通信時に必要な情報を格納するもの)にも様々な情報が追加され、オーバーヘッド(余計な情報)が増えてしまいました。

そのためヘッダまで圧縮を行うことで、さらに通信の容量を減らし、高速化を実現しています。

クライアント側とサーバー側で対応を行う必要があるため、今はHTTP/1.1も多いですが、今後はHTTP/2に移行すると思われるので、Webサイトなどを作成するときはHTTP/2に対応できるようにしておきましょう!