RFCの読み方

エンジニアノート

 

前回、標準化団体でIETFについて少し触れました。RFCはIEFTが発行している公開文書です。「質問する前にRFCを読みましょう」「仕様はRFCで確認しましょう」と言われたりしますが、そもそも慣れていないとRFCをどこでどう読んだらいいかわかりません。今回は、RFCとはなにか、RFCの読み方などについて、私の経験をもとに解説したいと思います。

RFCとはなにか

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

文書のステータス

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

Category 説明
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の英語

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 Editor(別ウィンドウ・外部リンク)

RFC Reader(別ウィンドウ・外部リンク)

RFCを読むときのコツ

いろいろ書きましたが、RFCは、仕様に限らず様々なインターネットの事柄を記述しています。なかには、ジョークRFCやポエムなども存在します。文書が作成された背景を知り、作成された日付やカテゴリ、ステータスをチェックするようにしましょう。
いくら一次ソースが大事とはいえ、慣れないうちはなかなか必要な情報にたどり着くことが難しいこともあります。その場合は、二次ソース情報(書籍、テックブログ、セミナーなど)も併用して、情報を多角的に読むことが大切だと思います。
次回は、ステータス以外にもチェックしたほうがよい情報を紹介する予定です。

関連記事

note_addRFC関連

RFCの読み方(本記事)

RFCのヘッダ情報 ~RFCの読み方パート2~

【番外編】ジョークRFCの読み方

【番外編】ジョークRFCの読み方 ~2022年エイプリルフール最新版~

note_addネットワーク標準化関連

ネットワークでおさえておくべき標準化団体