
「スペイン宗教裁判を予想した者はいない」という有名なモンティ・パイソンのギャグがありますが、インターネットもまた、誰もその登場を予想していませんでした。インターネットの原型であるARPANETが誕生したのは、そのギャグを生み出したコメディグループ、モンティ・パイソンが活動を始めた1969年と同じ年です。しかし、その後の約10年間、インターネットはファイル共有など限られた用途に使われる便利な仕組みと考えられており、数十年後に私たちの生活を大きく変える存在になると予想していた人はほとんどいませんでした。
コンピュータを本格的なインターネット時代へと導いた最大の立役者の一つが、カリフォルニア大学バークレー校です。同大学はUnixを独自に発展させたBerkeley Software Distribution(BSD)を開発しました。
Linux Professional Institute(LPI)は、BSD Specialist認定を通じてBSDの普及と発展を支援しています。本記事は前後編の2回にわたり、BSDとインターネットがどのように発展し、お互いに大きな影響を与え合ってきたのかを紹介します。実は、BSDはインターネットの発展に不可欠な存在であっただけでなく、インターネットもまたBSDの発展に欠かせない存在だったのです。
インターネットは、正式には米国国防総省が生み出した技術です。その起源は、同省のAdvanced Research Projects Agency(ARPA:高等研究計画局)が進めた研究プロジェクトにあります。
ARPANETは1969年に運用を開始し、その後1970年代から1980年代にかけて、ヴィント・サーフらによるTCP/IPの開発によって、現在のインターネットへと発展していきました。
しかし、通信プロトコルは標準化されたものの、プログラムからネットワーク機能を利用するためのインターフェースは扱いづらく、標準化も十分ではありませんでした。
そこで、後にDARPAへ改称されたARPAは、1970年代後半、インターネットに対応したオペレーティングシステムの開発に本格的に取り組むことを決定します。
その候補として最も有力だったのがUnixでした。Unixはさまざまなハードウェア上で動作する移植性の高いOSであり、国防総省と関わりの深い研究者の間でも広く利用されていました。
興味深いのは、DARPAが世界有数の大企業であるAT&Tの提供する公式Unixではなく、カリフォルニア大学バークレー校の大学院生たちが開発していたBSDを選択したことです。この大胆な判断は、DARPAの革新的な姿勢を象徴するものでした。
もちろん、BSDの発展は大学の学生だけによるものではありません。BSDの中心人物として、長年ソースコードとプロジェクト運営の両面で大きく貢献したMarshall Kirk McKusick氏は、1979年から1993年までの主要な貢献者一覧を提供しています。その一覧には、大規模なサブシステムを提供した約60名・団体に加え、数百人もの開発者が名を連ねています。
DARPAがバークレー校を高く評価した理由はいくつかあります。
第一に、Unixへ数多くの重要な改良を加え、高い技術力と開発力を示していたことです。
そして何より大きかったのは、そのライセンス形態でした。BSDでは、ソースコードを誰でも自由に利用できる形で公開していたのです。
つまり、BSDは今日でいうフリー/オープンソースソフトウェアの先駆けとも言える存在でした。
もちろん、その実現までの道のりは単純ではありませんでした。バークレー校が開発したコードはAT&TのUnixを補完する形で提供され、AT&T版Unixをライセンス契約した利用者は両者を組み合わせて利用していました。その中でも、BSDのネットワーク機能は最初に独立して公開された部分でした。
DARPAからの支援を受け、バークレー校はBSDを発展させるために重要な3つの取り組みを行いました。
このような理由から、インターネットの存在はBSDの成功に欠かせない要素だったと言えます。そしてDARPAとの共同開発によってBSDはさらに重要な存在となりました。
BSD 4.1および4.2で初めて公開された成果により、多くのシステムが共通のインターネットへ接続できるようになりました。さらに、その後のBSD 4.3は、2006年にInformationWeek誌から「史上最も偉大で、世界に最も大きな影響を与えたソフトウェア」とまで評価されています。
BSDそのものについて詳しく見る前に、まず重要なのは、BSDが開発したネットワーク技術はBSDだけのものではなかったという点です。Unix系だけでなく、Unix以外のさまざまなオペレーティングシステムでも利用できました。
この互換性こそが、1989年にティム・バーナーズ=リーが既存のインターネット技術や構造化マークアップ言語などを組み合わせてWorld Wide Web(WWW)を生み出す土台となりました。
Webの誕生によってインターネットは誰も予想しなかったほど急速に普及し、電子商取引やAPIによるシステム連携など、現在のインターネット社会を支えるさまざまな技術の発展へとつながっていきました。
ネットワーク通信の基本となるのは、ネットワーク経由でデータを送受信するシステムコールです。
あらゆるオペレーティングシステムはネットワーク層へアクセスする仕組みを備えていますが、そのほとんどは現在でも**Berkeley Sockets(バークレーソケット)**を基礎としています。
ソケットとは、ネットワークプログラミングをファイル操作と同じような感覚で行えるシンプルなデータ構造です。(これは単なる例えではありません。Unixでは「すべてがファイル」という考え方が採用されています。)
プログラマーはTCPやUDPなど利用したい通信プロトコルを指定し、通信方式に関するいくつかの引数を与えるだけで済みます。
ファイル作成と同様に、ソケットを作成するとネットワーク接続を表す整数値が返され、その後は送信・受信・入力待ちなどの処理を簡単に実装できます。
Webサービスや動画配信、リモートログインなど、現在インターネットで利用されているほぼすべての通信技術をたどっていくと、その基盤には何らかの形でBerkeley Socketsの考え方が組み込まれています。
BSDプロジェクトは、Domain Name System(DNS)を実用的な仕組みとして普及させた立役者でもあります。
DNSは、人間が理解しやすいlpi.orgのようなホスト名を、65.39.134.140のようなIPアドレスへ変換する分散型システムです。
インターネット上のあらゆるプログラムは、通信相手へ接続するために、どのDNSサーバーへ問い合わせればよいかを判断しなければなりません。
初期のインターネットは、小さな町のように誰もがお互いを知っている世界でした。そのため、管理者は各コンピューターのHOSTS.TXTファイルへホスト名を手作業で登録していました。
このファイルは現在でも存在していますが、通常はローカルネットワーク内のアドレスだけを管理し、インターネット上のホスト名の解決はDNSが担当しています。
DNSは非常に複雑な仕組みです。1983年に公開されたDNS仕様(RFC 881、RFC 882)とその後のRFCでは、権威DNSサーバーの分散配置、委任、冗長化など、高い信頼性を持つ分散システムの設計が求められました。
(RFCとは、Internet Engineering Task Force(IETF)が公開する技術文書であり、インターネット標準仕様などが定義されています。)
その後数十年にわたり、分散システムでは整合性や耐障害性を両立させるためのさまざまな研究が進められました。
例えば、大規模分散データベースのCassandra、合意形成アルゴリズムであるPaxos、ZooKeeper、Raft、そして世界中のインターネット通信を支えるCDN(コンテンツ配信ネットワーク)などがあります。
しかし、BSD開発者がDNSを実装していた当時には、こうした技術はまだ存在していませんでした。
BSDチームが開発したBerkeley Internet Name Domain(BIND)は最初のDNSサーバーではありませんでしたが、DNS黎明期に登場した最も重要な実装の一つであり、その後何十年にもわたって事実上の標準となりました。
2023年になっても、BINDはすでにレガシー技術と見なされ、多くの代替製品が登場していたにもかかわらず、権威DNSサーバーの約60%で利用されていると推定されています。これは、問い合わせを転送するだけでなく、正式なDNS情報を提供するサーバーを指します。
本シリーズの後編では、BSDがコンピューティングの世界にもたらした、さらに重要な貢献について紹介します。
You are currently viewing a placeholder content from Vimeo. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More InformationYou are currently viewing a placeholder content from YouTube. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More InformationYou need to load content from reCAPTCHA to submit the form. Please note that doing so will share data with third-party providers.
More InformationYou need to load content from reCAPTCHA to submit the form. Please note that doing so will share data with third-party providers.
More Information