2.

Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門

編集
この記事の要点
  • Web 通信プロトコルとは、ブラウザやアプリと Web サーバの間でデータをやり取りするための取り決めの総称。基盤の HTTP/HTTPS から、その進化形・派生形までを含む
  • HTTP/2 はバイナリ化と多重化で HTTP/1.1 の性能課題を解決し、HTTP/3 は QUIC (UDP ベース) でさらに遅延と接続切れに強くなった
  • WebSocket は HTTP からアップグレードして全二重のリアルタイム通信を実現し、チャットや通知に使われる
  • gRPC は HTTP/2 上で動く高速な RPC でマイクロサービス間通信に、WebRTC はブラウザ間 P2P で音声・映像・データ通信に使われる
  • いずれも従来の HTTP の限界を補い、リアルタイム性・低遅延・双方向性といった現代 Web の要求に応えるために生まれた

概要

Web 通信プロトコルとは、Web ブラウザやアプリケーションと Web サーバが互いにデータをやり取りするための「通信の約束事」をまとめた総称です。最も基本となるのは HTTP とその暗号化版である HTTPS ですが、Web の用途がページ閲覧からリアルタイムアプリ・動画・ゲーム・ビデオ会議へと広がるにつれ、従来の HTTP では性能や機能が足りない場面が増えてきました。本セクションでは、その課題を解決するために生まれた現代的な Web 通信プロトコル群を集約して解説します。親項目は プロトコル です。

具体的には、HTTP の性能を底上げした HTTP/2、トランスポートを UDP ベースの QUIC に置き換えた HTTP/3、双方向のリアルタイム通信を可能にする WebSocket、マイクロサービス間の高速な遠隔手続き呼び出しを担う gRPC、ブラウザ同士を直接つなぐ WebRTC を扱います。いずれも、土台にあるトランスポート層 (TCP / UDP) の上に構築されています。

仕組み

これらのプロトコルは「従来の HTTP/1.1 では何が足りないか」を起点に理解すると整理しやすくなります。HTTP/1.1 はテキストベースで、1 本の接続で 1 つの要求と応答を順番に処理するため、複数のリソースを取得する際に待ち行列 (ヘッドオブラインブロッキング) が起きやすいという課題がありました。

  • HTTP/2: 通信をバイナリのフレームに分割し、1 本の TCP 接続上で複数のリクエストを多重化 (ストリーム) して並行処理します。ヘッダ圧縮 (HPACK) も加わり、ページ読み込みが高速化します。
  • HTTP/3: TCP そのものが持つヘッドオブラインブロッキングを解消するため、トランスポートを UDP 上の QUIC に置き換えました。接続確立が速く、ネットワークが切り替わっても接続を維持できます。
  • WebSocket: 最初は HTTP として接続し、途中でプロトコルをアップグレードして「常時つなぎっぱなしの全二重通信路」に切り替えます。サーバからクライアントへ自発的にデータを送れます。
  • gRPC: HTTP/2 を土台に、関数呼び出しの形で通信する RPC フレームワークです。データは Protocol Buffers でバイナリ化され、双方向ストリーミングにも対応します。
  • WebRTC: サーバを経由せず、ブラウザ同士を直接 (P2P) つなぎ、音声・映像・任意データを低遅延でやり取りします。NAT 越えのために STUN/TURN/ICE を使います。

実用例

現在のサイトがどのプロトコルで通信しているかは、ブラウザの開発者ツールやコマンドで確認できます。

# curl で HTTP のバージョンを確認 (HTTP/2 で接続)
curl -I --http2 https://example.com/

# HTTP/3 対応の curl なら
curl -I --http3 https://example.com/

# 開発者ツールの Network タブで Protocol 列を表示すると
#   h2   = HTTP/2
#   h3   = HTTP/3
#   http/1.1 = HTTP/1.1
# のように各リソースのプロトコルが分かる

各プロトコルの詳しい仕組み・実装例は、下記の子記事で個別に解説しています。

主な用途

  • 高速な Web ページ配信: HTTP/2・HTTP/3 により、多数のリソースを並行取得してページ表示を速くする。
  • リアルタイム通知・チャット: WebSocket でサーバからの push を実現する。
  • マイクロサービス間通信: gRPC でサービス同士を低オーバーヘッドに連携させる。
  • ビデオ会議・通話・画面共有: WebRTC でブラウザ間の低遅延メディア通信を行う。

各プロトコルの比較

プロトコル土台通信の方向主な用途詳細
HTTP/2TCP要求-応答 (多重化)高速な Web 配信HTTP/2
HTTP/3 (QUIC)UDP (QUIC)要求-応答 (多重化)低遅延・接続維持HTTP/3(QUIC)
WebSocketTCP (HTTP からアップグレード)全二重リアルタイム通知・チャットWebSocket
gRPCHTTP/2要求-応答 / 双方向ストリームマイクロサービス連携gRPC
WebRTCUDP (P2P)双方向 (P2P)音声・映像・データ通信WebRTC

注意点

  • 下位互換とフォールバック: HTTP/2・HTTP/3 は対応していない相手とは自動的に HTTP/1.1 へフォールバックする。すべての通信が必ず新バージョンになるわけではない。
  • TLS が事実上必須: ブラウザ実装では HTTP/2・HTTP/3 は HTTPS (TLS) 前提で使われる。平文での利用は現実的でない。
  • 用途の取り違え: 「リアルタイムだから WebSocket」「速いから gRPC」と短絡せず、要求-応答で十分なら通常の HTTP/2 で足りることも多い。
  • インフラ対応: UDP ベースの HTTP/3 は途中のファイアウォールやロードバランサが未対応なことがあり、導入には経路全体の確認が要る。

関連リンク

編集
Post Share
子ページ
  1. HTTP/2
  2. HTTP/3(QUIC)
  3. WebSocket
  4. gRPC
  5. WebRTC
同階層のページ
  1. TCP/IP
  2. Web通信プロトコル
  3. IPX/SPX
  4. AppleTalk

最近更新/作成されたページ