日付:1999/6/4
こ の文章について | ネッ トワークの動作概要 | Physical Layer:物理層 | Media Access Control SubLayer | Logical Link Sublayer | Network Layer | Transport Layer
この文章につい てこの文章は私が1991年にStanfordで受講した"EE384 - Computer Networks: Architectures and Protocols"の内容をベースにして、インターネット上であさって学んだこと、及び他の本の内容を取り入れ、さらに私が考えたところの内容をとりま ぜてまとめたものである。
なぜこのような文章を書こうと思ったか?理由は簡単で、これより前に「暗号について」という文章を書いてそれが Yahooに登録されたとたん爆発的なベストセラーになったのに感動したからである。たいていの場合Yahooで検索した人がたどり着くのは最初のページ なのだが、私にとってはうれしいことにそのうち約4割の人が続くページにまで目を通してくれている。おまけに世の中には「暗号について」を読んだついでに 私が書いたほかの駄文を読んでくれる人も幾人か(率にしてみればそう高くはないが)いたのである。こうなれば根が単純な私が柳の下のドジョウをねらおう、 という魂胆になったとしても不思議はない。
しかしながらそれよりも少しはましな理由もちゃんと存在している。このネットワークに関しては世の中で非常に重要な技術でありなが らなんとなく知ったような知らないような態度でみんな過ごしている。私がStanfordでこの講義をとったのも
「おれはなんとなく知ったような顔をしているが、実は何も知っていない。ここらでひとつまじめに勉強せねばなんね」
と思ったからだ。そして実際この講義は大変意義深いものだったのだが、悲しいことに私の頭はその内容をちゃんと覚えていられるほど ちゃんとはできていないのである。最近仕事をしたり、趣味でネットワーク関係の言葉にでくわすたびに、「あれ、これってどうなってるんだっけ」と悩むこと になる。
さてそうした「記憶力の低下」もこうして一発文章にまとめておけばなんとかなるかもしれない。忘れたとしても「コンピュータ用語 集」をめくる必要はないし、ましてや昔の講義ノートをひっくり返す必要もないのだ。
この講義はOSI 7層のうち、下位の4層をカバーする物であった。従ってこれから私が書こうとしている文章がカバーするところもその範囲になる。講義の締めくくりに Instructorが言った言葉を未だに覚えている。
「これらの層は一つで一学期かけてやるような内容だ。4層全部一学期で見るのは無理がある」
さもありなん。しかしネットワークの専門家ではないし、それになるつもりもない私にとってはこの「下位4層の概要」の講義は大変役 に立った。
私としてはこの経験を元に、詳細はさっぱりわからないが概要ははわかる、といったものを目指してこの文章を書くつもりである。(こ の前書きを書いているのはまだ本文を全然書いていない段階であるから、一応気合いだけはいれておく)細かなプロトコルについて書くつもりはないから、今後 ネットワーク技術の体系を一新してしまうような画期的な新しい技術が登場しない限りこの文章は価値を持ち続ける(他の人にとってはどうか知らないが、少な くとも私にとっては)かもしれない。実際インターネットの爆発的な普及によって、TCP/IPをベースとした技術がが今後十年廃れることというのはまず考 えられない。IP V6のような改良すら「既存システムとの互換性」という言葉の前に遅々としたスピードでなされているような状況だ。私が思う以上にこれから書く文章の内容 は長生きするかもしれない。
ちなみに文章の中で「本講義」と言えばそれはEE384のことである。その他の文献から引用した場合には参考文献として名称を記載 してある。いわずもながの話であるが、この文章に書くことは本講義及びそのほかの文献、ホームページの内容から私が理解した(と自分で思っている)内容で ある。従ってどこから元ネタを仕入れたにせよ、誤りがあれば私のせいだ。そしてそのほとんどは私が元ネタを正しく理解しなかったところから生じた物である に違いない。もし貴方がその誤りを発見したとすれば、私に「優しく指摘」してくれると私としてはとても幸せな気分になるだろう。そしてそれはこのページを 訪れる人にとっても良いことに違いない。
私は長年、「パーソナルコンピュータはユーザーにとって、家電のようなものであってほしい」という夢を抱いている。しかもここで 言う家電とは、マニュアルを読まなければ使いこなせないような複雑な機能が満載の日本メーカー製のビデオのようなものではなく、コンセントをつっこんで、 ボタンを一つ二つ押せばなんだかわからないけど、使用者をハッピーにさせてくれる存在だ。
今まで何度か「この夢があと10年くらいには実現されるのではないか」と思った時期があった。しかしながらここ数年はそうした夢を みることもなくなった。少なくとも今「パソコン」と呼ばれている物、及びそれの子孫は永遠に私の夢に近づかないのではないか、と思える十分な理由があるか らだ。その理由とはなんだって?あなたはWindowsをセットアップしたことがあるだろうか?あるいは買ってきたシステムからアプリケーションを追加す るとか、インターネットの接続プロバイダを変更しようとしたことがあるだろうか?いくらWizardとかなんとか名前を付けても衣の下から見える鎧はかく せない。そしてMicrosoftが何を言おうがそのセットアップや変更が私が言うところの家電並に簡単になるという気配すらないようだ。
別に私はMicrosoftをおとしめるた めにこうしたことをかいているわけではない。Macintoshでもインターネット接続の設定を行おうと思えば事情は似たり寄ったりである。Apple社 は「iMacは15分でインターネットに接続できます」と宣伝している。逆に言うと、どんなに楽観的な宣伝文句を並べたところで15分はかかるということ だ。そしてこれは賭けてもいいのだが、私の家族で私と弟以外の3人(父と母と姉だが)はiMacを買って15分でインターネットに接続することはできない と断言してしまおう。正直言えばMacintoshの他の部分のスマートさに比べてInternetへの接続に関しては今ひとつ洗練されていないように感 じるのは私だけであろうか?そしてそれはApple社がInternetへの接続に関して手を抜いたせいなのだろうか?それとももともと難しいことをしよ うとしているのだろうか?
何故こういうことになるのか?この問題について書き出すといくらでも意味の無い言葉を並べられる気がするが、この文章は「ネット ワーク」に関する物であるから、そこから離れないように書いてみよう。
今私はMacintoshPB2400+Mac OS 8.6を使ってこの文章を書いている。私がこのコンピューターをまっさらな状態からインターネットに接続しようと思ったときに、どれだけ
「インターネットさえ使おうとしなければこんな言葉とは関係ない人生がおくれたのに」
という言葉を知らなくてはならないか(あるいは知ったフリをしてとにかく値を設定しなくてはいけないか)列挙してみよう。
経由先:選択肢は"AppleTalk","PPP",赤外線通信ポート(IrDA)
設定方法;選択肢は「手入力」、「PPPサーバーを参照」、「BootPサーバーを参照」「DHCPサーバーを参照」
ネームサーバーアドレス
IPアドレス、サブネットマスク、自分のドメイン名、ルーターアドレス
PPP利用者名、パスワード、電話番号
最後の3っつはまあインターネットに接続しよう、という野望を持たなくてもあるいは知っているかもしれない(あやしげなPPPとい う3文字は無視するとしてだ)しかしながら他の言葉はすべてあなたがネットワークを利用しようなどという野望を持たないか、あるいはそういう願望を抱いた としても設定をすべてやってくれる優しい人か、あるいはそれをして給料をもらっている人が近くにいて、なおかつあなたにその人に支払うお金の余裕がある場 合にはおそらく一生のうちに目にする必要の無い言葉だし、またそれでなんの問題もないはずだ。
しかしながらあなたがインターネットに接続しよう、という野望をいだいてしまい、前述したような恵まれた環境にいないとすれば、遅 かれ早かれ上記の言葉を目にすることになる。そしていつの日かそれらの意味を或程度理解するか、あるいは理解してなおかつ助けてくれる「親切な人」を探す 必要に迫られるのだ。
そしてあなたが仮にその「親切な人」を探し当てたとしよう。しかしそこであなたの苦難は終わらない。次にやってくるのは前述した言 葉をとにかく振り回し「これがだめだよ。だって。。」とあなたが理解しようがしまいが何かをわめき散らす相手との長時間にわたる会話になるはずだ。
私が米国に幽閉されていたとき、ローカルの電話会社が「当社とプロバイダ契約していただければ、インターネットの接続はとっても簡 単です」というCMをやっていた。その画面では母親が小学校低学年とおぼしき娘に操作方法を教わっている。
娘「ママ。簡単よ。まずこのウィンドウをあけて、次に。。」
母「ちょっとまって。。。OK」
娘「つぎはhttpってタイプして、、、、そしてチルダ(~)」
母「チルダって何?」
娘「ママ。小学校で何教わったの?」
そこにナレーションが続く。「当社では”あなたが理解できる言葉”でちゃんとサポートい たします。電話をかけることができるのであれば、インターネットに接続ができます」
世の中には「オタクな」なる人種が存在する。先日或本を立ち読みしていたら、「オタク」と「マニア」の違いについて書いてあった。 両者とも「ある特定の分野に関する深い知識を得ることを喜びとする」点では似ているが、「マニア」は必要以上にその知識を(特にその分野に興味のない人間 には)ひけらかさないのに対して、「オタク」はその分野にあまり知識を持っていない人に自分の知識をぶちまけて相手を恥じ入らせることに興味を抱く。そし てそれが高じれば、相手を恥じ入らせることを主眼において、自分が知らないことまでも自分が知っているかのようにしゃべりだすと。
仮に貴方が助けを求めが相手に、多少なりともこの「オタク的要素」が存在していれば、これは腹を空かせて目が血走ったライオンの前 にウサギを放り出したようなものだ。あなたが「PPPの設定」だの「サブネットマスクの設定値がおかしい」などという呪文の様な言葉を聞き、困惑の表情を 浮かべる度に相手はますます自分の知識の優越感にひたり、そして快調に「あなたの理解出来ない言葉」を列挙しだすだろう。そして長時間にわたる拷問のよう な会話の後にあなたは疲れ果て、そして相手は幸福感にひたりきった顔で「これはプロバイダ側のシステムの設定の問題だよ」とわけのわからない事を口走り、 結局未だインターネットに接続できていない。。。なんていう光景は私が思っているよりもはるかに頻繁に起こっているのではなかろうか。
さて、あなたがこういう目に遭おうがあうまいが、とにかく「なんとか前述の言葉を理解せねば」と決意したとしよう。その場合に一つ だけ特徴的なことがある。他の分野であれば、前述の言葉の意味を理解すれば十分かもしれない。しかしことネットワークに関して言えば、前述の言葉単体の意 味だけではなく、それらがどのような関係にあるか、を知ることが必須となるのである。ものすごく長い前フリであったが、まず話の前提として「ネットワーク の構造」について書いてみよう。この概念を行きつ戻りつであっても理解しておくことは、今後ネットワークについての数々の呪文を理解するうえで必ず役に立 つ物と私は思っている(少なくとも私の場合はそうだった)従って前述した数々の言葉の説明に入る前に、まずそれらの言葉がどのような関係になっているの か、ネットワークなるものをどのような構造で考えればいいのか、という点から説明にはいってみよう。
さて、どの分野であってもその分野を学ぼうとするときに日常でまず使わない新しい言葉-「呪文」-を覚える、というハードルを超え る必要がある。
まずネットワークに関しては、「プロトコル」という言葉の意味を(ぼんやりとでも)理解してもらう必要がある。このプロトコルとは なにか?手元にある本(参 考文献5)を観てみると、
「その昔外国に居る大使に対して送った条文書」
と書いてある。これではなんのことかわからないので、コンピュータ用語辞典(参考文献0)を見てみると「コンピュータ 同士でデータをやりとりするときの約束事全般をさす」となっている。個人的にはたぶんこの定義は正しいのだと思う。ふと考えるとこの文章は「定義」と呼ぶ にはあまりにも曖昧模糊としているように思うが、実際こうした「よく使われる言葉」というのは非常にいろいろな意味で使われるから定義が曖昧になってしま うのはやむ終えない。
このプロトコルの具体例を示すために、日常生活で人と人とのやりとりを考えてみよう。相手の立場、こちらとの関係に従って、人間と 人間との会話には必ず(それが明文化されていないものであるにせよ)一定の決まりがある。まずは「おはようございます」とかの挨拶から始まる。そして相手 が年上であれば「ですます」体でしゃべり、その逆の場合にはOptionで常体を使ってもよく、最後には「それでは」とかなんとか締めくくりの言葉がつ く。話す内容は様々かもしれないが、会話にはこうした(暗黙の)約束事が多数存在している。
ではこのプロトコル-約束事を全く無視したらどうなるだろう?朝の挨拶もすっとばし、目上の人間にいきなり
「おまえはこの前あれをやったのか?猫柳は花丸木だ ろう」
と切り出し、そして会話がどこで終わったのか全くわからないような形でいきなり背を向ける。こういう事をした場合に何がおこるかは 相手によって変わるだろう。
人間は多くのエラーを発生させる存在であるとともに(それ故かもしれないが)エラーに対してかなりの許容範囲を持っている。従って こうした「プロトコルを無視した通信」をしたとしても一瞬鳩が豆鉄砲をくらったような顔をして(実際鳩が豆鉄砲を食らった顔を見たことはないのだが)それ でおしまいになるかもしれない。あるいは激怒するかもしれない。
しかしながら親愛なるコンピュータシステムは人間ほどエラーに対する許容範囲が広くない。従ってこの「プロトコル」なるものは非常 に厳密に規定されている。最初に「インターネットに接続しようと思ったときに出くわす呪文」のうちのほとんどはこの「プロトコル」の名称であるとか設定値 である。
さて、「プロトコル」という言葉の意味がなんとなくわかったようになったところで各々のプロトコルの内容を調べればあとはおしま い、、とはならない。次に理解しなければならないのは
「プロトコルは階層構造になっている」
という事実である。
「階層構造」とは何か?階層と聞いたときに私の頭にぱっと浮かぶのは地層である。長年の間に積み重なった土砂であるとかなんとかが ばさっと縦に切ってみればそれぞれ異なる層となり重なって見える。次に思い浮かぶのは白っぽいところと茶色っぽいところが交互に積み重なったバームクーヘ ンであり、さらにはなぜだか布団が何枚も積み重なった光景が思い浮かぶ。(最後のやつは今ひとつ階層と読んでいいのかどうか自信がもてないが)
さてこの地層とバームクーヘンと布団に共通することはなんだろうか?異なる性質をもったなんだか薄いもの(これを層と呼ぼう)が上 下に幾重にも重なっている、というのは共通のことのように思える。
それでは「プロトコルが階層構造をしている」とはどのような意味か?いきなりネットワークで使われるプロトコルを説明する前に、日 常の生活のコミュニケーションを例によって説明してみよう。
ある会社のお偉いさん(秘書あるいは他の名称の世話をしてくれる人がついているような人だ)が別の会社のお偉いさんとお話しようと 思いたったとする。彼もしくは彼女は秘書(もしくはそれに類する人)に「猫柳商事の○○専務と一度お話できるように取りはからってくれ。全然いそがないよ ん」と頼む。
さていきなり仕事を持ち込まれた秘書である。彼もしくは彼女が直接話をする相手は○○専務の秘書である。(相手は少なくとも秘書を 雇う余裕のある会社なのだ)そのことはわかっている。彼もしくは彼女はここでいくつかの選択肢があることに気がつく。一番てっとり早いのは電話をすること だが、なんらかの事情によって相手の秘書と話をするのがいやなことがあれば、電子メールを使う、という手もある。さらには普通の手紙を書く、という手だっ て有る。もし相手とあまりつきあいがなく、「そのうち是非一度お目にかかりたく」とかいう程度の話で有れば手紙だってそんなにおかしな話ではないかもしれ ない。または別件で相手(つまり秘書だが)に会うことが解っていれば、その場で話をすることだって可能である。
さて、ここで秘書はなぜか(本当は説明の都合上だが)「手紙を出す」ことにしたとしよう。すると彼もしくは彼女はさらさらっと手紙 を書き上げ社内便の受付箱に放り込む。そうすると社内の郵便係りさんは受付箱の中身をあつめて分類にかかる。封筒の宛先をみて、それが社外であることに気 がつくと80円切手をぺたんとはって、他の社外向け郵便物といっしょに郵政省管轄のポストに放り込む。すると今度は郵便屋さんがポストの中身を集め、それ を分類し運送し、、、と相手の会社に届き、相手の会社の社内便係りはそれを秘書に届け、秘書は○○専務に「こんなん来ましたけどどうしましょう?」とき く。
同じころ最初に依頼をだしたお偉いさんが別のお偉いさんと話している。「猫柳商事の○○専務に今コンタクトしておるところですわ」 とは言ったところで彼は別に猫柳商事の○○専務とは一言もしゃべっていないし、顔を見たこともないのかもしれない。
さて今のやりとりを簡単な図にしてみよう。
さて、階層構造にはいくつか特徴がある。一つは各層はその上と下の層と接してはいるが(基本的には)飛び越したところに有る層、あ るいは横にある層(これが何を意味しているのか今ひとつわからないが)と接してはいない、ということである。たいていの場合偉い人がいきなり手紙をしたた めて偉い人の部屋から出ていき郵便ポストを探し出してそれを投函する、なんてことはしない。彼は唯一インタフェースのある秘書に「よろしく」と言っただけ である。それでも彼は○○専務とコンタクトしている、と言う。秘書に言わせればコンタクトしているのは自分だと思っている。とはいっても彼または彼女は直 接相手と物理的にコンタクトしているわけではない。それでも秘書はいろいろ考えることがあるが、社内の郵務係りはとにかく封筒をみて宛先だけみて処理をす る。封筒の中身に何が書いてあるか等はお構いなしだ。実際具体的にデータを運んでいるのは〒マークの郵便システムであるが、この中だってちゃんと見ればこ うした階層がいくつも存在している。かのように実生活でもコミニュケーションというのは、こうした「役割をはっきりと分けた」(別の言い方をすると無責任 な)構造に依存している。そして異なる物が上下に積み重なっているから上の構造を階層構造と言えなくもない。
さてネットワーク関係のプロトコルもこのように上下に重なった構造をしている。それぞれのプロトコルは相手方の対応するプロトコル を司っているプログラムと話をしている、ということができるのだが、実際にやっていることは、下位のプロトコル(下位と書いたが別に下等とかそういうわけ ではない)に対してあれやこれやのパラメータ設定をおこない「あとはよろしく」と言うだけである。とはいっても下位に複数のプロトコルの選択肢が有る場合 は、その選択は上位プロトコルの責任だ。先ほどの例で「実は「急いでお願い」と言われていたのに秘書が電話(これは彼または彼女からみれば下位の通信手段 だ)ではなく手紙(これも同じく下位の通信手段だ)を選択したとすれば、それは間違いなく秘書のボーナスに響くことであろう。しかしながらその点を除けば どちらを使っても(とりあえず)相手に情報が伝わることは間違いない。
なぜネットワークの説明の冒頭にこのような話を長々とするか、といえばちゃんと理由がある。ネットワークについて学ぶ上であまたあ るプロトコルの名前と内容の概略理解というのは必要となる。しかしそれに加えてそれぞれがどのレベルのプロトコルなのか?ということを理 解しておかないと話がややこしくなるし、仮にあなたの目の前で「ネットワークについて」熱っぽくかたっている相手が何者かもわからな くなるからだ。
例えば相手が「TCPとUDPの比較について」語っていたとすれば、相手が本当にネットワークについて理解しているかどうかは内容 をちゃんと聞かないとわからない。しかし相手が「TCP/IPとPPPの比較について」語っていればその瞬間自分の前にいるのは「自分がしゃ べっていることを理解できなくても気にしない幸せな人」ではないか、という疑念を感じ、「ひょっとするとこいつと話しているのは時間 の無駄かもしれない」と思うことが出来る。
しかしネットワークに階層構造が存在していることを理解していなければこうした人に相対したとき
「ああ。なるほど何か難しい言葉を使っている。この人は詳しい人だ」
と思いこんでしかねない。しかし逆に言えばそうしたほうが世の中幸せな人生を送れるかもしれない。他人に対して「あのやろう何もわ かってねえのにホラ吹いてやがる」とNegativeなイメージを持つよりは、「ああ。なんてすばらしい人だ」と思っていた方が確かに人生幸せに暮らせそ うな気がする。仮にTCP/IPとPPPを比較することに意味がないとわからなくても、別に詐欺にあったりするとは思えない。。。ということは特に実害は ないわけだ。もしあなたがこの両者を混同することによって実現できる詐欺の手口を思いついたら自分で実践するまえに是非私に教えてください。
さてこのネットワークプロトコルの階層化であるが、いくつかの方式が存在している。少なくとも私がStanfordにいたときに一 番有名で、かつ有望と思われていたのはOSI 7 Layersであった。参 考文献1)によれば、このモデルはCCITTがおよそ6年間共同作業を行い、その結果として1984年に導入されたものだ。この制定 には有力メーカー及びネットワーク関係の著名な研究者が参加していたから「将来はOSIへの移行が進む」と誰もが思ったのは間違いない。しかしながら、今 ではOSIと名前がついているプロトコルは徐々に消えゆく運命にあるようだ。代わりに世の中を席巻しているのはその10年ほど前に作られたインターネット プロトコルセットである。こちらはOSIの7層に対し、4層ですべてのプロトコルを階層化している。
この両者にはマイナーな違いはあるが基本的な考え方は驚くほど似ている(参考文献1によれば、他のメーカー特製ネットワーク- IBM特製のSNAや今や存在しない会社DECが開発したDECnetや-も実によくにた階層構造を取っていると言う)私が受けた講義はOSIを基礎と し、全7層のうち下位4層を対象にするものであったから、本文書ではOSI 7 Layersの分類を基礎として説明をおこなう。インターネットプロトコルセット-いわゆるTCP/IPをベースとしたもの-については、もしある場合に はその相違点についてふれながら説明をしたいと思う。
さて次には実際のネットワークがどのような階層構造になっているか。またその役割分担がどのようになっているかを説明する。
Microsoft をおとしめるため:私は「Privateではしばらく絶対にWindowsなんか使うもんか」という信条の持ち主だが、(ト ピック一覧)それはここではとりあえず関係ない。本 文に戻る
猫柳は花丸木:この言葉が何かについ ては、「五 郎に関するFAQ」参照の事。本 文に戻る
理解しておかな いと:実際ネットワークの階層の理解というのは必須である。しかしながら世の中には私よりもひねくれものがいて、「世の中の統一見 解」があると無条件にそれに反発する人もいるのである。
某雑誌に連載されていたネットワークの解説文書(日経オープンシステムに1998年に連載された「新人SEのためのネットワーク入 門」)は「プロトコルやソフトの階層は意識せず、まずはトラフィックから把握する」というのをうたい文句にして、かつ随所に「階層は理解する必要はない」 と繰り返していた。しかしながらその文章の著者の意気込みとは裏腹に例えば読者からの指摘があると
「プロトコルやソフトウェアの階層構造は気にする必要はないと説明したが、ここでちょっと階層構造の処理をおおざっぱに見てみよう」
と説明を加えざるを得なくなる。かくのとおり無駄なところでがんばってもしょうがない。仮にそれが妙に思えるものであっても必要と皆が 言うので有れば素直に従うべきだ。本 文に戻る
自分がしゃべってい ることを理解できなくても気にしない幸せな人:(ト ピック一覧)それがデタラメであっても、とにかくしゃべり続ければ幸せ。これができれば人生どんなに楽にくらせるだろう。本 文に戻る