【RFCの読み方】RFC文書を読むときの前提知識

ネットワークでおさえておくべき標準化団体で、標準化団体のひとつとしてIETFについて紹介しました。RFCはIEFTが発行している公開文書です。
新人さんは先輩エンジニアに「質問する前にRFCを読みましょう」「仕様はRFCで確認しましょう」と言われたりしますが、そもそも読み慣れていないと、どうやって読んだらいいかわかりません。今回は、RFCとはなにか、RFCの読み方などについて、など私の経験をもとにご紹介します。

RFCとは?

RFC(Request For Comments)はインターネットで用いられる技術の標準化や運用に関する幅広い情報共有を行うために公開されるIETF文書シリーズです。インターネットの様々な技術的仕様、ルール、情報、TIPSを公開しています。

RFC文書のステータス

RFC文書は一度公開されると基本的には変更できませんので、必ず文書の現在のステータスを確認します。せっかく読んでも情報が古かったら意味がありません。以前は、インターネット標準化の過程が3段階となっていましたが、現在ではDraft Standardが廃止され2段階となっています。
ここで知っておくべきことは、すべての文書が標準化プロトコルを規定しているものではない、ということです。

カテゴリ 説明
Standards Track STANDARD 標準化の最終段階の文書。STD番号が割り振られており、標準プロトコルとなっている状態。
(DRAFT STANDARD) 以前は標準化になる一歩手前の状態の文書。RFC6410によって削減されたが、古いRFCではまだこのCategoryのものは存在する。
PROPOSED STANDARD 標準化への提唱がされている状態の文書。
EXPERIMENTAL 標準化が目的ではない実験的な情報を含む文書。
INFORMATIONAL 標準化が目的でない情報提供が目的の文書。
HISTORICAL 現在では使用されていないが、過去の議論を残すための文書。
BEST CURRENT PRACTICE 現時点での最良の実践を規定されている文書。IETFが支持する技術的関連情報を発行するためにRFC1818(BCP:1)で定められた。BCP番号が割り振られている。
UNKNOWN 1990年以前のRFCのうち、未分類の文書。

また、RFC自体は公開後修正できませんので、RFC編集者の公表しているERRATA(正誤表)があるかどうかも確認します。

RFC Editor - RFC ERRATA

RFCの原文

RFCの原文は英語で公開されています。日本語訳のサイトもありますが、機械翻訳をしている場合が多いため、意味がよくわからない場合があります。IEEEやITUと比較すると読みやすい英語ですので、一度原文のままでチャレンジしてみてもよいかもしれません。

原文のままで読まれる際は、最初にRFC2119RFC8174を読んでみるとRFC独特の英語が理解できます。要約するとこんな感じです。

MUST,REQUIRED,SHALL
その規定が該当仕様の絶対的な要請事項
MUST NOT,SHALL NOT
その規定が該当仕様の絶対的な禁止事項
SHOULD,RECOMMENDED
特定の状況下では特定の項目を無視する正当な理由が存在するかもしれないが、異なる選択をする前に該当項目の示唆するところを十分に理解し慎重に重要性を判断しなければならない
SHOULD NOT,NOT RECOMMENDED
特定の動作が容認できるないし非常に有用であるというような特定の状況下では正当な理由が存在するかもしれないが、このレベルの動作を実装する前に該当項目の示唆するところを十分に理解し重要性を判断しなければならない
MAY,OPTIONAL
ある要素が選択的であることを意味する。その要素を求めている特定の市場、ベンダーはその要素を提供しないだろうが、その製品機能を拡張すると察知して、その要素を含む選択をベンダーがあるかもしれない。その選択事項(オプション)を含まない実装は、おそらく機能的に劣ることになるがそのオプションを含む他の実装との相互運用に備えなければならない(MUST)、同様に特定のオプションを含む実装は、そのオプションを含まない実装との相互運用に備えなければならない(MUST)

これらの語句は全て大文字の場合のみ、この文書で定義された特別な意味をもつ 、小文字の場合は通常の英語の意味をもち、この文書の影響はない。

RFCリーダー

一昔前のIETFのサイトでのRFCは読みづらく探しづらかったのですが、RFC Editorの登場により、格段に読みやすくなりました。ステータスやキーワードなどでの検索も可能です。
RFCリーダーは、RFC Editor以外にもいろいろ存在します。私は10年前くらいからRFC Readerというサイトを利用していました。ログイン機能があり、コメントもかけるため大変重宝していましたが、最近更新されていないので現在では使用していません。
検索してみるといろいろありますので、お好みにあったものをお使いください。

RFCを読むときのコツ

RFCは、仕様に限らず様々な文書が公開されています。なかには、ジョークRFCやポエムなども存在します。文書が作成された背景を知り、作成された日付やカテゴリ、ステータスをチェックするようにしましょう。
いくら一次ソースが大事とはいえ、慣れないうちはなかなか必要な情報にたどり着くことが難しいこともあります。その場合は、二次ソース情報(書籍、テックブログ、セミナーなど)も併用して、情報を多角的に読むことが大切だと思います。
次回は、RFCのヘッダ情報について解説しますので、ぜひそちらもご覧ください。