今後のエンジニアはネットワークの知識も必須になってくると思うのでHttp3についてまとめて見ました。
そもそもHttpとは?
よくわかってないままにhttpというURLを入力している人は多いのではないでしょうか。
私もその一人です(笑)
まずはhttpとは何か?どのように使われているのかを記載しようと思います。
HTTPとはHyper Text Transfer Protocolの略称です。WEBサーバとクライアント(PCやモバイル端末のブラウザ)間でHTML(Hyper Text Markup Language)でのデータをやり取りする時に使用される通信手段のことです。
では、http/1とhttp/2について簡単に説明します。
HTTP/1
http/1はステートレスを採用しており、原則として1回のリクエストで1回のレスポンスが返ってきます。
HTTPはトランスポート層のネットワークになります。主にTCPを使うことが多い。
稀にssl証明書を持っているのにWEBサーバ(apatch,nginxなど)を古いままにしているとhttpsでもTCPを使うことがあります。
http/1はリクエスト数や複雑な処理になるほどレスポンスが重くなる仕様でした。
HTTP/2
http/2はhttp/1の問題点を解決するために、1回のTCPコネクションに対して複数のリクエストを通信して並列処理を可能にしました。
これによりHTTP/1.1 と比べて、Web サイトのパフォーマンスが向上します。
実装方法は、WEBサーバをアップデートして、SSL通信にすることです。サーバーとブラウザの間の通信を、HTTPS による SSL/TLS 通信にする必要があるのです。
つまりSSLの実装はセキュリティの問題と通信速度の向上という2つのメリットがあります。
単純に向上すればいいのですけど、SSLは証明会社経由になるので、SSLがない場合より約3倍ぐらいスピードが遅くなります。
安全性確保しても、それほど遅くなることはない。という認識でいます。
2015年ごろからhttp/2の仕様は推奨されておりますが、まだ対応できていないサイトはあります。
HTTP/3登場
Http/3とはgoogleが研究を進めていたgoogle quicの技術の新名称になります。
wikipediaにgooglequicの説明がされていたので引用します。
QUIC (Quick UDP Internet Connections、「クイック」と発音) とはGoogleが開発している実験的なトランスポートレイヤーネットワークプロトコルで2013年より実装している。User Datagram Protocol (UDP)上の2つのエンドポイント間の多重化接続の集合体に対応していて、TLS/SSLと同等のセキュリティ保護を提供するだけでなく、接続と転送のレイテンシ削減やネットワーク輻輳を避けるために各方向で帯域幅(英語版)推定を行う。主な目標は現在TCPを使用するウェブアプリケーションの接続指向を最適化することである。
TCPは信頼性の高いプロトコルでUDPは発展性の高いプロトコルです。
googleはUDP上でHTTP通信する技術を開発したわけです。
http/2は並列処理と言いましたが上限は6プロトコルです。
6のリクエストが終わったら、次の6のリクエストになります。なので通信の数を減らす必要が出てきます。
昨今のHTMLテンプレートを使わないで、JSでレンダリングするのはこの通信数を減らす処理に対し、非常に有効な手段であり、UIUX的にも一度JSを取り込んでしまえばわざわざサーバにリクエストする必要がなくなるので処理速度は画期的に早くなります。
http/2は通信エラーに対して処理が止まってしまうことがあります。
http/3はそのhttp/2の問題を解決したプロトコルです。
並列処理ではない、それは蛇口の水を開きっぱなしにするイメージです。
一度、サーバに繋がったら蛇口のように開きっぱなしにしてしまう。多少のエラーは無視されて次に行きます。っていうか待機状態がなくデータが送られ続けているイメージです。
明らかにhttp/2の上位版でしょう。
5Gの登場
このhttp/3の登場と5Gの登場は関連性があると思っています。
5Gは4Gの上位で約100倍早いです。
この5Gはモバイル以外の通信に使われることが決まっています。
IOTだったり、自動運転などです。
仮に自動運転の通信を行なっているときにエラーが混じっていて、通信が止まってしまえば大惨事ですね。
ですが、http/3は蛇口開きっぱです。通信エラーでは止まりません。
よって、http/2より安全な通信ができるのではないでしょうか。
私は5Gをこのタイミングで発表したのはhttp/3が出てきたためだと思っています。
今後はWEB業界にいる人間はネットワークの知識が必須になります。
WEBデザイナーだろうがWEBディレクターだろうが通信の知識がない限り、効果的な企画は生み出せないのではないでしょうか。