rfc

RFC標準を調べるための知識やツール

はじめに

本記事では、RFC (Request for Comments) で提案・標準化された仕様を探して読むための基礎知識や、Web上で利用できるツール等について記します。

想定読者は、Web技術に関わるエンジニアで、RFCを参照して標準仕様を調べる機会がある人です。

ここに書かないこと

  • RFCとは何か
  • Internet-Draft (I-D) 段階の議論の追い方
  • I-Dから標準化に至るまでの細かいプロセス

基礎知識

RFCの種類

すべてのRFCが標準仕様というわけではありません。
RFCは次のように、いくつかのCategoryに分類されます。

Category 説明
INTERNET STANDARD 国際標準とすべき仕様の最上位。STD番号が割り振られる
PROPOSED STANDARD 複数の組織での独立な実装と、それらの相互接続性が確認されているもの
EXPERIMENTAL 標準化が目的ではない調査や検討などを含む文章。特定の企業が自社の仕様を公開する際にも用いられる。
INFORMATIONAL 標準化が目的でない情報提供が目的の文章。公式度が低い前提。 HISTORICAL 標準化の過程がわかるよう、過去の議論を残すための文章。
BEST CURRENT PRACTICE 現時点での最良の実践。IETFが支持する技術的関連情報を発行するためにRFC1818(BCP:1)で定められた。BCP番号が割り振られる。
UNKNOWN 1990年以前のRFCのうち、未分類のもの

この内、標準化に関わるCategoryは上の2つです。
この2つをまとめて、 Standards Track と記すこともあります。

標準化のプロセスは、 PROPOSED STANDARDINTERNET STANDARD のように進行します。

NOTE:

  • RFC2026では PROPOSED STANDARDINTERNET STANDARD の間に位置するものとして DRAFT STANDARD というCategoryも定められていましたが、RFC6410によって削減されました。

注意点:文書の状態

古いRFCは、後のRFCによって更新 (= Update) されたり、廃止 (= Obsolete) されることがあります。
特に、古い技術系の記事などで言及されているRFCを素直に辿ると、それがout-of-dateなものであっても気づけないことがあります。
従って、あるRFCを見るときに、それが後のRFCによって更新・廃止されていないかがわかるツールを使うことが大事だと思います。

RFCの構成

1つのRFC文書は概ね次のような構成になっています。

ヘッダ                // RFC番号やCategory, Obsoletes, Updates情報など
タイトル
Abstract
Status of This Memo  // 定型文
Copyright Notice     // 定型文
Table of Contents
1. Introduction
  1.1. Conventions and Terminology  // 助動詞の使い方(RFC2119 or 8174)を定義した定型文
  :
:                    // 本文
Acknowledgements
Author's Address

RFC内での助動詞の使い方

個々の仕様の強制力を表すための助動詞の使い方がRFC2119で定められ、RFC8174で更新されました。

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

ツール

いくつか知っているものを、オススメ順に挙げます。

RFC Editor

https://www.rfc-editor.org/

検索コンソールがなかなか高機能で使いやすいです。

  • キーワード検索
  • Category (※ただし、このツール上は "Status" となっている) や公開日での絞り込み
  • 検索結果画面でのObsoletes, Updates, Errataの表示

といった機能があります。

その他、全RFCの一覧ページなどもあります。

RFC Reader

http://www.rfcreader.com/

単一ページを読む際に、左サイドペインに目次が表示されます。RFCは長いものが多いので便利です。
会員機能もあり、お気に入りやブックマーク機能もあるようです。

検索結果一覧も見やすいのですが、RFC Editorと比べるとUpdates, Errata, Categoryといった情報が不足しています。

IETF Tools

https://tools.ietf.org/

いわば本家サイトです。
RFC一覧ページはObsoletes, Updates, Statusの情報もあり、網羅性があります。

https://tools.ietf.org/html/ には検索フォームがありますが、キーワード検索のみで、Internet Draft段階のものも結果に含まれるので、標準を調べたい人には使いづらいのではないでしょうか。

このサイトには、他にも色々なツールがありますが、まだ試せていません。


他にも、「RFC Viewer」などで検索すると多数ヒットします。

日本語訳について

その他、個人サイトなどでRFC訳を公開しているものもたくさん見られます。

終わりに

ここに掲載した以外に有益な情報がありましたら、お知らせ頂けると嬉しいです。
コメントや編集リクエストを歓迎します。

参考