質問
HTTPのプロトコルのヴァージョンごとの違いをまとめてください。 1.1以降、現在もすべて使われているようですが脆弱性のようなものはないのですか? |
解答
いい質問です。 HTTPは長い歴史の中で進化し続けていて、HTTP/1.1 → HTTP/2 → HTTP/3 と改良されています。 まとめますね。 1. HTTP/1.1 (1997〜) * 特徴 * 最初に広く普及したバージョン * Keep-Alive(接続を維持して複数リクエストを送信可能) * パイプライニング導入(ただし実装はほぼされなかった) * ヘッダはテキストベース(冗長) * 問題点 * 1つのTCP接続で同時に1リクエストしか処理できない → ヘッドオブラインブロッキング問題 * 大量のリソース読み込みで遅い(ブラウザは並列TCP接続でごまかしていた) 2. HTTP/2 (2015〜) * 特徴 * バイナリフレーミング(テキストでなく効率的) * 多重化(1つのTCP接続で複数リクエスト同時処理) * ヘッダ圧縮(HPACK) * サーバープッシュ(クライアントが要求する前に送れる) * メリット * ページ表示が高速化 * ネットワーク効率が向上 * 問題点 / 脆弱性 * 依然としてTCP依存 → パケット損失時に遅延が大きい * 一部の攻撃(例: HTTP/2 Rapid Reset 攻撃, 2023年公表)が可能 → 脆弱性はあるが修正や緩和策が取られている 3. HTTP/3 (2022〜 RFC正式化) * 特徴 * QUIC (UDPベースの新プロトコル) を使用 * TCPではなくUDP上にTLSとストリーム多重化を実装 * 0-RTT接続で高速(TLSが組み込み) * パケット損失時でも他のストリームは影響を受けにくい * メリット * モバイル環境や高遅延ネットワークで特に高速 * セキュリティ標準装備(TLS 1.3必須) * 問題点 / 脆弱性 * UDPを使うためファイアウォールや古いネットワーク機器で通りにくい場合がある * 実装がまだ新しく、最適化や対応状況に課題あり 4. 現在の利用状況 * HTTP/1.1 → 依然として広く使われている(特に古いシステムや単純API) * HTTP/2 → 主要ブラウザ・CDN・Webサーバで標準利用 * HTTP/3 → 普及拡大中(Google, Cloudflare, YouTubeなどが積極採用) 5. 脆弱性について * HTTP/1.1 → プロトコル自体は単純だが、中間者攻撃などTLSを使わない場合に弱い * HTTP/2 → 実装依存の脆弱性あり(例: Rapid Reset攻撃、DoS) * HTTP/3 → QUICの実装は新しいため未知の脆弱性が今後見つかる可能性がある まとめ * HTTP/1.1 : 古くて互換性重視、速度制約あり * HTTP/2 : 主流、効率改善、ただしTCP依存 * HTTP/3 : 最新、QUIC採用で高速・安定、まだ普及途中 |
|
|
この記事へのコメント