リクエスト・レスポンス型の本質的制約
HTTPはリクエスト・レスポンス型プロトコルとして設計されており、以下の制限があります。
1. 一方向通信の制約
- クライアントからの要求なしに、サーバーから情報を送信できない
- 常にクライアントが通信の起点となる必要がある
- サーバーサイドでデータが更新されても、クライアントに即座に通知できない
3. ステートレス特性の制約
- 前回のリクエストの状態を保持しない
- セッション管理にCookieやトークンが必要
- リアルタイム性が要求される場面での情報保持に限界
HTTP一方向通信の制約の可視化
HTTPでは、サーバーからクライアントへの能動的な通信ができません。この制約を図で確認してみましょう。
図表を生成中...
問題点
- サーバーでデータが更新されても、クライアントに即座に伝えられない
- ユーザーのアクション(ページ更新、リロード)を待つ必要がある
- リアルタイム性が求められるアプリケーションには不適切
HTTPの接続の都度確立によるオーバーヘッド
HTTP/1.1では、各リクエストで接続確立と切断が繰り返されます。
このオーバーヘッドを可視化してみましょう。
図表を生成中...
オーバーヘッドの内訳
- 接続確立:3-way handshake(3往復)
- データ転送:リクエスト+レスポンス(1往復)
- 接続終了:4-way handshake(4往復)
- 合計:実質的なデータ転送は1往復、オーバーヘッドが7往復
このオーバーヘッドが引き起こす問題
- ネットワーク遅延:毎回の接続確立に時間を要する
- リソース消費:サーバー・クライアント双方でのコネクション管理コスト
- 帯域幅の無駄:HTTPヘッダーの重複送信
- スケーラビリティの制限:大量のコネクション処理によるサーバー負荷