こんにちは、42Tokyo所属のkharuyaです🙇
以前の記事でRFCの概要をまとめた記事を投稿しましたが、今回の記事では内容を RFC 9112 に絞ってまとめました。
最後まで読んでいただけると嬉しいです。
目次
- 📝 そもそもRFC (Request for Comments) ってなに?
- 🌐 RFC 9112 (HTTP/1.1) の概要
- 📋 RFC 9112 の主要な構成一覧
- ✍️ おわりに
- 📚 参考文献・関連リンク
📝 そもそもRFC (Request for Comments) ってなに?
RFC は、一言でいうと 「インターネットの世界における共通のルールブック」 です。
私たちがブラウザでウェブサイトを見たり、メールを送ったりできるのは、世界中のコンピュータがこの「RFC」という同じルールに従って動いているからです。
RFCがそもそもわからないという方は以前投稿した下記の記事を読んだ後で本投稿を読んでいただければ理解が深まるかと思います。
🌐 RFC 9112 (HTTP/1.1) の概要
RFC 9112 は、HTTP/1.1の 「メッセージ形式(構文)」 と 「ルーティング」 を定義した文書です。
「1行目は何から始まるか」「改行はどう表現するか」といった、通信の物理的なルールが書かれています。
RFC 9112ドキュメント
1. このドキュメントの役割
コンピュータ間でやり取りされる生のテキストデータ(バイト列)を、どのように組み立て、どのように解析(パース)すべきかを規定しています。Webサーバーを自作する際、プログラムが文字列を読み取るロジックを書くために必須となる仕様です。
2. 定義されている主な内容
- Message Format: リクエストライン、ヘッダー、空行、ボディという4層構造。
- Request Routing: ホスト名(Hostヘッダー)に基づいたリクエストの振り分け。
- Chunked Transfer Coding: データのサイズが事前にわからない場合に、分割して送る仕組み。 全てのChunkedパラメーターは以下のリンクを参照ください。
-
Connection Management: 通信をいつ切り、いつ維持(Keep-Alive)するか。
以下リンクのConnection部分を参照下さい。
3. 初学者が注目すべきポイント
| 項目 | 内容 |
|---|---|
| ABNF記法 | 通信文法を定義する記号(CRLF や SP など)。パース実装の根拠になります。 |
| CRLF (\r\n) | HTTPの改行は \n ではなく \r\n。これを知らないとパースが壊れます。 |
| Content-Length | メッセージボディがどこで終わるかを判断するための最重要ルール。 |
📋 RFC 9112 の主要な構成一覧
RFC 9112は非常にボリュームのあるドキュメントです。
「どこを読めばいいのか」を迷わないよう、全 11 セクションある構成の中から、特に重要な部分をピックアップして表にまとめました。
| セクション | 項目名 | 初学者が注目すべき内容 |
|---|---|---|
| Section 2 | Message Format | メッセージ全体の基本構造。CRLF による区切りルール。 |
| Section 3 | Request Line | メソッド、URI、HTTPバージョンが含まれる「1行目」の厳密な定義。 |
| Section 4 | Status Line | レスポンスの「1行目」の書き方(ステータスコードの配置など)。 |
| Section 6 | Message Body | ボディをいつ読み込むか、長さをどう決定するかの優先順位。 |
| Section 7 | Transfer Codings |
Transfer-Encoding: chunked の具体的なデータ並び(チャンクサイズ等)。 |
| Section 9 | Connection Mgmt |
Connection: close 等、通信を閉じるタイミングの制御。 |
✍️ おわりに
ここまで読んでいただきありがとうございます🙇
今回はRFC 9112について簡単にまとめてみましたが、以前投稿したRFCとはなんぞやと一緒に読んでいただければ、さらにRFCについての理解が深まるかと思います。
📚 参考文献・関連リンク
👤 著者について
- X: @h_kawasaki_
- GitHub: 42kharuya
いいねやフォローをいただけると執筆の励みになります!🚀