2015年5月、実に16年ぶりにHTTPプロトコルの新しいバージョンがリリースされました。バージョン1.1から2への変更ですので大きな変更です。開発コンセプトは高速化(効率化)と、セキュリティ向上です。一般的なブラウザは既にHTTP/2に対応しているため、私達が意識せずとも普段使っているプロトコルとなっています。この記事を開いた方はWebサイト構築に関与している方ではないかと思いますが、HTTPプロトコルのバージョン2対応化はおすみでしょうか。分からない方はFireFoxやChromeで、開いたサイトがHTTP/2対応しているか(今HTTP/2でアクセスしたか)が分かるプラグインがありますのでチェックしてみて下さい。HTTP/2 Indicatorというプラグインでは以下のように稲妻マークが青くなるとHTTP/2対応していることが確認できます。
Qualys社のSSL Labsでも確認できます。無料でSSLの設定状態などをチェックできるサイトです。
https://www.ssllabs.com/ssltest/
以下のサイトでは、HTTP/2の普及率が分かります。
https://w3techs.com/technologies/details/ce-http2/all/all
HTTP/2の機能について少し紹介したいと思います。
・ヘッダーはヘッダー名でなくコード値で示す
HTTP/1.1まではヘッダーを文字で表していましたがHTTP/2はバイナリベースのプロトコルとなり、ヘッダーの種類はコード値で表現されます。例えば“Transfer-Encoding:” は18バイトでしたが、これが1バイトで済むようになります。
インデックス | ヘッダー名 | コード値 |
---|---|---|
:authority | ||
:method | GET | |
:method | POST | |
:path | / | |
:path | /index.html | |
:scheme | http | |
:scheme | https | |
:status | 200 | |
:status | 204 | |
:status | 206 | |
:status | 304 | |
:status | 400 | |
:status | 404 | |
:status | 500 | |
accept-charset | ||
accept-encoding | gzip, deflate | |
set-cookie | ||
strict-transport-security | ||
transfer-encoding | ||
user-agent | ||
vary | ||
via | ||
www-authenticate |
・複数のリソースを一気に取得できる
HTTP/1.1ではページ内に多数の画像がある場合などに2つずつ順次取得したりなど、やや非効率な面がありました。パイプライン制御やドメインシャーディングなど、チューニングのテクニックもありましたがHoLブロッキングなどデメリットを伴うものでした。HTTP/2ではウィンドウ制御やプライオリティ管理などの仕組みが用意されており、リクエストを同時多発で送信してもうまく動作する仕組みが用意されていてHTTP/1.1での教訓が生かされています。
・サーバプッシュ
クライアントからリクエストが来ていなくてもサーバが自発的にコンテンツをプッシュすることが出来ます。HTML送信時にCSSを送ったり出来て、やり取りを減らすことが出来ます。ページ内の一部をリアルタイムに最新情報へ更新させたい場合などにも使えるのではないかと思います。HTTP/1.1までしかない時代にはプッシュを実装するためにいくつかのやり方が発案されていましたが、HTTP/2ではプロトコルに標準で備えおり面倒な作りこみは不要です。
・コネクションが長寿命
HTTP/2では一度張ったTCPコネクションを長く使う動きが基本になります。切断したり再接続することが減りますのでサーバの負荷は軽減されます。実際にトラフィックジェネレータで性能試験をすると良く分かるのですが、Keep-Alive有りのテストシナリオと無しのテストシナリオではサーバの負荷が異なり、その差は顕著に表れます。
HTTP/2が持つ機能(HTTP/1.1との違い)の全てはとても書ききれないため、本記事ではここまでにしておきますが、最後に当社で扱っている製品/サービスを使ってサイトをHTTP/2対応する方法をご紹介します。CDN兼クラウド型WAFのCloudflareや、ロードバランサーのF5 BIG-IPを使うことでサーバの変更はせずにユーザに対してサイトをHTTP/2で公開出来るようになります。
HTTP/2の普及率は現時点(2019年5月)で37%とまだそれ程高くありません。高速化、セキュリティ向上、SEO対策のために検討してみては如何でしょうか。ライバルサイトに差をつけましょう!
執筆者:角田 貴寛
三井情報株式会社
ソリューション技術本部 次世代基盤第二技術部 第一技術室
CISSP、CEH
現在、セキュリティ関連調査研究・教育業務に従事