ネットワークとは、複数のコンピュータをつないで情報を交換する仕組みのことである。そのためには送信者と受信者の間で情報の送り方を決めておかなければならない。ここでは、7つの実験を通して、情報交換の約束事(プロトコル)の世界標準であるTCP/IPネットワークを理解する。
実験環境
実験対象となるネットワーク環境は以下の通りである。ネットワークに接続された個々のコンピュータの中には、サーバー(server、サービス提供者)となるものと、クライアント(client、サービス利用者)になるものがある。サーバー上で動作するプログラムは、クライアントから利用される。個々のコンピュータから出たケーブルは、ハブ(hub)と呼ばれる集線装置によって相互に接続されている。ルーター(router)は、社内ネットワークをインターネットに接続する装置である。
このような1つのオフィス内の小規模なネットワークのことをLAN(Local Area Network)という。インターネットのように企業間を結ぶ大規模なネットワークのことをWAN(Wide Area Network)という。ルーターがLANをWANにつなぐ。ルーターの先は、プロバイダ(provider、インターネット接続業者)のルーターにつながっている。プロバイダから先はまた別のルーターで、インターネットの太いケーブルにつながっている。社内のLANを1つの単位とし、それをプロバイダのルーターで他社のLANとつなぐことを世界的に広げていったものがインターネットである。
以下の実験では、まず実験方法を述べ、その後に用語説明をまとめる。
1 ネットワーク・カードのMACアドレスを調べる
最初の実験では、ネットワーク・カードのMACアドレスを調べる。Windowsの場合「スタート」→「アクセサリ」→「コマンド プロンプト」と選択すればよい(MacOSXはTerminalからUNIX系のコマンド操作が可能)。表示される真黒い画面のウィンドウがコマンド・プロンプトである。コマンド・プロンプトとは、キーボードから文字列でコマンド(命令)を入力するためのものである。文字列の末尾で[Enter]キーを押せば、コマンドが実行される。
ipconfig /all
というコマンドを入力してみてほしい。「Physical Address」と示された部分にある、8ビットずつハイフン「-」で区切られた6個の数値(16進数)がMACアドレスである。前から3つがメーカー番号で、後ろ3つが製品番号を表す。
MACアドレス(Media Access Control)とは、メーカー番号と製品番号を組み合わせたもので、世界に唯一無二の番号である。ネットワーク・カードを選べば、必然的にネットワーク・ケーブル、ハブ、ルーターの種類も決まる。まずは、ネットワークにおけるハードウェアについてまとめる。
ネットワークを構築するために必要なハードウェアは、以下の4つである。(1)個々のコンピュータに装着するネットワーク・カード(Network Interface Card:NIC)、(2)ネットワーク・カードに差し込むネットワーク・ケーブル、(3)ネットワーク・ケーブルをまとめて結ぶハブ、(4)インターネットに接続するためのルーター。これらは、同じ仕様のものでなければ、相互に接続できない。ネットワーク・カードの主流は「イーサネット」という仕様である。
イーサネット(ethernet)とは、CSMA/CDという仕組みでLAN内のコンピュータを接続するものである。CSMA/CD(Career Sense Multiple Access with Collision Detection)とは、ネットワークが誰からも使われていない状態であることを確認してから、自分の送りたい電気信号を送信する。もし同時に複数のコンピュータが電気信号を送信してしまったら、ランダムな時間だけ待ってから同じ電気信号を再送信する、というものである。CareerSenseとは、ネットワークが使用中かどうかを示す電気信号(Career)を調べる(Sense)という意味で、Multiple Accessとは、複数(Multiple)の送受信(Access)という意味である。with Collision Detectionとは、同時に送信してしまった場合の電気信号の衝突(Collision)を検出する(Detection)という意味である。小規模なLANであればこの方式で問題がないが、あくまでLAN内だけの仕組みである。
1台のコンピュータから送信された電気信号は、他のすべてのコンピュータに届く。電気信号を受信したコンピュータは、それが自分宛のものであれば受け取り、そうでなければ無視する。この指定に活用される番号がMACアドレスである。個々のネットワーク・アドレスが持つROM(Read Only Memory、読み出し専用メモリー)には、あらかじめ1枚ずつ異なるMACアドレスが焼き込まれている。MACアドレスの番号を決めるのはネットワーク・カードのメーカーの役割である。
2 コンピュータのIPアドレスを調べる
次の実験では、コンピュータに設定されているIPアドレスを調べる。先ほどと同じ、
ipconfig /all
というコマンドを使う。「IP Adress」と示された部分にある数字がIPアドレスである。「Subnet Mask」(サブネット・マスク)と示された部分にも注目してほしい。サブネット・マスクとは、32ビットのIPアドレスのどこまでがネットワーク・アドレスで、どこまでがホスト・アドレスかを区別するためのものである。この4つの数字を2進数で表したとき、1となっている桁がネットワーク・アドレスで、それ以降の0になっている桁がホスト・アドレスである。
IPアドレスとは、TCP/IPネットワークにおいてコンピュータごとに設定しているソフトウェア的な番号のことである。IPアドレスを使うことで、企業単位でアドレスの上位桁を揃えるようなグループ化が容易に行える。MACアドレスと同様にIPアドレスの値も、世界で唯一無二のものである。
IPアドレスが設定されたコンピュータのことをホスト(host)と呼ぶ。ルーターもコンピュータの一種であり、IPアドレスを持っている。TCP/IPネットワークで送受信されるデータには、MACアドレスとIPアドレスの両方が付加されている。IPアドレスは、32ビットの数字で、8ビットずつドット「.」で区切った4つの数値で表せる。8ビットで表せる数値は10進数の0~255なので、IPアドレスとして使える値は、0.0.0.0~255.255.255.255の4294967296通りとなる。
IPアドレスによって、1つ目~3つ目の数値で企業を表し、4つ目の数値で企業内のコンピュータを表すようなグループ化が容易に行える。例えば、AAA.BBB.CCCという企業でXXXというコンピュータなら、IPアドレスはAAA.BBB.CCC.YYYというIPアドレスなら、同じ企業内の別のコンピュータだとわかる。IPアドレスの数値の中でグループ(LAN)を表す部分を「ネットワーク・アドレス」、個々のコンピュータ(ホスト)を表す部分を「ホスト・アドレス」と呼ぶ。この例では、AAA.BBB.CCCまでがネットワーク・アドレスで、XXXやYYYの部分がホスト・アドレスである。
3 DHCPサーバーの役割を知る
3つ目の実験では、IPアドレスとサブネット・マスクの数値を設定するウィンドウを表示する。Windowsのデスクトップにある「マイネットワーク」アイコンを右クリックして「プロパティ」メニューを選択し、表示されるウィンドウの「インターネットプロトコル(TCP/IP)」を選択して「プロパティ」ボタンをクリックすると出てくる。
このウィンドウを使って、IPアドレスとサブネット・マスクの数値を手作業で設定することもできるが、多くの場合「IPアドレスを自動的に取得する」が選択されているだろう。これによって、コンピュータの起動時にDHCPサーバーからIPアドレスとサブネット・マスクの値が知らされ、それらが自動的に設定される。
DHCP(Dynamic Host Configuration Protocol)とは、動的にホストを設定するプロトコルである。DHCPサーバーには、LAN内のコンピュータに割り当てられるIPアドレスの範囲とサブネット・マスクの値が記録されている。クライアントとなるコンピュータを起動すると、まだ他のコンピュータに割り当てられていないIPアドレスが知らされる。
ここでウィンドウの「デフォルトゲートウェイ」という設定項目に注目してほしい。ここにはルーターのIPアドレスを設定する。ルーターは、LANからインターネットの世界への出入り口(gateway)というわけである。ルーターのIPアドレスもDHCPサーバーから知らされる。「DNSサーバーのアドレスを自動的に取得する」の項目については後述する。
4 ルーターは経路の水先案内人
4つ目の実験では、ルーティング・テーブルを表示させる。ルーティング・テーブルとは、ある情報は送信データをどこに送ればよいかを示すものである。1台のルーター(経路を決める装置)のルーティング・テーブルには、近接するルーターまでの経路だけが記録されている。コマンド・プロンプトで、
route print
というコマンドを実行する。
ルーティング・テーブルは、5つの列を持つ表となっている。Network Destination、Netmask、Gateway、Interfaceは、送信先やルーターのIPアドレスなどを表している。Metricは、送信の際に通過するルーターの数などから決まる、経路の重み付けを示す値である。送信先に複数の候補がある場合には、このMetricの値が少ない方が選択される。ルーティング・テーブルには、あて先がLANの中ならルーターを超えずに直接データを送信し、LANの外(ルーティング・テーブル内にあて先のIPアドレスがないもの)はルーターに渡すということが設定されている。
5 ルーターの経路を調べる
5つ目の実験では、ルーターの経路を調べる。ルーターを経由したデータ転送のことをルーティング(routing)という。コマンド・プロンプトでtracertコマンドを実行すると、ルーティングの経路を調べることができる。tracertの後ろには、送信先のホスト名(コンピュータ名)を指定する。例えば、自分のコンピュータから筆者が運営するサイト「カイホー」のWebサーバーまでの経路を調べるには、コマンド・プロンプトで
tracert kaihooo.com
を実行してほしい。経路が順々に表示されたと思う。
左側にある数値は、データがたどる経路のIPアドレスを順番に示している。筆者の場合、1番目は筆者が契約しているプロバイダのルーターが、途中は他のプロバイダのルーターが、最後には「カイホー」のWebサーバーが表示された。自分のコンピュータから、あるWebサーバーまでの経路を可視化することができるのだ。
6 DNSサーバーがホスト名をIPアドレスに変換
6つ目の実験では、DNSサーバーを使ってみる。コマンド・プロンプトでnslookupを実行すると、DNSサーバーに問合せを行えることを表す「>」というプロンプトが表示される。その前に表示されているものは、FQDNとIPアドレスである。kaihooo.comと入力してEnterキーを押すと、カイホーのWebサーバーのIPアドレス203.189.109.245が表示される。kaihooo.comと203.189.109.245の対応は、インターネットに接続されている他のDNSサーバーに問い合わせて取得したものである。nslookupを終了するにはexitと入力してEnterキーを押す。
DNS(Domain Name System)サーバーとは、インターネットにおける文字列をIPアドレスに変換してくれるものである。前回の実験でも、kaihooo.comという文字列を203.189.109.245というIPアドレスに変換している。
FQDN(Fully Qualified Domain Name)とは、完全修飾ドメイン名といい、ホスト名とドメイン名を組み合わせた名前のことである。ホスト名はコンピュータに対応し、ドメイン名はLANに対応している。IPアドレスと同等で、コンピュータを識別する世界で唯一無二の名前である。覚えにくいIPアドレスに変わり、FQDNを使って自動的にIPアドレスに変換する(名前解決)DNSサーバーが考案されたのである。DNSサーバーは普通LANごとに配置され、FQDNとIPアドレスの対応表を記録している。世界中のDNSサーバーが連携し合って動作しており、自分で名前解決できない場合は、児童的に他のDNSサーバーに問合せを行うようになっている。
7 IPアドレスとMACアドレスの対応を調べる
最後の実験では、ARPキャッシュ・テーブルを見てみる。ARPキャッシュ・テーブルとは、過去に調べたIPアドレスとMACアドレスの対応情報のことである。個々のコンピュータにはそういった情報をキャッシュ(メモリー内に一時記憶)しておく機能がある。コマンド・プロトコルでarp -aコマンドを実行すると、現在のARPキャッシュ・テーブルの内容が表示される。
ARP(Address Resolution Protocol)とは、IPアドレスをMACアドレスに変換する機能である。インターネットの世界では、IPアドレスが付加されたデータが飛び交っている。しかし、最終的にデータを受け取るネットワーク・カードを識別するのがMACアドレスであることに変わりはない。そこで、コンピュータには、ARPという機能を実現するプログラムが組み込まれているのである。
ARPの仕組みは、「ブロードキャスト」という方法を使っている。ブロードキャスト(broadcast)とは、LAN内のすべてのコンピュータに一斉に問いかけることである(一斉同報)。この動作も自動的に行われる。ブロードキャストによって何らかのコンピュータがMACアドレスを返してきたら、IPアドレスとMACアドレスの対応がわかるのだ。
TCPの役割とTCP/IPネットワークの階層
TCP/IPという言葉は、TCPとIPの2つのプロトコルを一緒に使っていることを意味する。IPは、データを送る相手をIPアドレスで指定し、ルーティングでデータを転送していくためのプロトコルである。TCPは、データの送信者と受信者がお互いに相手の確認を取り合いながら、確実にデータを受け渡すためのプロトコルである。このようなデータの送信方式をハンドシェイク(handshake)と呼ぶ。TCPには、大きなデータをパケット(packet)という小包の単位に分割して送信し、それを受診側でつなぎ合わせて復元するための約束事もある。
約束事を守るとは、データの形式を揃えることである。約束事を守ってデータを送受信するためのTCPプログラムやIPプログラムなどがOSの機能として提供されている。TCPプログラム、IPプログラムそれぞれの約束事を守るための情報を付加して完成されたデータが、パケット単位で送信されるのである。
ハードウェア的にデータを送信するのは、ネットワーク・カードである。ネットワーク・カードのようなハードウェアを制御するためのプログラムをデバイス・ドライバ(ARPなど)という。ネットワーク・カードの上にデバイス・ドライバがあり、デバイス・ドライバの上にIPプログラムがあり、IPプログラムの上にTCPプログラムがあり、さらにその上にWebやメールなどのアプリケーションがある(図1)。TCPはTCPポート番号と呼ばれる数値で、アプリケーションを識別する。TCPポート番号には予約されたものがいくつかある。Webなら80番、メールなら25番(送信用)と110番(受信用)である。
図1.OSI参照モデル、TCP/IPネットワーク、プロトコルの関係
最後に
7つの実験を通して、代表的なプロトコルであるTCP/IPネットワークについて理解を深めた。同時にTCPの役割や、その階層構造についてまとめた。
TCP/IPネットワークが基礎知識になることは間違いない。しかし、遠隔操作ウイルスによる誤認逮捕事件に代表されるように、この知識だけでは多様なネットワークを有効活用することはできない。セキュリティのために、ユーザー自身がパケット警察のようなフリーソフトウェアを導入する必要も出てきている。安全かつ快適にネットワークを活用するために、誰しもがネットワークについて学ぶことが求められている。
次回は、データの暗号化についてまとめる。
![]() |
![]() |