はじめに
本記事では、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のうち、未分類のもの |
この内、仕様として標準化されるものは上の2つです。
この2つのCategoryをまとめて、 Standards Track
と記すこともあります。
標準化のプロセスは、 PROPOSED STANDARD
→ INTERNET STANDARD
のように進行します。
NOTE:
- RFC2026では
PROPOSED STANDARD
とINTERNET STANDARD
の間に位置するものとしてDRAFT STANDARD
というCategoryも定められていましたが、RFC6410によって削減されました。ただし、古いRFCではまだこのCategoryのものも見られます。
注意点:文書の状態
古い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
検索コンソールがなかなか高機能で使いやすいです。
機能・特長:
- キーワード検索
- Category (※ただし、このツール上は "Status" となっている) や公開日での絞り込み
- 検索結果画面でのObsoletes, Updates, Errataの表示
このサイトには他に、全RFCの一覧ページなどもあります。
RFC Reader
単一ページを読む際に、左サイドペインに目次が表示されます。RFCは長いものが多いので便利です。
会員機能もあり、お気に入りやブックマーク機能もあるようです。
検索結果一覧も見やすいのですが、RFC Editorと比べるとUpdates, Errata, Categoryといった情報が不足しています。
IETF Datatracker
RFC, Internet Draftだけでなく、会議のアジェンダや議事録、スライド資料なども検索できるオンラインデータベースです。
機能・特長:
- キーワード検索
- 検索結果画面でのObsoletes, Updates, Errataの表示
- 著者やWG、地域などでの絞り込み
RFC Editor同様に検索結果画面の情報がリッチで見やすいですが、Categoryでの絞り込みなどには対応していません。
IETF関係者が使う上では有用性がありそうだと思いました。
IETF Toolsには、他にも色々なツールがありますが、まだ試せていません。
その他のツールについて
他にも、「RFC Viewer」などで検索すると多数ヒットします。
日本語訳について
-
RFCの日本語訳リンク集 - JPNIC
- IPAほか各種団体が訳したものへのリンク集になっています。JPNICで訳されたものも含まれています。
- セキュリティ関連 RFC:IPA 独立行政法人 情報処理推進機構
- JPRS DNS 関連技術情報#DNS関連のRFC
- RFC « DNSSECジャパン ... DNSSEC関連RFC
その他、個人サイトなどでRFCの翻訳を公開しているものもたくさん見られます。
終わりに
ここに掲載した以外に有益な情報がありましたら、お知らせ頂けると嬉しいです。
コメントや編集リクエストを歓迎します。
参考
- Request for Comments - Wikipedia
- RFC/Internet-Draftの読み方 - ISOC-JP (PDF) ... 本記事の「RFCの種類」の表や「RFC内での助動詞の使い方」に示したRFC2119の訳文を記す上で大いに参考にさせて頂きました。
- RFC2026
- RFC2119
- RFC6410
- RFC8174