Broadband Watch logo
バックナンバー

その116「DLNAの仕組み」
[2007/03/26]
その115「ドメインとActive Directory」
[2007/03/19]
その114「ワークグループができること」
[2007/03/12]
その113「WPSの仕組み」
[2007/03/05]
その112「Gopherの生い立ちと現在」
[2007/02/26]
その111「Wikiの使われ方」
[2007/02/19]
その110「文字コードとは」
[2007/02/05]
その109「IISの生い立ち」
[2007/01/29]
その108「NASの登場と一般への普及」
[2007/01/22]
その107「HomePNAのいろいろ」
[2007/01/15]
その106「Ogg Vorbisの成り立ち」
[2006/12/25]
その105「MIDIの原理とSMFの構造」
[2006/12/18]
その104「AIFFの構造」
[2006/12/11]
その103「WAVの構造と現状」
[2006/12/04]
その102「WMAの歴史」
[2006/11/27]
その101「AACの特徴」
[2006/11/20]
その100「MP3/MPEG Audioの仕組み」
[2006/11/13]
その99「HSDPAの仕組み」
[2006/11/06]
その98「H.264・MPEG-4 AVCの特徴」
[2006/10/30]
その97「IEEE 802.16e(モバイルWiMAX)の特徴」
[2006/10/23]
その96「TIFFの特徴」
[2006/10/16]
その95「PNGの現状と今後」
[2006/10/02]
その94「GIFの構造」
[2006/09/25]
その93「10GBASEの種類(2)」
[2006/09/11]
その92「10GBASEの種類」
[2006/09/04]
その91「GbEのいろいろ」
[2006/08/28]
その90「JPEGの特徴」
[2006/08/21]
その89「DivXの広がり」
[2006/08/07]
その88「MPEGの仕組み」
[2006/07/31]
その87「WMVのこれまで」
[2006/07/24]
その86「AVIの生い立ちとそのコーデック」
[2006/07/10]
その85「QuickTimeの変遷」
[2006/07/03]
その84「Realのこれまでと今後」
[2006/06/26]
その83「ShareとWinny」
[2006/06/19]
その82「DOCSISの仕組み」
[2006/06/12]
その81「SQLインジェクションの流れ」
[2006/06/05]
その80「RSSの動作」
[2006/05/29]
その79「Skypeの仕組み」
[2006/05/22]
その78「BitTorrentの特徴と今後」
[2006/05/15]
その77「Winnyの仕組みと現状」
[2006/05/08]
その76「WinMXの特徴」
[2006/04/24]
その75「Gnutellaの歴史と構造」
[2006/04/17]
その74「Napsterの歴史」
[2006/04/10]
その73「P2Pのいろいろ」
[2006/04/03]
その72「IEEE 802.11nの動向」
[2006/03/27]
その71「ActiveX Scriptingの動作」
[2006/03/20]
その70「Ajaxの仕組み」
[2006/03/13]
その69「DHTMLの動作」
[2006/03/06]
その68「Scriptの定義」
[2006/02/27]
その67「JavaScriptの仕組み」
[2006/02/20]
その66「Javaの動作」
[2006/02/13]
その65「RFCのプロセス」
[2006/02/06]
その64「ActiveX DocumentとActiveX Controlの違いと共通点」
[2006/01/30]
その63「ActiveX Controlの機能」
[2006/01/23]
その62「ActiveXを構成するもの」
[2006/01/16]
その61「Cookieの仕組みと用途」
[2005/12/26]
その60「malwareとその分類」
[2005/12/19]
その59「rootkitの動作」
[2005/12/12]
その58「CSSの役割」
[2005/12/05]
その57「HTMLの変遷」
[2005/11/28]
その56「PONとその種類」
[2005/11/21]
その55「FWAの仕組み」
[2005/11/14]
その54「DoSとDDoS」
[2005/11/07]
その53「SNMPとMIBの動作」
[2005/10/03]
その52「Jumbo Frameとフレームサイズ」
[2005/09/12]
その51「WPA2の仕組み」
[2005/09/05]
その50「WPAとWPA-PSKの違い」
[2005/08/29]
その49「WPAの仕組み」
[2005/08/22]
その48「WebDAVの動作」
[2005/08/08]
その47「OFDMAの仕組みとOFDMとの違い」
[2005/08/01]
その46「OFDMの仕組み」
[2005/07/25]
その45「WiMAXの特徴」
[2005/07/11]
その44「Wi-Fiの役割」
[2005/07/04]
その43「FTPの目的と動作」
[2005/06/27]
その42「UPnPの動作」
[2005/06/20]
その41「ネットマスクの仕組み」
[2005/06/13]
その40「ARPの機能」
[2005/06/06]
その39「DNSの原理」
[2005/05/30]
その38「デフォルトゲートウェイの役割」
[2005/05/23]
その37「MACアドレスの仕組み」
[2005/05/16]
その36「スイッチとその進化」
[2005/05/09]
その35「ルータによるメリット」
[2005/04/25]
その34「ブリッジの原理」
[2005/04/18]
その33「リピータの機能」
[2005/04/11]
その32「IPアドレスのクラス」
[2005/04/04]
その31「ブロードキャスト/マルチキャスト/ユニキャスト」
[2005/03/28]
その30「SMTP AUTHと認証の種類」
[2005/03/14]
その29「Submissionポートとスパムメール対策」
[2005/03/07]
その28「Outbound Port25 Blockingとは」
[2005/02/28]
その27「PGPの仕組み」
[2005/02/21]
その26「PKIと認証局」
[2005/02/14]
その25「公開鍵暗号方式とは」
[2005/02/07]
その24「共通鍵暗号とは」
[2005/01/31]
その23「SSHの仕組みと応用」
[2005/01/24]
その22「SSLの役割」
[2005/01/17]
その21「POP3とIMAP4の違い」
[2004/12/27]
その20「POP3の役割と機能」
[2004/12/20]
その19「SMTPの機能と問題点」
[2004/12/13]
その18「SPIとパケットフィルタリング」
[2004/12/06]
その17「LANの概念とその広がり」
[2004/11/29]
その16「SIPの役割」
[2004/11/15]
その15「プロキシの利用」
[2004/11/08]
その14「VoIPの仕組み」
[2004/11/01]
その13「イーサネットとは」
[2004/10/25]
その12「IP/TCP/UDP/ICMPとは」
[2004/10/18]
その11「DHCPの役割」
[2004/10/04]
その10「MIMOとは」
[2004/09/27]
その9「DMZとその効果」
[2004/09/13]
その8「ファイアウォールとは」
[2004/09/06]
その7「NATとNAPTの違いとIPマスカレード」
[2004/08/30]
その6「VPNとVPNパススルーの仕組み」
[2004/08/23]
その5「無線LANの問題とWEP」
[2004/08/09]
その4「IEEE 802.11a/b/gって何を意味しているの?」
[2004/08/02]
その3「ダイナミックDNSって?」
[2004/07/26]
その2「グローバルIPアドレスとプライベートIPアドレス」
[2004/07/12]
その1「PPPoEって何だろう?」
[2004/07/05]

