コンピュータネットワーク入門(前期の復習+α)

インターネットの起源

アメリカ国防総省・高等研究局(ARPA: Advanced Research Project Agency )が、いくつかの拠点が壊滅しても全体としての通信ネットワー クを確保するための実験としてアメリカ国内の4大学 を接続しました。

 ⇒ARPANET := 1969年12月 に誕生、とされています。

インターネットの特徴

ネットワークの論理的接続

ネットワークとプロトコル

そもそもプロトコルとは何か、ということですが、(コンピュータに限らず) 通信をする際の 約束事(通信規約) のことです。

通信のための約束事というのは実はコンピュータネットワークにかぎったこと ではなくって、例えば、人と人がコミュニケーションをとる際にも、音声 (空気の振動) により、日本語という文法 (これも規約と考え ることができる)により通信(?コミュニケーション)が可能となっているる わけです。みんながてんでんばらばらに、フランス語とかアラビア語をしゃべっ たんではコミュニケーションはなりたちません。

別の例でいうと、我々が葉書(封書でも一緒)を出す場合に、ちゃんと約束事 に従ってます、よね。これも勿論通信です。つまり相手の郵便番号をちゃんと 7桁書いて(それも決まった場所=上に!)住所と名前もおおよそ決まった場 所(郵便番号の下)に書いて、切手も決まったところ(左上)にはって、ポス トに入れる、という手順をふむわけです。これも立派なプロトコルです。この 約束を破ると、例えば住所を書かないと何処に届けていいかわからないし、切 手を貼らないと郵便は届けてもらえない、ということです。

くどいようですが、プロトコルすなわち約束事をまもらないと、情報は伝 わらない(伝えようがない) ということをここでしっかりと押えておい てください。

プロトコルの階層

プロトコルといっても決めることは沢山あって、例えばケ−ブル・コネクタの 形状の決まりがないとそもそもお互いに差し込めるようにできないし、あとア プリケ−ションレベルのデ−タフォ−マットも約束事=プロトコル です。もしこういった規格が全て1つの約束事になってたら、ということを仮 に考えてみましょう。そうすると、もしケーブルでつないでたコンピュータを 無線にしようとしたら、無線LANの規格を含むプロトコルに総入れ換えしない といけなくなります。手紙の例で言うと、郵便屋さんが乗ってるのが自転車か バイクか車かによってあて先の書き方を変えなければいけない、という感じで す。これは非常に面倒でかつ無駄なわけです。
もし自転車なら舗道のある道順を指定しないといけないけど畔道を通ることに なっても大丈夫、とか、車なら高速道路のルートを教えてあげないといけない、 といった感じでしょうか?

そこで、ネットワ−クプロトコルを階層的に定義 して整理(モデリ ング)する方法が一般的です。これをネットワークアーキテクチャ といいます。

要点として;

ということを押さえておいてください。

OSIの7階層について

ネットワークアーキテクチャの中で標準的なものが、ISO (Internatinal Standardisation Organisation) 1983 年 に示した OSI (Open System Interconnection) の参照モデル です。
このモデルは Internet において実際に実装されているというわけではありま せんが、ネットワークの階層性を理解・説明するのに便利で非常によく利用さ れますので、ここでも述べておきます。

これは7つの階層からできています。

基本参照モデル
上位層
第七層応用層 応用プログラムや端末利用者にデータ通信機能を提供
第六層プレゼンテーション層異機種間のデータの タイプや符号を変換する
第五層セション層 全二重、半二重、優先データ、送信機能、同期、再送機能などを提供
下位層
第四層トランスポー ト層データ転送品質(誤りの検出・回復)を保証
第三層 ネットワーク層通信ルートの確立し、データを中継・転送す る機能を提供
第二層データリンク層高信頼 の透過的なビット伝送を保証
第一層物理層 通信回線を介してビット単位の伝送を提供
物理媒体 電気的な回路、回線、交換機など

それぞれの層の主な機能は、以下の通りです。ちなみに第1〜4層を下位層、 第5〜7層を上位層と呼びます。

ちなみに、インターネットの世界の標準プロトコル TCP/IP に上の7層をむり やり(?)対応付けると、1,2 層目はごっちゃになって(代表として)データ リンクの層として扱うことが多く、 3 層目がIP、4層目がTCP,UDP 、 5〜7層もまた併せて(代表として)アプリケーションの層として考えることが 多いです。

RFC

