こんにちは、42Tokyoのkharuyaです🙇
これまでの投稿でRFC 9110とRFC 9112について概要を説明しましたが、この二つって結局何が違うの?となった方もいらっしゃると思うので、今回の投稿では「RFC 9110とRFC 9112に違い」について焦点を当てて説明していきます。
目次
前談
「そもそもRFCすらわからない」「RFC 9112やRFC 9110って何?」という方は以下の記事を読んだ後で、こちらに戻ってきていただくと理解しやすいかと思います。
🌐 RFC 9110 と RFC 9112 の違い
HTTPの仕様を学ぶ際、この2つの使い分けを知ることで、ドキュメントを読むスピードが格段に上がります。
1. 一言でいうと?
- RFC 9110 (Semantics): HTTPの 「意味(何をしたいか)」 を決めるルールブック。
- RFC 9112 (HTTP/1.1): HTTP/1.1の 「書き方(どう並べるか)」 を決めるルールブック。
2. 役割の比較
| 項目 | RFC 9110 (Semantics) | RFC 9112 (HTTP/1.1) |
|---|---|---|
| 主な焦点 | 概念・機能 | 構文・書式 |
| 定義内容 | メソッド(GET, POST)の意味や、ステータスコード(404, 200)の役割。 | 文字列の並び順、改行(CRLF)、チャンク転送のパース方法。 |
| バージョンの壁 | HTTP/1.1 〜 3 まで共通で使える。 | HTTP/1.1 専用 の書き方。 |
| サーバー自作例 | 「404エラーを返そう」と決める時に読む。 | 「リクエストの1行目をスペースで区切って解析しよう」と決める時に読む。 |
3. 初学者が注目すべきポイント
- RFC 9110 は「辞書」: 「このメソッドってどういう意味だっけ?」と思った時に引きます。
- RFC 9112 は「組立説明書」: 「どこにスペースを入れて、どこで改行すればコンピュータが正しく読み取れるか?」を知るために使います。
📋 RFC 9110 と 9112 の連携イメージ
Webサーバーを作る際、プログラムは以下のような流れでこれらを参照します。
-
RFC 9112 (構文) を使う:
クライアントから届いたバイト列を読み取り、「ここからここまでがヘッダーだ」と パース(解析) する。 -
RFC 9110 (意味) を使う:
パースした結果「GETメソッド」だとわかったので、「リソースを取得して返すべきだ」と 判断 する。 -
RFC 9112 (構文) を使う:
レスポンスを返す際、決められた形式(ステータスライン、ヘッダー、空行、ボディ)で シリアライズ(組み立て) して送信する。
✍️ おわりに
ここまで読んでいただきありがとうございます🙇
今回は「RFC 9112とRFC 9110の違い」についてまとめました、前談の投稿も一緒に見ていただけるより一層知識が深まるかと思います☺️
👤 著者について
- X: @h_kawasaki_
- GitHub: 42kharuya
いいねやフォローをいただけると執筆の励みになります!🚀