その65「RFCのプロセス」


RFCって何?

 1月初旬、SSHに関するRFCが公開されました。RFC4250からRFC4256までの7つがそれなのですが、個人的には「え? RFCじゃなかったの?」ということにむしろ驚いたりもしました。そこで思いついたのが、「そういえば、そもそもRFC自体の説明をしていなかったなぁ」ということ。そんなわけで、今回はRFCを取り上げてみたいと思います。

 RFCは「Request For Comment」の略で、直訳すれば「コメント募集」なわけですが、日本語では「標準勧告文章」と訳されるのが一般的です。文字通り、インターネットに関わるさまざまなプロトコルや技術的手段、情報などを網羅するものであり、事実上インターネットを規律する唯一の根拠と言っても良いでしょう。もっとも、インターネットはRFCを拠り所に運営されているわけで、その意味では規範と言っても良いわけですが、実際のRFCはもう少しくだけた感じに作られていたりします(これは後述)。


RFCのプロセス

 では、RFCはどんな具合に定められ、利用されているかをご紹介します。ただ、その前にRFCの標準化を含む、活動全般を行なっている組織の説明をしておくべきでしょう。まず、標準化団体として1989年に設立されたのが「IAB(Internet Artivities Board:インターネット活動委員会)」です。

 IABはその後、「Internet Architecture Board(インターネットアーキテクチャ委員会)」と名前を変えて現在も存在しています。当初はこのIABがRFCの標準化にまつわる作業を手がけていました。その後、IABの上位組織として「ISOC(Internet Society:インターネット学会)」が1992年に設立されるとともに、IABの下位組織として「IETF(Internet Engeneering Task Force:インターネット技術標準化委員会)」が設立されました。

 現在、RFCの標準化処理に責任を持つのが、このIETFです。ただし、実際の標準化作業は、IETFの下に「IESG(Internet Engeneering Steering Group:インターネット技術標準化運営グループ)」という組織が設けられ、ここがハンドリングしています。そんなわけで、RFCの標準化作業は、IESGが行なうことになっています。


 さて、そのIESGがどんな形でRFCを標準化していくか、という過程を次に説明します(図1)。まず、誰かがドラフト(Internet Draft)を作ります。これは極端な話、誰が作っても構いません。RFCのフォーマットにのっとり(実はこのフォーマットそのものも、RFCに定義されています)、RFCを発行するに足る要件を満たしていれば(これが結構怪しいのですが)、誰でもRFCのドラフトを作成できます。

 また、まったく別の組織が作成したプロトコルがここに持ち込まれる場合もあります。冒頭で述べたSSHなどこの良い例であって、その23で説明した通り、当初SSHは商用製品として出発、その後オープンソースなどで利用されていく中でRFC化の必要性が出てきたということです。

 さて、ドラフトもしくはすでに存在するプロトコルがIESGに持ち込まれた場合、まずここで最初の審議が行なわれます(現在どんなドラフトが持ち込まれているのか、というのはこちらのページから見ることができます)。必要な要件を満たし、標準化の価値がありと見なされた場合、そこでRFCの番号が割り振られるとともに、ドラフトは標準化提案(Proposal Standard)というステージに格上げされます。

 この段階で、複数のグループによりそのプロトコルの実装やテストが行なわれ、必要ならば改訂も行なわれます。この標準化提案の期間は最低6カ月とされており、ここで問題がなかった、あるいは解決されたという場合は、IESGの承認のもとに標準化草案(Draft Standard)のステージとなります。このステージにおいては、最低4カ月以上、広範なテストやさまざまな意見の募集を行なうことになっています。ここでもさらに問題がないとみなされた場合、IESGの承認を経て標準(Standard)のステージになります。

 その後、プロトコルの内容が変わらずにずっと使いつづけられる限り、そのRFCはStandardのステージに居続けるわけですが、例えば新規の拡張とか、これを包括する上位あるいは別プロトコルがRFCとして出現し、標準化された場合、旧RFCは自動的に歴史(Historic)の扱いに変わります。廃案化されたRFCはObsoletes(廃物)として扱われてHistoricのカテゴリに入れられるほか、はじめから歴史を記述したもの(例えば、RFC2235がこれにあたります)もここに入れられます。また、標準化の過程で廃案になったものも、やはりHistoricになるわけです。