Internet 上の約束事(規則といってもいいが、強制する組織は無いのは前述の 通り)の多くは、RFC (Request For Comments) という形でまとめら れて、公開されています (原語は英語)
RFC 以外にも、特に下位層については ISO , IEEE などで標準化されたものがいくつ か使われています (IEEE 802, ISO の文字コードなど)
たとえば、電子メールのプロトコルと型式に関しては、比較的最近(と いっても2008 年)更新された RFC5321 RFC5322 で規定されています。
その前にあったメールに関する RFC としては821/822, 2821/2822 がありまし たが、これらは5321/5322 に上書きされた形で 無効 (obsolete) と なっています。このように、RFC は旧来のものを改善したものが出てきたとき に、バージョン管理ではなく新しい番号をふって古いのを無効にする、という 習慣があります。
ちなみに一部は日本語に翻訳されています。それらについては、例えば JPNIC の RFC のページ などを参照してください。

物理層 (Physical Layer) について

通信をするには、まずはなんらかの手段でコンピュータ同士をつながないとい けないわけで、さらにその場合、電圧とかいろいろ事前に決めておかないと当 然データ通信は出来ないです。その「なんらかの手段」の規約がすなわち物理 層のプロトコルとなります。

通信路の種類と通信速度

下のものほど新しく、大体高速になってます。

伝送の方式(種類)

接続の方式

net-con

物理的な接続と、論理的な接続が違う場合があるので注意してください。例えば スイッチングハブにつないだ複数のPCによる Ethernet のネットワークは、物 理的(見た目)にはスター型ですが、論理的(プロトコル的?)にはバス型です。 (以下参照)

データリンク層 (Data Link Layer) について

データリンク層の役割

Ethernet (IEEE 802.3) のデータリンク層プロトコル

ネットワーク層 (Network Layer) について

ネットワーク層の機能 = IP (Internet Protocol)

IP とは

IP とは、OSI の7階層のネットワーク層(3層目)に対応する、複数のネット ワークを繋げるためのプロトコルです。複数のネットワークをつなげられるよ うになって、はじめてネットのネットである Internet が構成できるわけです。
1つ下の層である データリンク層 で、ある 1つの ネッ トワークに継った複数のコンピュータがつながることが保証されます。細かく 言うと、MACアドレス というインターフェース(ネットワークの 出入り口であるハードウェア) が固有にもっている 6オクテット ( 48 ビット)の数値で識別され、 CSMA/CD(有線), CSMA/CA(無線) 等のプロトコル にのっとってフレーム(=データの小さな 塊) 単位でのデータ交換を可能としています。

IPアドレスの表現

住所の場合は前述のように数字、文字を 使って書くわけですが、IPアドレスはどうなってるかとい うと、40 億くらいまでの単なる整数です。 細かくいうとIP(v4) アドレスは 32ビット = 4オクテット で表現されます。つまり、0か1かが
10010110000010011010000000001010
のように32個並ぶわけですが(10 進数だと 2517213194) 普通は8ビットずつ区 切って、
10010110 00001001 10100000 00001010
とし、さらに各々を(なぜか16進数ではなく) 10進数に直して
150.9.160.10
のように書くのが普通です。つまり、10進数で 0〜255までの数の、4つ 組 でIP アドレスというものが成り立っていてるというわけです。

ネットワークアドレスとホストアドレス

Internet では、近くのコンピュータにデータを送るのに世界中 に問い合わせたり遠くのコンピュータを経由することは原則しません。
VPN 等の例外もあることはあります。
これを実現するのが「ネットワークアドレス」「ホストアドレス」です。IP アドレスというのは実は である、ということを理解してください。

先の例では、150.9. が阪南大学 (hannan-u.ac.jp) のネットワークアドレス で、160.10 が puffin のホストアドレス、となるわけです。

ホストアドレスが全て1であるアドレスはブロードキャストアドレス (そのネットワーク全体を示す)で、全て0であるアドレスはネッ トワーク自身のアドレスになります。つまりこの2つにはホスト (コンピュータ)を割り当てることは出来ません。

グローバルアドレスとプライベートアドレス

上でも少しのべたように、IP アドレスは不足気味でずっと推移しています。 実はサブネットで切るのも効果はあるのですが、1つの組織で全てのコンピュー タに世界で一意のIP アドレス(これをグローバルアドレスといいま す)を割り当てるのではなく、組織内は閉じたネットワークを構成し、そこで は自由に世界中で一意ではない(つまり重複した)アドレスをふることで解決 することが考えられました。これがプライベートアドレス(RFC1918) です。

