ネットワークとインターネット

1. はじめに

 コンピューターは、これまで数十年もの間、その道の専門家の道具として使われ続けてきましたが、この数年で飛躍的に一般家庭に普及しました。この理由にはもちろん技術の向上によるコンピューターの低価格化がありますが、ネットワークの発展、とりわけインターネットの登場が大きな理由であったと考えられます。そこで今回は、インターネットがもたらした利点とその背景にある仕組みを学びます。ネットワーク時代における物事の考え方を理解することが目的です。

2. ネットワークについて  

 インターネットとは、一言でいうとネットワークの仕組みのことです。そしてコンピューターにおけるネットワークとは、コンピューターを複数接続し、データを共有したり交換したりする仕組みのことです。これを利用すると様々な作業の効率が良くなります。

(例)データの共有

たくさんの人が、それぞれのコンピューターから、同時に同じ情報を利用できます。例えば駅の時刻表を知りたい人が100人いた場合、コンピューターが100台あればその情報を知ることはできます。しかし時刻表の内容が変わった場合、また誰かが100台すべてのコンピューターにフロッピーディスクなどを入れて、いちいちデータを更新しなくてはなりません。ネットワークを使えば一台のメインコンピューター(ホストと呼ばれます)の情報を更新するだけで、残り99台のコンピューターは自動的にそのコンピューターの情報を取ってくることができます。人が行う作業が減るという意味で効率が良いのです。  

3. インターネットについて

 しかしそれだけのことなら、もう数十年も昔から行われてきました。インターネットは一体それらと何が違ったのでしょうか。  

  3−1.通信の効率化(パケット通信)  

 インターネットは「パケット通信」という方法でデータをやりとりしています。他のコンピューターとやりとりするためには、相手のコンピューターとの間に回線が必要になりますが。以前の方式では、普通の電話回線と同じように、誰かが回線を使っている間は、他の人は待たなければいけませんでした。つまり回線は2つのコンピューター間で専有されてしまい、他のコンピューターはこの回線を利用できないので、ネットワークが並列につながっていた場合、結局同時に二人しか使えないということになります。これに対してパケット通信では、送信データを細切れにして、まるで郵便物のようにその一つ一つに宛先を書き、それぞれ個別に、時間をおいて送り出します。受け取るコンピューターでは、自分の宛先にきたデータだけを回収し、ばらばらのデータをくっつけて元の形に直します。このような方式だと回線は専有されないので、他の人も同じようにしてデータを送り出すことができます。

  3−2.標準プロトコルの採用

 インターネットができる前は、それぞれの組織内(企業、大学など)だけで通用するようなネットワークの仕組み(Local Area Network、略してLANといいます)が一般的でした。しかし、これでは企業同士、大学同士などの通信ができず、ネットワークは広がりません。そこで、異なる組織の間で通信ができるような仕組みが望まれました。その為には、ネットワークの仕組みにおいて、「約束ごと」を決めなくてはなりません。例えば、我々が会話をする時、相互が共通の言語を理解している必要があります。日本語を理解しない外人に日本語で話し掛けても、相手はその意味を理解してくれません。コンピューター同士の通信においても、通信における共通の約束事をあらかじめ決めておかなければ、相手に送ったデータを受け取ってもらうことができません。この「約束ごと」をプロトコルといい、具体的には相手の住所をどう表現するか、データをどのように転送するか、などを定義することであるといえます。しかし、各組織内のLANではそれぞれ勝手なプロトコルを使用していたため、他のネットワークとの間に通信の互換性はありませんでした。そこで、インターネットにはこの組織間通信において、企業主導ではない、ユーザー中心の共通プロトコル(TCP/IP)が一般に使われていて、これが標準となっています。この標準化されたプロトコルでは、ユーザーの意見が技術革新に伴い柔軟に反映されるので、インターネットはここまで普及したといえます。 以上のように、インターネットは通信の効率化と通信プロトコルの標準化によって、普及したといえます。

