見出し画像

HTTP/3って?何がうれしいの?

こんにちは!
新しいものに目がない文系エンジニアのカズキです!
今回は皆さんも実は知らない間にお世話になっているかもしれない、割と新しめの技術、HTTP/3について解説します!


はじめに

本記事はHTTPについてある程度知っているよ、という方向けの内容になっています。
HTTPって何?よくわからないよ!という方は、以下の記事などを参考にしていただけますと幸いです!

HTTP/3とは?


HTTP/3とは、テキストベースの通信プロトコルであるHTTPの3番目のメジャーバージョンなります。
HTTPではこれまでHTTP/1.0, HTTP/1.1, HTTP/2がありました。
メジャーバージョンが上がるにつれ、様々な機能の追加や通信速度の向上が行われてきましたが、技術の進歩によるWebサイトの高機能化・リッチ化・モバイルデバイスの普及は、時代にさらなる通信の安定と速度の向上を求めることになりました。
そんな折、Googleが以前より設計してきたQUIC(Quick UDP Internet Connections)というトランスポート層の通信プロトコルが、2021年IETF(Internet Engineering Task Force)により標準化されます。
このQUICを使った新たなバージョンのHTTPが、HTTP/3になります。

実はすでに使われている


HTTP/3は新しい技術ですが、すでに主要ブラウザでは対応されており、Webサーバーなどでも徐々に対応されていっています。
Safari以外のブラウザではデフォルトで有効になっているそうで、自分でも気付かないうちにHTTP/3を利用しているかもしれません!(なんともアツイですね…!)
以下はgoogleの検索画面ですが、デベロッパーツールで確認するとたしかにhttp3を使っている通信があります!

プロトコルのh3というのがhttp/3のことになります!

TCPとUDP、そしてQUIC


HTTP1.0~HTTP/2までは、トランスポート層のプロトコルとしてTCP(Transmission Control Protocol)が使われています。
一方、HTTP/3が使用するQUICはUDP(User Datagram Protocol)をベースとしています。
TCPとUDPの大きな違いは、通信における信頼性です。

TCPの特徴


TCPでは通信にあたってコネクションを確立(3wayハンドシェイク)し、データの再送や誤り訂正、ウィンドウ制御などによって、相手に確実にデータを送信できるよう、信頼性を重視して動作します。
その分、コネクション確立や暗号化のためのオーバーヘッドや、制御用のデータが多くなるため、動作は遅くなります。

UDPの特徴


一方UDPは、そうしたコネクションの確立や服装制御といった複雑な仕組みは持たず、シンプルにデータを送受信できるため高速です。
しかし、相手に確実にデータが届くことは保証しないため、パケットロスが発生することがあり、UDPを利用するアプリケーションではそうしたケースを許容できる必要があります。

QUICの特徴


QUICはこの二つのうち、UDPをベースに新たに設計されたプロトコルです。
TCPのメリットである輻輳制御やデータの再送処理などを新たに実装し、信頼性を高めつつも接続や通信も高速であるといった、いいとこどりのプロトコルです。
なお、QUICにはGoogleが独自に設計・実装したQUIC(Google QUIC)と、それをベースにIETFが変更を加えた(IETF QUIC)があるので調べる際は注意してください。

HTTP/3は何がうれしいのか


接続と通信が高速

QUICはUDPベースですが、信頼性向上のためコネクションの確立を行います。
ただし、TCPよりもコネクション確立時のやり取りの回数が少ないため、より高速に接続の開始が可能です。
また、通信においてもTCPと比較して様々なオーバヘッドが軽減され、通信が効率化されています。

モバイル端末等での基地局変更による再接続ロスの軽減

スマホなどを利用している場合、移動の際にwifiの通信からモバイルデータ通信に切り替わったり、あるいはその逆のことが起こったりします。
TCPにおいてはこうした場合にもともとのコネクションが維持できなくなるため、新たにコネクションを作成する必要が出てしまいます。
QUICではこうした事象を解消するため、コネクションIDというものを用いて、コネクションを維持できるような工夫が行われています。
これにより、通信網切り替え時のオーバーヘッドやロスが軽減されることが期待できます。

デメリットは?


HTTP/3ではQUICを利用することは先ほど述べましたが、このQUICは暗号化通信が前提となるため、暗号化対応できないような環境においては導入することができません。
また、普及し始めて間もないため環境によっては利用できないケースもあるようです。

まとめ


今回はHTTP/3についてざっくりとご紹介しました。
新しい通信プロトコルが登場すると、なんだか未来を感じてワクワクしませんか!(しますよね?)
興味を持ったそこのあなた、ぜひご自身でもいろいろ調べてみてください!