このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。
この授業では、インターネットに関するさまざまな技術的な内容を解説します。 参考書はタネンバウムのコンピュータネットワークを指定してますが、 Web 上の教材だけで完結させる予定なので、特に全員買う必要はありません。 評価は試験で行なう予定です。
授業の前半はインターネットの概念でもっとも重要なルーティングと、TCP に ついて説明します。 後半は実際のインターネットを構成する重要なことがらについて説明します。
インターネットは広域コンピュータネットワーク中で最大のものです。
インターネットではどのような接続方式を使うか制限されてませんのでさまざ まな接続方式がとられています。 Ethernet をはじめ、高速な光ファイバー通信や、音声変調(Modem)による電話 回線、無線、衛星通信など多くの通信装置が接続されています。 そして、接続されるコンピュータもスーパーコンピュータから携帯電話まで様々 です。 6 億人以上の人が参加していて、電子メール、WWW、 チャット、 P2P、Video On Demand など様々なアプリケーションが使われています。
インターネットは、分散型であり、どこかに中央があるわけではあ りません。 また、様々な通信が行われており、この瞬間にも新しい通信方式が開発されて います。 インターネットで始めてパケット通信が実現されました。 これは二つのコンピュータが互いに通信をしたい場合、回線を占有するのでは なく、送信したいデータを細分化し、データそれぞれに相手のコンピュータの 宛先を記入し、通信回線に通信を依頼すると言うモデルです。
プロトコルとは通信を行うために守るべき手順のことです。 もともとは「外交儀礼」という意味で、国同士が対話をする時の 手順などを指します。 例えば、「国で一番偉い人が外国を訪問したら、次は相手国の一番偉い人がこ ちらに訪 ねる」と交互に順番に訪問し合うというのはプロトコルになります。 また、アメリカでは裁判の進め方などにも使います。
ではコンピュータ同士のメッセージのやりとりの例を示します。 例えば、 echo と呼ばれる次のプロトコルを考えましょう。
A | 通信路 | B |
---|---|---|
何らかのデータ→ | ||
←同じデータ |
このような通信の手順には、本来の作業の持つ意味の他に、様々な利用法があ ります。 例えばこの echo を利用すると次のようなことができるようになります。
このように通信のプロトコルというのは、メッセージのやりとりとは別に、ネッ トワークの構造が関連してきます。 それにより、 単純なメッセージのやりとりでもいろいろなことを実現できたりします。
つぎに実際に使われているプロトコルとして、 HTTP(Hyper Text Transfer Protocol) を紹介しましょう。 HTTP/1.0 では次のような単純な操作でサーバ からデータを取得できます。
クライアント | 通信路 | サーバ |
---|---|---|
GET ファイル名 HTTP/1.0改行改行→ | ||
←HTTP/1.0 200 Ok Date: 日付 Content-type: ファイルのタイプ Content-Length: ファイルのサイズ ファイルの内容 ... |
HTTP/1.0 自体は上記以外のメッセージも存在しますが、基本的には上のよう に単純な一往復のプロトコルです。 メッセージに英単語を使って実際の文章のような構成になっています。
インターネットのプロトコルはこのように英単語を使用し、人間にも解釈のし やすいテキストファイルの形でやりとりするプロトコルと、長さや位置が決まっ たビット列を使用するプロトコルに分けられます。 ネットワークの接続に関するプロトコルなどはビット列を使用しているものが 多いです。 一方で上のようなサービスを表すものにはテキストファイル形式が多いです。
なお、 この授業ではプロトコルとはコンピュータ同士の通信の手順のことを指します が、この由来は 異機種間のコンピュータの接続実験を行っていた研究者が、コンピュータ同士 の通信手順をプロトコルと呼び始めたことから来ます。
この授業ではさまざまなプロトコルを紹介します。
プロトコルは階層に分かれています。 例えば、あなたが手紙を書いて送ることを考えましょう。 手紙を書く時、相手の住所を書いたり、手紙の重量に応じた切手を貼ったり、 さらに文面に時候の挨拶を書いたり、とさまざまなことを考慮しなければなり ません。 また、書いた手紙はあなた自身が相手に持っていくのではなく、ポストに投函 した後は郵便局に委ねます。 郵便局ではあなたの手紙に対して、消印を押したり、相手の住所のそばの郵便 局に転送したりするなど、やはりさまざまな処理を行います。 これらの全てが完璧に行われた時、始めて手紙が相手に届きます。
ここで、「手紙の送り方」を説明する場合、なにもかも全ての事項を説明する のではなく、特定の立場を決めてその立場に関連する事項だけを説明する方が わかりやすくなります。 例えば、「手紙の送り方」を常識で考えた場合、通常は郵便局がなにを具体的 にするかなどは気にせず、ポストに手紙を入れるところまでを説明するのが普 通ではないかと思います。 つまり、封筒と切手を用意して、送りたい手紙を入れ、宛名を書いてポストに 投函することを説明すれば十分でしょう。
一方で「葉書の送り方」というのを別に考えましょう。 このなかで、実際に説明しなければならないことの大半は「手紙の送り方」と 一致するでしょう。 つまり、手順のうち、共通部分とそうでない部分が生じます。 共通部分を「郵便の送り方」とすると、「手紙の送り方」と「葉書の送り方」 の関係は次の図で表すことが出来ます。
インターネットのプロトコルもそのように階層化しています。 例えば、「文字を送る」のと「画像を送る」という二つのプロトコルを考えた 時、それらに対して、いちいち送信時のネットワークに接続する端子の信号電 圧などを考えたりはしません。 ここで重要なのは、上記の「郵便の送り方」のような共通に考えられるプロト コルは別に考え、その上で文字固有の送り方、画像固有の送り方を考えるとい うことです。 プログラムを作る際にはサブルーチンとしてまとめましたが、 異なるプロト コルにおいて共通部分を別プロトコルとして取り出すことによってプロトコル の階層化を考えることが出来ます。
複数のプロトコルの共通部分の抽出により階層化を考えることができましたが、 通信プロトコルの場合、別の考え方があります。 次に考えるのは、ネットワークの構成を階層的に見て、その階層毎に通信を実現すると いう意味でのプロトコルの階層化です。 具体的には次のように考えます。
このようにネットワークの構成により自然に階層化が導かれます。
インターネットではこのうちネットワーク間のデータのやりとりと End to End のやりとりが主に規定されています。
インターネットが開発される過程で、ネットワークを中継して端末間でデータ をやりとりするプロトコル TCP は、端末だけで行う処理と中継する装置でも 行う処理とを分離して、TCP/IP となりました。 インターネットの場合、試行錯誤を繰り返してプロトコルを階層化していった ため、「実際に接続に使う回線(ネットワーク)」「ネットワーク間のやりとり (IP層)」「端末間のやりとり(TCP 層)」「電子メールなどのサービス」の四階 層に分かれました。
ところが、 ISO(国際標準化機構)はインターネットとは互換性のない OSI 7 層参照モデルを発表しました。 当時、コンピュータ業界を置き去りにして発展していったインターネットに対 して危機感があったのか、この形だけのネットワーク参照モデルは様々なコン ピュータメーカにより採用されました。 IBM は SNA(Systems Network Architecture), DEC は DECNET などこの OSI モデルを実装した独自ネットワークを構築していきました。 しかし、 OSI 自体もともと机上の空論だったため、技術的な欠陥もあり、一般 に広まる前に下火になりました。 ただ、なぜか世間ではインターネットですら、この 7 層の参照モデルを使っ て説明します。 これは、インターネット自体に理論的な参照モデルがなかったことと、単純に インターネットのモデルを押し込むことが出来たからだと思います (あと、 CISCO の教科書に熱心に書かれていることも影響しているかも知れま せん)。
7 層の内訳は次の通りです。
物理層とはコンピュータ同士を結びつける物理的なもので、ケーブルや電波 が伝搬する空間など、また使用する電圧や電力、信号の形、タイミングなどを指 します。
データリンク層は物理層で定義された物理的な信号をデータ通信に変換する仕 事をします。 つまり、データリンク層で物理的に接続された二点間の通信が完結します。 しかし、通信の方式により、輻輳、誤り訂正、共有アクセス制御などの問題が 生じますので、単純なデータ通信だけでのプロトコルでない通信方式が存在し ます。 つまり、そのような問題を通信により解決していくような方式です。 例えば Ethernet では物理層は複数のコンピュータにより共有されていて、通 信の開始時期は各コンピュータが決定できます。 したがって、二台のコンピュータが同時に通信を始めること(コリジョン)が発 生します。 このとき、Ethernet では相互に通信プロトコルを規定し、再送を行い、伝送 の誤りの少ない通信を実現しています。 このようにデータリンク層内の階層プロトコルを説明するため、媒体アクセス 副層という概念が導入されています。
ネットワーク層ではネットワーク接続に関する規定を定めています。つまりパ ケットのフォワーディングに関する規定です。 ネットワーク上の障害などに対応して、パケットをどこに送るか変化させるこ とも必要ですが、これもこの層の仕事になります。
トランスポート層は送信者が送ったデータを最終的に受信者に正しく届くことを 保証します。 但し、下位(物理層からネットワーク層)でも品質の保証を行っている場合もあ ります。
セッション層ではユーザ間のセッションを管理するのが仕事になります。 しかし、これはインターネットにはない概念です。 例えばセッションの例として、分散データベースの一括更新などを考えましょう。 座席の予約システムなどで席をまとめて複数確保したい場合、空き状 況を調べて予約するまでの間に、他の予約が割り込むと、確実に予約すること ができなくなります。 そのため、空き状況を調べてから予約するまでの間、他の予約を更新を待って もらうという排他処理が必要となります。 しかし、インターネットではこのようなことは行わず、 OS やアプリケーショ ンのプログラムに委ねられています。 特に OS にはそのような排他制御の仕組みとしてセマフォアとい うシステムコールが用意されていることもあります。
プレゼンテーション層は、データのやりとりに対して、それを抽象的な意味が 伴う情報として扱うための管理などを行います。 例えば、文字コードを漢字などに直したりすることが考えられますが、インター ネットではこれはアプリケーションや OS の仕事としています。
アプリケーション層はサービスを提供する層で、ここで、電子メールなどのサー ビスを提供します。