RFC1918 で規定されているプライベートIPは以下の通りです。

これらは勝手に使ってよいのですが、当然使ってよいのはその閉じたネットワー クの中だけで、重複してるので外部、すなわち The Internet では当然このア ドレスは直接は 使えません。 ではどうするかというと、プライベートアドレスのマシンはグローバル アドレスが振られているルータに接続され、そのルータ経由で、その時にグロー バルアドレスに変換してから外部に接続する、ということをします。これには NAT (Network Address Translation) や、 NAPT (Network Address Port Translation) (別名 IP マスカレーディング (masquerading) )といった技術をもちいます。

この変換を利用すると、1つのグローバルアドレスを多数のコンピュータで使 えるのでアドレスの消費を節約できるというわけです。また、結果として外部 から内部のアドレスを隠すことになっているので(不正アクセス等の)セキュ リティ対策面でも有利です。現在ちまたで売られて使われている「ブロー ドバンドルータ」なるものは、ほとんどがこの機能を使ってます。

サブネットとネットマスク

例えばクラスBのネットワークだと6万個以上のコンピュータが1つのネッ トワークに継るわけですが、これは輻輳の可能性もありますし、ネット資 源として無駄が出る、等いろんな意味でよろしくないので、大抵の組織内 ネットワークでは、これを(もちろん論理的に)細かく切り刻んで使うこ とが多いです。その場合の刻んだネットワークのことをサブネット といいます。そして、具体的な個々の刻まれたサブネットのことを セグメントと言うことがあります。CIDR とにたような動きで す。

そして、サブネットがどのように刻まれているかを示すのに使われるのが ネットマスクです。これとIP アドレスの ビット毎の論理積 (bitwise-AND) をとるとサブネットのアドレスがわかります。例えば本 学の場合だと、ネットマスクは 255.255.248.0 なので、例えば 150.9.160.10 の場合、150.9.160 までがネットワークアドレスとなります。つまり;

   255   .  255   .  248   .    0
 11111111 11111111 11111000 00000000
&
 10010110 00001001 10100000 00001010 <= 150.9.160.10
=10010110 00001001 10100000 00000000 <= 150.9.160.0

同じネットワークアドレスを表すのに、150.9.160.0/21 という表記 をする場合もあります。これは、上位21ビット(=255.255.248.0) がネットワー クアドレスである、という意味です。同じ 150.9.160.0 でも、/19 もありえ るし、/24 もありえるわけです(上図参照)。

経路制御

経路制御 (routing, ルーティング) とは、上でいうネットワークを またがって配送する場合に、どのようなルールで転送していくか、ということ です。これがないと、ネットワーク間の情報伝達は出来ないわけです。たとえ 話でいうと、大阪府外に出す場合は、まずは中央郵便局に集配して、そこから 各都道府県の中央郵便局に送って…という感じです。

実際の制御を簡単な例え話でいうと、

  1. 送りたい場所が自分と同じ府県(=ネットワークセグメント)ならそ のまま行ける。
  2. 自分と同じ府県に目的地がなければ、
    1. その経路を教えてくれるところ(大抵は中央郵便局?)へまず送る。
    2. そしてそこで次に送るべき場所(大抵は都道府県の大きな局)を教わって、それに従う。
    3. これを目的地に到着するまで繰り返す。
という感じです。
ということで、本格的な解説です;

ルーティングテーブルの管理

ルーティングテーブルを静的、すなわち不変のものとして管理する場合は、上 述のようにテーブルを管理者が作っておけばいいわけです。しかし、障害対応 など接続状況が変化する場合は、その状況に応じて適宜動的に生成 する必要があります。その場合、RIP などのプロトコルを用いて生 成します。これこそが、Internet が Internet として成り立っている (網の一部に障害がおこっても全体としての通信機能はたもたれる)主要 技術となっているわけです。

DNS (Domain Name System (Service))

名前と IP アドレス

IP アドレスは数字の羅列なので、コンピュータにとってはともかく、人間にとっ ては覚えにくく、扱い辛いです。なので、分り易い名前をつけて、その名前と IP アドレスの関連をつければよい、ということが考えられました。それがすな わち DNS です。IE などのブラウザは、自動的に ドメイン名を IPアドレスに変換 してアクセスしているわけです。