図1:RFCの標準化プロセス

RFCの扱い

 さて、このRFCがインターネットプロトコルをはじめとするさまざまな技術の標準として扱われているわけですが、それはなぜか? というと、いくつか理由があります。まず、法制度面から言うと、RFCは「ISO(International Organization for Standardizatuon:国際標準化機構)」の「PAS(Publicity Available Specification:公開仕様案)」として認知されています。

 このPASというのは、要するにRFCで標準化されたものはそのまま国際標準として転換して良いというもので、ISOそのもので標準化された基準とは区別されますが、現実問題としてはほぼ同様の扱いをされています。ISOで定められた国際標準は、日本ならJISでそのまま標準化されることも少なくないわけで、RFCはつまりこれに準じた標準規格であると認知されているわけです。標準化された規格(というか、RFCですからプロトコル)が尊ばれるのは当然のことです。

 また、標準化の過程がオープンで、しかも標準化に対して意見を述べやすいのも特徴の1つです。先の標準化プロセスの中で、標準化提案や標準化草案の段階のRFCに対してコメントを出すことは容易であり(Request for Commentという名前がそもそも、こうした審議の過程でなるべく多くのコメントを出してくれという意味なあたりからも、これが伺えます)、これもまたRFCが尊ばれる理由の1つであります。もちろん、意見が紛糾して議論が収束しないケースもあるので、必ずしもこの仕組みが万能というわけではないのですが、それでも密室で勝手にスペックが決まったりするよりは、はるかにマシであると考える人が多いようです。

 RFCの難点があるとすれば、標準化された規格ですから、プロトコルそのものを商売にするのが難しくなることでしょう。例えば、RealNetworks社のReal VideoやMicrosoftのWindows Videoはストリーミング配信をサポートしていますが、これらのストリーミングプロトコルは公開されておりません。というのは、プロトコルそのものがノウハウの塊であり、両社にとってこれをRFCにしてしまうと、自社の製品が売れなくなることを当然恐れているからです。こうしたケースは結構多いわけで、プロトコルそのものを商売の種にするベンダーにとってRFCは非常に使いにくいものになっています。


