株式会社アクア

HTTP/3 の紹介

2022年09月01日 田 学東

技術動向

アクア新技術推進担当の田でございます。

次世代のWeb通信プロトコルHTTP/3は2022年6月にRFC 9114 として標準化されました。もう無視できないところに来ていますね。今回の記事はHTTP/3技術の特徴と利用上の注意点を簡単に紹介いたします。

HTTP/3の特徴を理解するために、まずHTTP各バージョンの歴史から見ていきましょう。

HTTP History

HTTPプロトコルは1990年に最初のバージョンが作られましたがまだ標準化されていませんでした。HTTP/0.9というバージョンはHTTP/1.0に標準化されたときにその先のバージョンと区別をつけるために後からつけたバージョン番号です。

HTTP/1.0

1996年にHTTP/1.0がIETFによってRFC化されHTTP最初の標準化バージョンです。HTTP/1.0がTCPショートコネクションベースの通信プロトコルです、つまり毎回のHTTPリクエスト/レスポンスがTCPコネクションを再接続する必要があります。TCP接続が少なくとも3回のハンドシェイク通信が発生しますので時間がかかります。

http1 0

HTTP/1.1

HTTP/1.0が標準化された数か月後その増強バージョンのHTTP/1.1が公開されました。いまでもHTTP/1.1がWEBサイトのデフォルト通信プロトコルとして採用されています。

HTTP/1.1は「keep-alive」機能を提供して、連続したリクエストにおいて同じTCPコネクションを再利用することができるHTTP通信高速化仕組みが作られています。

http1 1 nopipelining

さらに、HTTP/1.1がパイプラインの仕組みも導入しています。パイプラインを利用する場合、最初のリクエストのレスポンスを待たずに次のリクエストを送信できますのでネットワークの稼働率がもう一段上げられます。

http1 1 pipelining

ただし、同時請求リソースの数を多い場合HTTP/1.1がまだ問題があります。パイプラインがFIFOの仕様になり、最初のリクエストの処理時間が長い場合は後続処理が先に完了してもレスポンスを受信できません、いわゆるHead-of-line blocking]問題です。

HTTP/2

HTTP/2はHTTP/1.1公開された18年後の2015年に標準化公開されました。HTTP/2がHTTP/1.1の交換性を保つ上に、通信上問題を解決手段が作られています。

HTTP/2最大の特徴は「ストリーム」という概念を導入したことです。「ストリーム」にはリクエストと違う順番でもレスポンスの送信ができますので、1つのTCPコネクション内で同時に並行して複数のリクエスト/レスポンスを処理できるようになりました。 さらにHTTPヘッダの送受信時には圧縮/展開が行われるようになり、効率的なやり取りが可能となっています。

http2

HTTP/2がさらに通信高速化の仕組みを作っていましたが、残念ながらTCP通信プロトコルを基づいた「ストリーム」仕組みがいくつ解決できない問題が残っていますので、まだHTTP/2を利用していないWEBサイトがたくさんあります。

一つ目の問題はTCP接続最初の3回ハンドシェイク通信が毎回行われるので効率悪いです、その上に構築したTLS通信のハンドシェイクがさらに行わるため最初の接続時間も無視できない時間になります。

二つ目の問題が現在スマホーなど移動中の端末が利用されているケースが多くなり、その場合はクライアントが移動によりIPアドレスが常に変わっています、IPアドレスが変わった場合TCP通信が中断され、最初からTCP通信を再接続しないといけないので通信効率がさらに悪化されています。

HTTP/3

HTTP/3は2022年6月に公開され、HTTP/2の問題を解決するために「QUIC」というプロトコルが作られています。 「QUIC」仕様はまずベースの通信プロトコルをTCPからUDPに変更しました。その上にUDPベースのQUIC(TLS)も作られています。

UDP通信プロトコルを利用することて、一つの利点はTCPハンドシェイクが要らなくなり通信効率を大幅に高めています。

http3 quic

スマホー利用してIPアドレスが頻繁に変わる問題に対して、HTTP/3が「Connection ID」を導入しました。 クライアントが最初にサーバを接続するときに唯一なConnection IDをる付与され、その後にIPアドレスが変わっても同じConnection IDを利用することて前に通信が継続利用することができます。これによりモバイル通信の場合HTTP/3がHTTP/2よりはるかに安定し効率が高いです。

http3 connectionid

HTTP/3利用上の注意点

HTTP/3がさらに通信効率を向上させる期待できますが、利用上のいくつ注意点があります。

HTTP/3不要なケース

HTTP/3高速化の理由には「接続確立時のハンドシェイク数の減少」「Head-of-line Blockingの解消」などになりますので、下記の環境で利用する必要がないでしょう。

  • ネットワークが高品質で遅延が少ない
  • サーバが高性能で重い処理があまりない
  • クライアント側から同時請求リソースが少ない

ファイアウォールの設定

HTTP/3では、UDP443番を利用する必要があります。UDP443番ポートが閉じているとHTTP/3を導入できないのでファイアウォールの設定を確認する必要があります。

SSLが必須

HTTP/3のQUIC仕様ではTLS1.3が利用されていることから、暗号化通信(SSL証明書の利用)を前提としています。これによってコンテンツの常時SSL化対応が必要となります。

まとめ

今年公開されたHTTP/3は通信、Webサイトの表示速度を高速化する仕組みです。Webサイトの表示速度に課題を感じる場合は、HTTP/3の導入を検討してみてはいかがでしょうか?しかしいくつの注意点がありますので、自社のWEBサイトがHTTP/3を採用により高速化できるかどうかを理解した上で検討する必要があるでしょう。

株式会社アクアは常に最新のIT技術動向を採用してお客様に提案しています。新技術の導入に関しては是非当社へご相談下さいませ。

関連トピックス