RFC(Request for Comments)とは何か。インターネットで使われる各種プロトコルを定めた技術標準の集まり--。こんな風に理解している人が多いのではないのだろうか。この理解はおおむね正しいのだが,正確ではない。一口にRFCといってもいろいろあるからだ。

 RFC文書はどれも,その先頭ページに文書の種類(目的)を表す「Status:」が付けられている。Statusは全部で7種類あるが,インターネット標準および候補は3種類だけ。まず「正式標準」として認められた「STD」(Standard=標準)。STDの一歩手前の「DS」(Draft Standard=標準化草案)。DSのさらにその前の「PS」(Proposed Standard=標準化提唱)である。DSとPSは,標準の候補という位置づけだ。

 2001年4月6日現在,3000強のRFCが公開されているが,このうち正式標準として認められたSTD文書は約70しかない。実は,現時点で事実上の標準として使われているプロトコルの中には,DSやPSのRFCを基にしているものも少なくない。例えばWebアクセス・プロトコル「HTTP1.1」(RFC2616)やIPアドレス割り当てプロトコル「DHCP」(RFC2131)はDSである。

 RFCのこのような運用はインターネット・コミュニティ独特の開発手法「Rough consensus and running code=大まかに合意したら動くコードを」と関連している。これは,詳細な仕様を決めてから技術を開発するのではなく,最低限の機能を持つプロトタイプを作り,それを見ながら最終仕様を決めていく開発手法を意味する。

 残りの4種類は,Infomational(=情報),Experimental(=実験),Historical(=歴史),Best Current Practice。これらはどれも,正式なインターネット標準ではない。それでも,製品化に当たって考慮すべき留意点をまとめたものや,運用上の注意点をまとめたものなど,技術者にとって有用な文書がいくつもある。また,ベンダーが自ら開発した技術を開示しているケースもある。

 もっとも,すべてのRFCが堅苦しい技術文書というわけでもない。ちょっと風変わりなRFCを紹介しよう。いわゆる「ジョークRFC」だ。ここ数年は,毎年4月1日に新作が公開される習わしになっているようだ。ちなみに今年の新作は次の3作である。

・RFC3091 「Pi Digit Generation Protocol」(円周率を生成するプロトコル)
・RFC3092 「Etymology of "Foo"」(Fooの語源)
・RFC3093 「Firewall Enhancement Protocol」(ファイアウォール拡張プロトコル)

 ジョークRFCの多くは,ナンセンスな前提を仮定したうえで,本来のRFCと同じ形式で技術仕様をまじめに記述するというスタイルのものが多い。例えば,RFC3093は,ファイアウォール経由ですべてのプロトコル通信を可能にするために,IPをHTTPプロトコル上にカプセル化するにはどうするか? という内容になっている。これなどは,正直言ってかなり技術に詳しくないと笑えないだろう(通常,HTTPはファイアウォールを超えられるので,IPをHTTPでカプセル化できればすべてのIPアプリケーションがファイアウォールを超えられることになる)。

 逆に言えば,ジョークRFCで笑えるなら技術者として一人前とも言えるわけだ。自分のレベルを知るために,一度,目を通してみてはいかがだろうか? とりあえず翻訳も多数出ている名作,RFC1149「A Standard for the Transmission of IP Datagrams on Avian Carriers (鳥類キャリアによる IP データグラムの伝送規格)」あたりから挑戦することをお薦めする。

山田 剛良

関連リンク

RFCを編集する「RFC Editor」の公式ページ
JPNICによるRFC翻訳プロジェクトのサイトにあるRFCの解説(連載中)
よっち氏によるジョークRFCの解説ページ。日本語訳へのリンク多数