トランスポート層 (Transport Layer) について

IP 層で世界中のコンピュータがつながるようになるとして、その上で、さて個々 のアプリケーションがどのようにそれぞれを 区別して個別に 通信が できるか、については、もう少し細かい制御が必要となります。それがこの層 の役目になります。

TCP,UDP と並行処理のモデル

そもそもここで対象としている並行処理 とは何か、ということなので すが、そもそも今どきのコンピュータはマルチプロセス システムであることが本質であり、その各プロセスが個別に通信 を行えるようにするための仕組みを提供しています。つまり、同時にメー ルの送信・受信も出来るし、WWW のサービスも提供できるし、ということです。 そこで、並行処理のために、ポートという概念を導入し、これを識別子として 個別の通信を区別できるようにしています。

IP 通信では、2者(通信の主体、ノード ということがあります) 間で通信をする場合には、まず通信したい、即ち何かサービスを受けたい方 (これをクライアント といいます)から通信される、即ち何かサー ビスをする側(これをサービスする者という意味でサーバ といいま す)にたいして接続要求をし、サーバが要求を受け付けた時点で通信が開始さ れます。これをサーバ・クライアント型通信 といいますが、サーバ/ クライアントといった種類を問わず、かならずポートを割り振ります。

例えば、SMTPサーバは通常25 番を使用しますし、HTTPサーバは 80 番です。つまりサーバの場合は、クライアントからのアクセス時 にどのサービスを受けたいかを指定しないといけないので、必然的にポートを 指定する必要があります。そして、一般的なサービスについては25や80のよう に一般的な固定化された番号を定義しています。これはウェルノウンポー ト(well-known port) と呼ばれます。

unix 系マシンの場合はたいてい /etc/servicesというファイルにそのポートが記されています。以下、 /etc/services からの抜粋です。

ftp-data        20/tcp
ftp             21/tcp
ssh             22/tcp                          # SSH Remote Login Protocol
ssh             22/udp                          # SSH Remote Login Protocol
telnet          23/tcp
smtp            25/tcp
www             80/tcp          http            # WorldWideWeb HTTP
www             80/udp                          # HyperText Transfer Protocol
pop-3           110/tcp         pop3            # POP version 3
pop-3           110/udp

同時に、これらのサーバに接続するクライアント側のアプリケーションでも、 実はポート番号が割り振られています。そうしなければ、要求元、すなわちサー ビスを受けたいクライアントノード上のアプリケーションが見分けられないか らです。とはいえ、クライアント側のポートは何でもよいため、通常は使用さ れていないポート (1024 より上)からOSが 自動的に割り振ります。

TCP の通信モデル

これらをIP層の上で構成して、信頼性をもたせているわけです。言い替えると、 TCP は多少パフォーマンスはおちることがあっても、高信頼性の双方向通 信を確立させるためのプロトコルと言うことができます。ちなみに コネクションを張る、とは、データを流す前に繋ぎ元と繋ぎ先をお互い に確認することで、その後は安心して通信できるようにする、ということです。

UDP …コネクションレス型プロトコル

おまけ:「サーバ」とは何か?

上にも「サーバ」という言葉が使われていますし、今後も頻繁に出てくるので すが、ここでまとめとしてサーバについて改めて説明しておきます。

「サーバ」とは、第一義としては Webサーバやメールサーバといった ソフトウェア がインストールされて、動作している コン ピュータ すなわちハードウェア です。サーバと言うと なにか難しいものに思えるかもしれませんが、細かな違いを除けば、普段 使っているPCと特に変わりありません。そのソフトウェアが24時間動い ていて、サービスを要求されるのを待っていて、要求されればそれに応え る、ということです。 PCにブラウザやオフィス(ワープロ他)のようなソフトウェアをインストール して使うのと同様に、Webサーバやメールサーバといったソフトウェアをイン ストールして必要に応じて設定することで、それらの機能を使うことが可能に なります。

ここで改めて確認しておいて欲しいのは、「サーバ」と呼ばれるものには、ソ フトウェアがインストールされて稼働しているハードウエア をあら わす場合と、Webサーバなどの ソフトウェア をあらわす場合の2通 りあるということです。文脈に応じてどちらのことを言っているかを考えない といけません。さらに、場合によってはハード・ソフト併せて言うこともある ので気をつけてください。


講義用スタイル
印刷用スタイル (開いてから、ページを再度更新してください)