問題: ネットワークの構築

目次

コンピューターネットワークを構築したいとしよう。そのネットワークは地球規模に成長する可能性があり、サポートすべきアプリケーションは通話会議、ビデオ・オン・デマンド、電子商取引、分散コンピューティング、電子図書館など多岐にわたるとする。ネットワークの構成要素として採用できる利用可能な技術はどれだろうか? その構成要素を効率的な通信サービスへと統合するにはどういったソフトウェアアーキテクチャを設計すべきだろうか? この質問に答えられるようになることは本書の最も重要な目標である ── 本書では利用可能な構成要素を説明し、それらの構成要素がネットワークをゼロから作るときにどのように利用できるかを示していく。

コンピューターネットワークの設計方法を理解するための説明を始める前に、まずコンピューターネットワークとは正確に何なのかについて合意しておく必要がある。かつて「ネットワーク」という用語はダム端末メインフレームに接続するのに使われるシリアルラインの集合を意味していた。これ以外の重要なネットワークとしては、音声電話ネットワーク、あるいは映像信号を配信するためのケーブルテレビネットワークがある。こういったネットワークが共通して持つ重要な特徴は、特定の種類のデータ (キーの打ち込み、音声、映像) の処理に特化しており、特殊用途のデバイス (端末、受話器、テレビセット) に接続される場合が多いことである。

コンピューターネットワークと他の種類のネットワークを分けるものは何だろうか? コンピューターネットワークの最も重要な特徴はおそらくその一般性だろう。コンピューターネットワークを主に構成するのはプログラム可能な汎用ハードウェアであり、それらは音声通話や映像信号の配信を行う特定のアプリケーション用に最適化されていない。その代わり、コンピューターネットワークを構成するハードウェアは様々な種類のデータを伝達でき、サポートできるアプリケーションの範囲は大きい (この範囲は現在でも大きくなり続けている)。現代のコンピューターネットワークは、かつて単一用途ネットワークが担当した機能をほぼ全て置き換えている。本章ではコンピューターネットワークの典型的なアプリケーションを紹介し、そういったアプリケーションをサポートしたいと思っているネットワーク設計者が念頭に置かなければならない要件を議論する。

そうして要件を理解したら、続いて何をすべきだろうか? 幸い、我々が最初のネットワークを作ることはない。先人たち、特にインターネットを管理する研究者コミュニティが、我々の前を行っている。本書ではインターネットから得られた豊富な経験を設計の指針として利用する。この経験はネットワークアーキテクチャ (network architecture) として表現される。ネットワークアーキテクチャは利用すべきハードウェアとソフトウェアコンポーネントを特定し、それをどう組み合わせれば完全なネットワークを構築できるかを示す。

ネットワークの構築方法を理解するのに加えて、ネットワークを運用・管理する方法やネットワークアプリケーションを開発する方法を理解する重要性も近年高まっている。コンピューターネットワークはほとんどの家とオフィス、そしてときには車にさえ存在するので、ネットワークの運用はもはや少数の専門家だけが考える問題ではない。加えて、近年のスマートフォンの爆発的な普及によって、これまでよりずっと多くの開発者がネットワークを利用するアプリケーションの開発に着手している。よって我々はネットワークの構築者、運用者、そしてネットワークアプリケーション開発者のそれぞれの視点からネットワークを考える必要がある。

ネットワークを構築、運用、そしてプログラムから利用する方法を理解する旅路の最初の一歩となる本章では、次の四つのことを行う。第一に、異なるアプリケーションと異なるコミュニティの人々がネットワークに求める要件を探る。第二に、ネットワークアーキテクチャの概念を紹介して本書の残りの部分の基礎を固める。第三に、コンピューターネットワークの実装で鍵となる要素をいくつか紹介する。第四に、コンピューターネットワークのパフォーマンス評価で使われる重要な基準を紹介する。

広告