皆さんの中には、産まれたときすでにインターネットがあったという方がいらっしゃるかもしれません。
インターネットとは何でしょう。
ネットワークとネットワークを繋いで相互に行き来できるようにしたもの、と考えてみてください。
それではそのネットワークとは何でしょうか。
舞台を大学の研究室だと仮定してお話してみましょう。
コンピュータのなかった頃は論文は紙と鉛筆で書いていました。
そのうちワープロという機器ができました。
とある先生は大学のなかでパソコンを導入したと思ってください。
★今回はメインフレームとかの話はまだしません。
導入したコンピュータは2台です。
1台は電算室の中に設置されていてプリンタが繋がっていて、1台は先生の研究室の机の上にあります。
論文を書くのは研究室のパソコンなのですが、これを印刷する必要があります。
書き上がった論文をフロッピーディスクに保存して、これを助手くんに頼んで電算室のパソコンまで持っていって印刷してもらいます。
これを、「スニーカーネットワーク」と呼びます。
助手くんはスニーカーを履いてフロッピーと出力された紙の論文を持って移動するわけです。
プリンタを2台買えば良いのかもしれませんが、予算が足りません。
これでは規模が大きくなると不効率だということで、研究室のパソコンからファイルを電算室のパソコンに直接送ってしまいたいという欲求が産まれました。
(もちろんプリンタを共有してもいいのですが、その発想はちょっと置いといてください。)
ではどうするか。
2台のパソコンを繋ぐ仕組みが必要ですね。
そのためにNICという部品が生み出されました。
NICというのはNetworkInterfaceCardの略です。
そのNICという物理デバイスをパソコンに組込みます。
パソコンには拡張スロットという部分があり、そこに差し込むスタイルのものが主流でした。
そのうえで企画にあったケーブルで両者を接続します。
さてその次に必要なのはパソコンのOSに通信というものを理解させる仕組みが必要となります。
それぞれのメーカーが、独自の企画でやり取りをしていました。
よって2台のパソコンが違うメーカーですとやり取りはできません。(できる仕組みはもう少しあとで作られます。)
たとえば、IPX/SPXとかNetBEUIなどと呼ばれる物がありました。
これらを「プロトコル」と呼びます。
このときはまだTCP/IPというものはありません。
ちなみにこのころはWindowsすらまだありません。
さてインターネット老人会よろしく、昔のことばかりを書いても仕方ありません。
とはいえ、できるだけ仮定をシンプルにしたかったので黎明期の話をしてみました。
ここでざっと時間を進めてみましょう。
それぞれのメーカーが独自に規格をつくっていたのでは、不便ですね。
ISOという団体が規格を決めました。
「OSI参照モデル」と呼びますが、内容はここでは扱いません。
扱いませんがぜひとも知っておいていただきたい内容ですので、みなさんもざっとお調べになってみてください。
ともかく、これで「統一規格」と呼べるものが作られました。
今後はこれに沿って発展して行くことになります。
上述のOSI参照モデルに沿って、「TCP/IP」というプロトコルが産まれます。
このTCP/IPの登場によりネットワークは大きく飛躍することになります。
また、時代の変遷とともにWindowsやLinuxといった、いま主流となって使われているOSも登場します。
それで先生の研究室では年度ごとにPCを追加し、設備も充実してきました。
そんな折、となりの研究室の先生からデータのやり取りをしたいという電話がありました。(まだメールとかありません。。。。)
どうしたらいいのでしょう。
現段階では、先生のPCにはIPアドレスなんてものはついていません。
物理的につなげて、共有したいものを選んで共有設定をかければだれでもどこからでも(つながってさえいれば)アクセスが可能です。
このときはセキュリティなんてものは存在しません。
まず、いままでは「ホスト名」で共有資源にアクセスしていました。
すべての共有資源が一覧表示され、そこにアクセスすれば完了です。
先生の研究室PCのホスト名が「kenkyuPC」だったとしましょう。
相手のセンセイの研究室PCのホスト名も同じ名前だったとしたら、どちらにアクセスすれば良いのかわからずに通信が出来ません。
そこで考えられたのが「IPアドレスを使用してそれでアクセスする」ということです。
先生の研究室のPCにTCP/IPを導入して、それぞれのPCにIPアドレスを振ります。
相手の研究室のPCには重複しないアドレスを振ってもらいます。
そのうえで、ケーブルを接続すればやり取りが可能になります。
このときに、
A研究室では192.168.0.xxx
B研究室では192.168.129.xxxを振れば、それがどちらの研究室のPCであるかがわかります。
つまり「つけられたアドレスによって所属が明らかになる」ということですね。
このアドレスは、IPXなどの他のプロトコルでも存在します。
TCP/IPというのはTCPというプロトコル(OSI参照モデルでのレイヤー4)とIPというプロトコル(OSI参照モデルでのレイヤー3)のことを指します。
IPアドレスというのはIPで使用するアドレスということで、
たとえばIPXならはIPXアドレスということになります。
管理者が一人であればすべての資源はその管理者が管理しているのでわからないことはありません。
しかし、研究室が2つつながる=それぞれの管理者がバラバラに管理しているものを繋げる場合に、考慮すべき内容が増えていくわけですね。
さて、先生の勤める大学はどんどんIT化がすすみ、いささか無茶ではありますが今ではPCとプリンタなどのIPアドレスを持つ機器(以下ノードと呼称)が800万台を超えました。
いまからこの800万台の機器にIPアドレスを振ってほしいのですが、どうしたらいいと思いますか?
いままでは192.168.1.xxxを振っていたのですけど、この方法では254台しか収めることができません。
IPアドレスというのはだいたい以下のように記載されますね
例)10.20.30.40
これはわかりやすいように10進数で表していますが、実際には2進数を読みやすく変換したものです。
よって先頭から8ビットずつ、合計で32ビットで表されるものです。
この1つ1つの区切りを「オクテット」と呼びます。
例えば上の例の「30」の部分は「第3オクテット」と呼びます。
ここで、ネットワークの大きさというものを説明する必要があります。
ネットワークの大きさは「クラス」という概念を用いて差別します。
IPアドレスの32ビットのうち、
第1オクテットのみをネットワーク番号と決めたものをクラスA
第2オクテットまでをネットワーク番号と決めたものをクラスB
第3オクテットまでをネットワーク番号と決めたものをクラスC
と呼称します。
それで、800万ノードを収めることのできる大きさをもつネットワークはクラスAとなります。
このあたり(ビットの計算とか)もう少し詳しくやりたいのですが、後日に回します。