HTTP/3とは
HTTP/3とは、Hyper Text Transfer Protocol 3の略で、 WWWでデータをやり取りする方法の取り決め(プロトコル)です。 2022年6月に正式なドキュメントがRFC 9114として公開されました。
HTTP/3はHTTP/2と似ているのですが、 大きく違うのは通信の下位プロトコルとしてTCP (Transmission Control Protocol)の代わりにQUICを使うことです。 そのため通信エラーが起きても通信が止まりにくくなっています。
TCPは送信されたデータが間違いなく、 送信された順番で到達することを保証してくれます。 その代わり、データが一部欠けたり、間違っていたりした場合、 TCPのレベルでデータの再送信を要求します。 これが問題になるのが、HTTP/2で採用されたストリームを阻害することです。
HTTP/2では一つのTCPコネクションで複数のデータを同時にやり取りするため、 ストリームという複数の仮想的な通信路を使います。 通信が順調な時は良いのですが、 どこか一つでもエラーが起きると下位プロトコルのTCPレベルでデータの再送が行われるので、 HTTP/2の全ストリームが止まってしまうのです。
これを改善するために、QUICという通信プロトコルが開発されました。 QUICはTCPではなくUDP (User Datagram Protocol)を使っており、 QUICのレベルで多重ストリーム通信を実現しています。 UDPはTCPほど厳密なエラー訂正を行わないため、 データエラーが起きても影響を受けるのは該当するストリームだけで、 他のストリームはそのまま通信を続行することをQUICが制御できるのです。
またQUICは必ず通信を暗号化することが定められています。 現状では広く普及したTLS (Transport Layer Security) 1.3を利用することで、 開発の手間を減らし、信頼性を確保するようになっています。
■参考
1分用語解説 HTTP/2とは
https://www.nic.ad.jp/ja/basics/terms/http2.html
1分用語解説 QUICとは
https://www.nic.ad.jp/ja/basics/terms/quic.html
RFC 9000: QUIC: A UDP-Based Multiplexed and Secure Transport
https://datatracker.ietf.org/doc/html/rfc9000
RFC 9114: HTTP/3
https://datatracker.ietf.org/doc/html/rfc9114