3−3.自律分散協調モデルの実現

 難解な用語ですが、自律分散協調とは全てを一元管理するボスがいないということです。通常ネットワークでは、全てのデータを一元管理する為に、ホストコンピューターとよばれるボスがいます。我々ユーザーがネットワークでコンピューターを利用する時は、このホストコンピューターにぶらさがっている「端末」とよばれる子分のコンピューターを使います。当然子分がネットワークに参加する為には、ボスの許可を得なくてはなりません。ネットワークが小さいうちは、これで問題はないのですが、インターネットのように膨大な数のコンピューターが存在するネットワークでは、当然ボスは子分を管理しきれません(無数の要求がくるので、パンクしてしまいます。)。そこで一人のボスが存在するのではなく、複数のボスが自分の担当する子分だけを管理し、組織間のやりとりを行うためにはボス同士が連携することで、ネットワークは効率がよくなります。さらに大元のボスがいないので、気軽にネットワークに参加できます。このようにしてインターネットは拡大していったのです。 

3−4.ベスト・エフォート

 ネットワークの中では無数の情報がやりとりされています。しかし回線が混み合ったり、物理的に切れてしまったり、電気信号がおかしかった時などの事故が起こると、送ったデータは相手に届きません。この問題の対処法としては、データが相手に届かなかった場合、届くまで永遠にデータを送りつづけるという方法などがありますが、こうしてしまうとネットワーク内は届くことのない繰り返しのデータで溢れてしまいます。普通のデータの送受信まで大幅に遅れてしまうのです。そこでインターネットでは、最大限データが相手に届くよう、一応努力はする、という方針をとっています。これはデータが相手に届かなかった場合、決まった回数だけ再送信はしますが、それでも届かなかった場合はもう何もしないということです。これをベストエフォート(最大限の努力)と読んでいます。インターネットのこのような姿勢は、一見無責任なようにも見えますが、これによりネットワークは効率的に動くので、ユーザーも快適に使うことができるのです。

 

4. OSI参照モデルについて

4−1.OSI参照モデルと標準化  

 ネットワーク関連の技術では、「標準」という言葉がよく使われます。どんなに良い技術でも、それが普及するためには、「標準」にならなければなりません。技術を開放し、みんなで改善していくことで、その技術は安全なものとみなされるのです。インターネットで使われているネットワークの仕組みにも標準があり、それがインターネットの基本的なモデルとなっています。この標準をOSI参照モデルと呼び、それを基に実際に作られた仕組みがTCP/IP(後述)なのです。  このOSI(Open Systems Interconnection)参照モデルは、標準化の為にネットワークがどのようにあるべきかを示したもので、世の中の多くのネットワークはこれを基にしています。インターネットでどのようにデータが送られているのかを知る上で良い参考にもなるので、覚えておくと便利です。このモデルはより効率のよいデータの転送を実現する為に、ネットワークを階層化して役割を分担させるものです。

4−2.電子メールの例  

 例えばメールを送るとき、どのようにしてこれが相手に届くのかを見ていきましょう。以下は送信側がやることです。

1.アプリケーション層:Outlookなどのソフトを使って、「こんにちは」などと書かれたものを送信し、下の層にわたします。

2.プレゼンテーション層:この「こんにちは」をコンピューターが理解できる0と1のビット列に変換します。つまり通信に適したビットパターンへ符号化するのです。

3.セッション層:相手コンピューターとのコネクション(接続通信路)を確立し、維持します。データの送り方などをここで決めます。 ここまでを「上位層」と一般的に呼びます。しかし実際の相手先や経路がわからないと、データは届きません。そこで以下の「下位層」でそれらを決めるのです。

4.トランスポート層:データが確実に送受信されているかを確認します。「こんにちは」と送ったつもりが、どこかでデータが欠落し、「こん」しか相手に届かなかった場合などは、「にちは」を再送します。

5.ネットワーク層:相手の住所(アドレス)をここで指定します。また相手先への経路もここで決めます(ルーティング)。

6.データリンク層:物理的な通信路を確立します。これはいわゆるバケツリレーのようなもので、ネットワーク内の隣のコンピューターにメールのデータを渡してやります。渡されたコンピューターはそのデータが自分宛なら回収し、そうでなかったらさらに隣に渡す…ということを繰り返してメールは相手に届くのです。

