第2回 Internet StandardsとRFC:詳説 TCP/IPプロトコル(2/6 ページ)
インターネットの標準的なプロトコルは「Internet Standards」と呼ばれ、 ISOC(Internet Society)が管理している。
前回の記事では、ARPAの研究から誕生したARPANETが現在のインターネットの基礎となったと述べた。しかしARPA自身は研究機能を持っておらず、研究計画の管理のみを行っていた。そして外部の団体や個人の研究者に資金を提供して、ネットワーク技術の開発を進めていた。ARPANETの開発もさまざまな研究者達によって行われていたが、当時はネットワークの技術はまだ確立されたものではなかったため、専門家ばかりがこの研究に携わっていたわけではない。大学院生など、多くの学生も参加して研究を進めていたのである。
ARPANETネットワークの研究グループは、公募によって集まった大学院生により構成されており、メンバーも流動的であった。そのため彼らは、いつか専門家が現れて、自分たちの研究を引き継ぐだろうと考えていた。このグループは、ARPANETが敷設される前年の1968年より、ネットワークをいかに使うかという議論を行っていた。翌年、その研究を論文にまとめることになるが、その内容は公式なものを定めようとしているわけではないということを伝えるため(他の研究者に誤解を与えないため)に「Request for Comments(コメントを求む)」という控えめなタイトルが付けられていた。これがRFCと呼ばれる一連のドキュメントの始まりである。その後、RFCはARPANETの研究者達の間で意見交換のための手段として定着し、さまざまなアイデアやプロトコルの仕様などを広めるための手段として機能するようになった。
ネットワーク プロトコルの公式ドキュメントRFC
RFCは、主にプロトコルを定義するために利用された。まずプロトコルの草案がRFCとして公開され、それをもとに検討や実験が行われ、プロトコルの改訂が行われるたびに、新たなRFCとして公開された。この過程で「Rough consensus and running code(大まかな合意と、動作するコード)」という、インターネット プロトコル開発に関する重要な考え方が育まれていった(RFC2031)。これは『(最初にプロトコルを厳密に定義してから実装を開始するのではなく)、関係者の間で大まかな合意を形成してから(意見を集約してから)、まずはとりあえず動くもの(プログラム コード)を作り、それを元にして最終的なプロトコルを完成させる』という考え方である。あるプロトコルを開発する場合、最初にその細部まで厳密に規定しておいてから開発(コードの実装)を始めるという方法もあるが、これだと、仕様が不必要に肥大化して複雑になり、実装も困難になる可能性がある。というのは、実際にプロトコルの実装作業を始めてみると、仕様決定時には分からなかったような不都合や非効率的な部分が見つかったり、(実装が困難もしくは仕様の詰めが不足していて)思ったほど有用ではなかった、ということがあるからだ。また、実際に使わない(使えない)ような不必要な機能まで仕様に盛り込んでしまう可能性も高い。このような無駄や不都合、無意味な複雑化を避けるため、まずは必要最低限のシンプルな仕様を作って実装を行い、実際に動作させて評価を行って、それをもとにして拡張したり、洗練させたりしていくという方法が、この言葉の意味するところである。
このような開発の進め方は、ARPANETが実験用のネットワークであり、研究者のためのネットワークであったことが関係しているのだろう。初期のインターネットも同様に実験的な意味合いが強く、この考え方を受け継ぐことになる。これらのネットワークの利用者は主にネットワークの研究者であり、その研究者があるプロトコルの必要性を感じると、そのプロトコルを実装してみる。プロトコルが一応の完成を見ると、RFCとして公開し、他の利用者にそのプロトコルの利用を促したり、意見を求めたりする。そのプロトコルが有用である場合は、広く普及し、利用者からの要求に応じて改訂を繰り返し、完成度が増し、ついにはネットワークで標準的なプロトコルとして認知されるのである。つまり、利用者が主体となってプロトコルは完成されるのだ。このような文化は、実験の域を脱した現在のインターネットにおいても受け継がれている。
インターネットでは、標準として認定されたプロトコルを「Internet Standards(インターネット標準)」と呼び、ISOC(Internet Society)という組織によって管理されている。その認定の過程は「Rough consensus and running code」のポリシーに従い、実装とテスト、およびそこからのフィードバックに基づいた改良に重点を置いたものになっている。
Internet Standardsを目指すネットワーク プロトコル
だれでもインターネットを利用するアプリケーションを開発することができるが、そこで使われているプロトコルが公開されなければ、そのアプリケーションを持っている人同士でしか通信ができないことになる。だから、より多くの人と通信を行おうとするなら、多くの人の要求を満たす(さまざまな環境で動く)アプリケーションを、プロトコルの開発者自身が用意しなければならない。しかしアプリケーションのプロトコルを公開して、だれでもそれを利用したアプリケーションを開発できるようにすれば、(それが有用ならば)より広く普及することになるだろう。
たとえば、現在では電子メールは広く普及し、非常に多くの人々によって利用されているが、ほとんどの電子メール アプリケーションは共通のプロトコルを利用しているので、相互に通信することができる。これは、電子メールのプロトコルが公開され、広く普及しているからこそ実現できたことである。もし、それぞれの電子メール アプリケーションが独自のプロトコルを使っているとすると、誰とでも通信できるわけではなくなり、とても不便だろう。実際、独自プロトコルを使ったメール システムは過去に多く存在していたが、現在ではインターネットと相互通信のできないようなメール システムはほとんどなくなってしまった。
自分たちが開発したプロトコルをわざわざ公開して、それを広く普及させようとする動機は、ネットワーク社会に対して貢献することであったり、利益のためであったりとさまざまであるが、現在では研究者のみならず、いろいろな組織や企業が開発したプロトコルを公開し、Internet Standardsを目指している。
Copyright© Digital Advantage Corp. All Rights Reserved.