| この記事の要点 |
|
概要
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/2 | TCP | 要求-応答 (多重化) | 高速な Web 配信 | HTTP/2 |
| HTTP/3 (QUIC) | UDP (QUIC) | 要求-応答 (多重化) | 低遅延・接続維持 | HTTP/3(QUIC) |
| WebSocket | TCP (HTTP からアップグレード) | 全二重 | リアルタイム通知・チャット | WebSocket |
| gRPC | HTTP/2 | 要求-応答 / 双方向ストリーム | マイクロサービス連携 | gRPC |
| WebRTC | UDP (P2P) | 双方向 (P2P) | 音声・映像・データ通信 | WebRTC |
注意点
- 下位互換とフォールバック: HTTP/2・HTTP/3 は対応していない相手とは自動的に HTTP/1.1 へフォールバックする。すべての通信が必ず新バージョンになるわけではない。
- TLS が事実上必須: ブラウザ実装では HTTP/2・HTTP/3 は HTTPS (TLS) 前提で使われる。平文での利用は現実的でない。
- 用途の取り違え: 「リアルタイムだから WebSocket」「速いから gRPC」と短絡せず、要求-応答で十分なら通常の HTTP/2 で足りることも多い。
- インフラ対応: UDP ベースの HTTP/3 は途中のファイアウォールやロードバランサが未対応なことがあり、導入には経路全体の確認が要る。
関連リンク
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15