7.物理層:0と1のビット情報になったメールのメッセージを、電気的な信号に変換します。これでデータは物理的に送信可能になります。

 

 

 受信側のコンピューターではこれと逆のことをして(階層を上に向かって)、メッセージを受け取ります。まず物理層にやってきた電気的信号を0と1のビット情報に戻します。データリンク層では宛先の物理的な住所を見て、これが経路上の中継地として自分宛なので、とりあえずこのメッセージを受け取ります。さらにネットワーク層でこれが中継地としてでだけでなく、本当に自分宛のメッセージなので喜んで受け取ります(もし自分宛でなければ、隣のコンピューターに渡します)。そしてトランスポート層ではデータの欠落を確かめる為に、やってきたデータのぶんだけ受け取った旨を送信元に伝えます。(これによりデータの欠落があった場合送信元は足りない分を送ってきます)。あとは上位層でビット情報を「こんにちは」に変換し、アプリケーション(メールソフト)で表示することによって、受取人はこのメールを読むことができます(厳密にいうとこの受け取ったコンピューターは共用のサーバーなので、ここからユーザーの要求によって、個人のコンピューターにメールが送られます)。 このようにして、各層で役割を分担すると、データは安全かつ効率的に送受信されます。これを一つの層にしてしまうと、データを処理するのに時間がかかり、安全性も低いので、このように分けているのです。実際のプロトコル(TCP/IPなど)は、OSI参照モデルとは階層の分け方などが少し異なりますが、階層の流れや内容は同一です。

