RFC 9110: HTTPセマンティクス

HTTP/1.1・2・3で共通する意味論を1本に集約したRFC 9110を読み解き、メソッドの安全性・冪等性、ステータスコード、条件付きリクエストや認証の枠組みまで、バージョンに依存しない知識として整理できる。

応用RFCHTTPプロトコルWebネットワーク最終更新: 2026-07-29
3つの要点
TL;DR
  1. RFC 9110(2022年、STD 97)はHTTPの意味論を版非依存で定義する。HTTP/1.1構文は9112、キャッシュは9111へ分離し、RFC 2616と7230〜7235系列を整理した。
  2. GET/HEAD/OPTIONS/TRACEは安全かつ冪等、PUT/DELETEは冪等だが安全でなく、POSTはどちらでもない。安全なら必ず冪等だが、その逆は成り立たない。
  3. ステータスは1xx〜5xxの5クラスに分類され、条件付きリクエストのETag/Last-Modified、レンジ取得の206、認証枠組みのWWW-Authenticate/401など、実装で日常的に触れる要素の意味がここで規定される。

このRFCが決めたこと

横にスクロール

HTTP要求のメソッド対象フィールド内容が中継と起点を経て状態コード付き応答へなる図
HTTPの意味層と、安全・冪等・キャッシュ可能という異なる性質を整理します。

RFC 9110(2022年6月、STD 97)は、HTTPというプロトコルの「意味」だけを取り出して定義した文書だ。リクエストやレスポンスがネットワーク上でどう表現されるか(メッセージ構文)はHTTP/1.1・2・3で異なる(HTTPのバージョンを参照)が、GETが何を意味するか、404が何を表すかといった意味論は、すべてのバージョンで共通する。9110はこの共通部分を一手に担う。

かつてHTTP/1.1はRFC 2616、のちにRFC 7230〜7235へと分割されていた。9110はそのうち意味論(旧7231・7232・7233・7235と、7230の意味論部分)を統合し、バージョン固有のメッセージ構文はRFC 9112(HTTP/1.1)・9113(HTTP/2)・9114(HTTP/3)へ、キャッシュはRFC 9111へと切り分けた。

意味論と構文の分離

「GET /index.html を取得する」という意味は、HTTP/1.1のテキスト行でも、HTTP/2のバイナリフレームでも変わらない。9110を一度読めば、どのバージョンでも通じる知識が身につく。

要点の精読

メソッドと安全性・冪等性

メソッドには安全(safe)と冪等(idempotent)という2つの性質がある。安全とは、そのリクエストがサーバー状態の変更を意図しない読み取り専用の操作であること。冪等とは、同じリクエストを複数回送っても、1回だけ送ったのと同じ効果になることだ。定義上、安全なメソッドは必ず冪等でもある。

メソッド安全冪等
GET / HEADはいはい
PUT / DELETEいいえはい
POSTいいえいいえ

PUTは「この内容で置き換える」ので何度実行しても最終状態は同じ(冪等)だが、状態を変えるため安全ではない。POSTはどちらでもないため、送信の再試行が二重登録を生む恐れがあり、実装で最も注意を要する。

ステータスコードの5クラス

ステータスコードは先頭の数字で5つのクラスに分かれる。1xx情報、2xx成功、3xxリダイレクト、4xxクライアントエラー、5xxサーバーエラー。クラスの意味自体が規定されているので、未知のコード(例えば299)を受け取っても、クライアントはクラス単位で扱いを判断できる。

条件付きリクエストとレンジ

条件付きリクエストは、ETagやLast-Modifiedという「バリデータ」を使い、リソースが変わっていなければ本体の転送を省く仕組みだ。If-None-Matchがサーバー側のETagと一致すれば、304 Not Modifiedが本体なしで返る。

GET /style.css HTTP/1.1
If-None-Match: "abc123"

HTTP/1.1 304 Not Modified
ETag: "abc123"

レンジ取得はRangeヘッダで一部だけを要求し、206 Partial Contentで返す。これらはHTTPキャッシュや再開可能ダウンロードの基盤になっている。

認証の枠組み

9110は特定の認証方式ではなく、チャレンジ/レスポンス型の枠組みを定める。サーバーは401 UnauthorizedとWWW-Authenticateヘッダで認証スキームを提示し、クライアントはAuthorizationヘッダで応答する。方式の詳細はセキュリティ側の話題だが、その土台となる約束事はここにある。

つまずきやすい点

まず、安全と冪等の混同に注意したい。安全は冪等の一部(安全⊂冪等)であり、PUT/DELETEは冪等だが安全ではない。次に、401と403は別物だ。401は「認証されていない(やり直せる)」、403は「認証済みでも許可されない」を意味する。もう一つ、9110はリソースと、その表現(representation)を区別する。Content-Typeなどが記述するのは、あくまで表現のメタデータであって、リソースそのものではない。

まとめ

RFC 9110は、HTTPの意味論をバージョンから独立させた土台だ。メソッドの性質、ステータスのクラス、条件付きリクエスト、認証枠組みを一度理解すれば、HTTP/1.1でも2でも3でも同じ知識が通用する。HTTPの他のRFC解説はRFC精読から辿れる。

RFC精読の記事ガイド

RFC 9110: HTTPセマンティクスを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

RFC

比較で見る軸

難易度: advanced / カテゴリ: RFC精読 / タグ数: 5

導入後に効く点

GET/HEAD/OPTIONS/TRACEは安全かつ冪等、PUT/DELETEは冪等だが安全でなく、POSTはどちらでもない。安全なら必ず冪等だが、その逆は成り立たない。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
RFC精読
タグ数
5

判断チェックリスト

  • 自社の用途が「RFC / HTTP」に近いか確認する。
  • 強みである「RFC 9110(2022年、STD 97)はHTTPの意味論を版非依存で定義する。HTTP/1.1構文は9112、キャッシュは9111へ分離し、RFC 2616と7230〜7235系列を整理した。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

RFCHTTPプロトコルWebネットワーク