余談

 冒頭、「実際のRFCはもう少しくだけた感じに作られていたりします」というように書きましたが、いくつか具体例をご紹介したいと思います。

RFC1149
 IPデータグラムの転送に鳥類(!)を使った配送方法。パケットの内容を印刷し、鳥の足にくくりつけて飛ばすことを想定しています。要するに伝書鳩のIP版なのですが、これにトライしたグループが出てきたことで、真面目(?)な規格になってしまいました。

RFC1313
 (架空の)インターネットラジオの番組表。

RFC1882
 「クリスマス前の12日間のテクノロジー」(なんか読んでいたらJITTERIN’JINNの「プレゼント」を連想してしまいました)。

RFC1926
 ATM(音響伝達媒体)経由でのIPデータグラムの転送。要するにモールス信号を使ってIPパケットを送る方法を記述しています。

RFC2322
 洗濯バサミを使ってDHCPの管理を行なう方法。日本でこれの実装例を紹介されているもおられます(笑)。

RFC2549
 RFC1149のアップデート版で、QoSの概念が追加されています。しかし、ダチョウクラスって……。

RFC3514
 IPパケットに“悪意”があるかどうかを判断するbitを追加する、という試み。

RFC4042
 大昔のマシンの中には、8/16/32bitではなく9/18/36bitをベースにしたものがあります。有名なのはDECのPDP-10、その後継のDEC System20という、今から20年~30年ほど前に現役だったマシンですが、これらのために9bitを基本としたエンコーディング(UTF-9/UTF-18)を定めましょうというもの。次は旧ハニウェルとかNECの大昔のマシン用にUTF-6とかUTF-12が出てくるかも。

 これらは俗に「Joke RFC」と言われており、毎年4月1日には必ず新しいRFCが追加されますが、必ずしも4月1日だけではなく、12月とか3月とか、割と無関係に登場するケースもあります。面白いのは、こうしたJoke RFCを“真面目に”審議して通していることで、ISOとかJISでは考えられないおおらかさを感じます。もちろん、真面目なRFCは真面目に議論しているわけですが、こういう遊びを許容するのがRFCの文化、と考えれば良いでしょう。


2006/02/06 10:54

槻ノ木 隆
 国内某メーカーのネットワーク関係「エンジニア」から「元エンジニア」に限りなく近いところに流れてきてしまった。ここ2年ほどは、企画とか教育、営業に近いことばかりやっており、まもなく肩書きは「退役エンジニア」になると思われる。(イラスト:Mikebow)
Broadband Watch ホームページ
Copyright (c) 2006 Impress Watch Corporation, an Impress Group company. All rights reserved.