4-3.WEBの送受信について

 先ほどのメールの送受信についての手順(プロトコル)を、SMTP(Simple Mail Transfer Protocol)と呼んでいますが、普段我々がWEBページを読んだりするときも、コンピューターの中では似たような手順に従って処理されているのです。このプロトコルが、HTTP(Hypertext Transfer Protocol)です。ホームページアドレスの先端(http://www.sfc.keio.ac.jpなど)についているので目にした方も多いでしょう。ユーザーがこのHTTP付きのアドレスをタイプすることにより、WEBページを閲覧するために、HTTPという規則に従いますよということをコンピューターが理解できるのです。これによりWEBページを閲覧したいというユーザーの要求が、このホームページのある相手先のコンピューターまで伝わり、相手先のコンピューターはこのページをユーザーに送ります。ユーザーはブラウザというWEBページ閲覧用ソフトウェアを使って、送られてきたこのページを見ることができるのです。

 

5. TCP/IPについて

5−1.TCP/IPとは   

 一見して暗号のような文字列ですが、これは前述のOSI参照モデルを実用化したプロトコルのことです。ほとんど内容は同じなのですが、より具体的にネットワークの決め事を定義しています。現在のインターネットでは、これが一般的なので、実際にネットワークを管理したり、プログラムを書いたりする時にはこれを知っておく必要があります。ちなみにTCPとはOSI参照モデルのトランスポート層のプロトコル、IPとはネットワーク層のプロトコルのことであり、これらのプロトコルとその上や下の層で動くプロトコルを総称してTCP/IP(プロトコル群)と呼んでいます。

5−2.TCPについて  

 TCP(Transmission Control Protocol)は、OSI参照モデルでいうところのトランスポート層にあたります。ここではデータが確実に届くように、送信側と受信側のTCP層が盛んにやりとりを行います。送信されたデータが届くと、受信側のTCP層は受信したことを送信元に知らせる為に、応答メッセージをわざわざ送ります。送信元のTCP層はこの応答メッセージをずっと待っているのですが、もし応答がないと、データが届かなかったとみなして再送するのです。またデータはパケット(ここではセグメントともいいます。)単位で送受信するのですが、それぞれに「TCPヘッダ」というものをつけます。このヘッダには送受信先の情報や、無事にデータが届くための情報、応答メッセージなどが書かれているため、TCP層はこれを付加したり読んだりすることで、お互いにやりとりができるのです。長いメッセージのメールを送る場合などは、それを複数のパケットに分割し、それぞれに連番を割り振って送信します。この場合、データが正常に届かなかったときは、送信元は応答のなかった連番のデータだけを送ればよいので、効率がいいのです(まるごと送信し直さなくてもよいということです)。また、ここではデータを確実に届けるための仕組みを定義しているのであって、実際に誰に送るのかということは下のネットワーク層に任せます。

5−3.TCPとUDP    

 TCPはこのように通信に信頼性を持たせるためのメカニズムです。しかし応答メッセージを送ったり、再送したり待機したりと、いろいろとやっているので、送信してから受信するまでに時間がかかります。ネットワークを使う上では、時には迅速な送受信が必要なケースがあります。そのような場合にTCPの代わりに利用されるものがUDP(User Datagram Protocol)です。UDPでは配信先を決めて一方的に送りつけるだけで、応答確認や再送などはしません。その為確実に届けたい長いデータなどを送る際には不向きですが、短いデータを反復的に送るときなどに向いています。    

5−4.IPの役割について   

 IPとはinternet protocolの略で、文字通りインターネットを使う上で欠かせない規約になっています。OSI参照モデルにネットワーク層というのがあり、そこでインターネット上の住所を指定、判別していることは前述のとおりですが、これがIPにあたります。そしてこのインターネット上の住所のことを、IPアドレスと呼びます。例えば「こんにちは」というメールを送信したい場合には、このメッセージに前述のTCPヘッダをつけたパケットに、さらに「IPヘッダ」というIPアドレスをつけたデータを送ることで、相手がメッセージを受け取ることができるのです。

5−5.IPアドレスについて   

 IPアドレスはインターネット上の住所であり、現実の世界に同じ住所が2つはないように、IPアドレスも常に単一(ユニーク)です。これは具体的には32ビットの数字で表されます。これを8ビットづつに分けて、10進数に直したものが我々の目にするIPアドレスです。ちなみにSFCのホームページ(に関係するコンピューター)のIPアドレスは133.27.4.212です。 通常http://www.sfc.keio.ac.jpとURLを指定するところを、http://133.27.4.212としてもOKなのです。またIPアドレスは「ネットワークアドレス」という組織全体のアドレスと「ホストアドレス」という組織内の各コンピューターに割り当てられるアドレスに分けられます。SFCの場合133.27までがネットワークアドレスで、残りの16ビットがホストアドレスになります。SFCには133.27.0.1から133.27.255.254までの計65534個のIPアドレスがあり、これはSFCでは65534個のコンピューターが同時にインターネットに接続できることを意味します。実は我々が普段使っているワークステーションやラップトップには、インターネット接続時にこの中のいずれかがアドレスとして自動的に割り当てられています。このアドレスをもらうことで、コンピューターはインターネットで利用できるようになるのです。  

6. ルーティングについて

 データがIPアドレスで指定された住所にたどり着くためには、蜘蛛の巣のように複雑なインターネットの中から、何らかの方法で経路を示してあげなければなりません。この経路決定のことをルーティングと呼び、このための仕組みを提供するものがルーティングプロトコルです。これを支援する機器をルーターと呼び、この中にあるテーブルに宛先の住所に対応する中継地、目的地が指定されています。あるデータを転送する際には、そのパケットはこのルーターを中継地として無数に通ります。テーブルには(ルーティングテーブルといいます)、指定された宛先に行くためには、まず隣の某ルーターを通りなさいと書いてあるのです。そのデータが指示どおりに某ルーターに行くと、今度はその某ルーターが同じことを指示します。回線が不通の場合は、また別のルートを指示することもできます。そのようにして次第に宛先に近づいていき、データは無事に到着するのです。この便利なルーティングテーブルですが、自動的にルーター同士がそれを作っていくダイナミックルーティングと、人が手動で入力するスタティックルーティングに分かれます。ダイナミックルーティングは便利ですが、その為にネットワーク内をルーティング情報が飛び交うので、トラフィックの負荷(ネットワークの混雑)には気をつける必要があります。