皆さん,こんにちは。グレープシティの矢沢久雄と申します。私が日経ソフトウエアに連載していた「やってみよう! 実験室」が,ITproに引っ越しして,新たなスタートを切ることになりました。どうぞよろしくお願いします。

 この連載は,知っておきたいプログラミングの基礎知識を題材に,気軽にできる実験を紹介するものです。実験に必要なものは,ふだん皆さんがお使いのWindowsパソコンと,15分ほどの時間だけです。何事も「百聞は一見にしかず」です。言葉で知っていることも,実際に自分の目で確認すれば,より一層理解が深まります。

 今回は,自分のパソコンに設定されているIPアドレスとMACアドレスをちょっと詳しく見てみます。やってみよう!

なぜ1台のパソコンに二つの識別番号があるのか

 ITproをご覧頂いているのですから,皆さんのパソコンは,インターネットに接続されています。皆さんのパソコンは,インターネット上で「IPアドレス」と呼ばれる番号で識別されています。さらに,皆さんのパソコンが備えているネットワーク・カードには「MACアドレス」という番号も付けられています。1台のパソコンを識別するのに,二つの番号があるわけです。なぜでしょう? それを考えてみようというのが,今回のテーマです。

コマンドプロンプトでipconfig /allと打ち込む

 それでは,実際にIPアドレスとMACアドレスを見てみましょう。Windows(ここでは,Windows XPを使った例を示します)の[スタート]メニューを「すべてのプログラム」→「アクセサリ」→「コマンドプロンプト」の順にたどって,コマンドプロンプトを起動してください。

 コマンドプロンプトのウィンドウが開いたら,キーボードから
ipconfig /all
と入力して[Enter]キーを押してください。ipconfigは,ネットワークに関する設定を確認および変更する,Windowsのコマンドです。ipconfigの後に半角スペースを1個置いて/allと指定すると,すべての設定項目が表示されます。図1に例を示します。この例は,私のパソコンで実験したものですが,ネットワークの設定は一部の値を変更しています。むやみに公開しないほうがよいためです。ご了承ください。

図1●ネットワークに関する設定を確認する
図1●ネットワークに関する設定を確認する
[画像のクリックで拡大表示]

 表示された様々な設定項目の中で「Physical Address」とあるのが,MACアドレスです。私の場合は,00-07-E9-4D-C2-CFになっています。「IP Address」とあるのが,IPアドレスです。私の場合は,192.168.1.198となっています。皆さんも,ご自身のパソコンで,二つの番号を確認してください。

MACアドレスの仕組み

 MAC(Media Access Control)アドレスは,パソコンに装備されたネットワーク・カードにハードウエア的に設定されている番号です。あらかじめネットワーク・カードのメーカーが設定する番号であり,基本的にあとから変更できません。例にあげた00-07-E9-4D-C2-CFという番号は,16進数で示されています。16進数の1桁は,2進数の4桁(4ビット)に相当するので,MACアドレスは,全体で48ビットです。

 48ビットの上位24ビットは,メーカーを表す番号です。私のネットワーク・カードの場合は,00-07-E9の部分です。下位24ビットは,製品の製造番号です。したがって,MACアドレスは,ネットワーク・カードごとに世界に一つしかない番号ということになります。

IPアドレスの仕組み

 IP(Internet Protocol)アドレスは,ソフトウエア的に設定される番号です。パソコンを接続するネットワーク環境に合わせて,後から設定する必要があります。同じパソコンでも,異なる環境(例えば,出張先のホテルの部屋)に移動したら,IPアドレスを変更します。IPアドレスは,全体で32ビットです。それを8ビットずつドットで区切って,10進数で示します。8ビットで示せる値は,10進数の0~255なので,IPアドレスは,0.0.0.0~255.255.255.255の範囲になります。

 IPアドレスの上位桁は,「ネットワーク・アドレス」を表し,下位桁は「ホスト・アドレス」を表します。ネットワーク・アドレスは,企業のネットワークや,プロバイダなど,“あるグループ”を識別するための番号です。ホスト・アドレスは,個々のパソコンや,ルーターなどの通信機器のネットワークとの接続口を識別するための番号です。上位桁と下位桁の区切りは,接続するネットワーク環境によって異なります。

 区切りがどこにあるのかを示すのが,「サブネット・マスク」と呼ばれる番号です。もう一度,図1を見てください。Subnet Maskという項目があり,255.255.255.0という値になっていますね。255.255.255.0を2進数で表すと,
11111111.11111111.11111111.00000000
となります。

 1が並んだ上位桁に対応する部分がネットワーク・アドレスで,0が並んだ下位桁に対応する部分がホスト・アドレスです。したがって,私のパソコンの192.168.1.198というIPアドレスは,上位の「192.168.1」までがネットワーク・アドレスで,下位の「198」の部分がホスト・アドレスということになります(図2)。

図2●IPアドレス=ネットワーク・アドレス+ホスト・アドレス
図2●IPアドレス=ネットワーク・アドレス+ホスト・アドレス

 皆さんのパソコンでは,サブネット・マスクの値はどうなっていますか? 私のパソコンと同じ255.255.255.0なら,ホスト・アドレスに使える番号は0~255の範囲になります。アドレスは256個あります。ただし,この256個あるホスト・アドレスのうち,0はネットワークそのものを示すアドレス,255はブロードキャスト用のアドレス(グループ内のすべてのホストに一斉同報するアドレス)として予約されています。したがって1~254までの,残りの254個のアドレスがホストに設定できることになります。

 すると,255.255.255.0というサブネット・マスクから,最大で254台のホストを接続できるグループであることがわかります。皆さんの環境では,いかがでしょうか。

IPアドレスとMACアドレスの役割分担

 それでは,1台のパソコンを識別するのに,IPアドレスとMACアドレスの二つの番号があるのか? という疑問に対する答えをお教えしましょう。

 MACアドレスは,ネットワーク・カードごとに,すなわち個々のパソコンごとにネットワーク・カードのメーカーが設定した,世界に一つしかない番号のことでした。したがって,MACアドレスだけを利用して,世界中のパソコンを識別して,データを送ることもできなくはありません。

 しかし,「メーカー番号+製造番号」という値では,インターネットに接続された世界中のパソコンの中から一つを特定するのは大変です。同じグループ内でも,様々なメーカーのネットワーク・カードが使われています。同じメーカーのネットワーク・カードが,世界中で使われています。したがって,メーカー番号を頼りに目的のパソコンを探したら,ものすごく時間がかかってしまいます。

 そこで,IPアドレスを使うのです。IPアドレスは,「ネットワーク・アドレス+ホスト・アドレス」つまり「グループ番号+パソコン番号」という統一性のある値です。この決まりは世界共通です。

 インターネットに接続された世界中のパソコンの中から一つを特定するときに,まずネットワーク・アドレスでグループを見つけます。これなら,さほど困難ではありません。グループが見つかったら,グループ内のホスト・アドレスで目的のコンピュータを見つけます。同じグループ内で様々なメーカーのネットワーク・カードが使われていても,グループ内のパソコンには同じネットワーク・アドレスを設定するのです。なかなか上手い仕組みを考えたものです。

 「そうなると,IPアドレスがあれば,MACアドレスはいらないのでは?」と思われるかもしれませんね。いえいえ,MACアドレスも必要なのです。それは,IPアドレスを頼りに目的のグループ内に届けられたデータは,最終的にMACアドレスを頼りに目的のパソコンに渡されるようになっているからです。

 こう書くと,勘の鋭い方は「IPアドレスからMACアドレスを求める仕組みが必要なのでは?」と思われるかもしれません。その通りです。TCP/IPを利用できるコンピュータ用OSには,IPアドレスからMACアドレスを求める仕組みを実装しています。この仕組みの詳細は省略しますが,ブロードキャストを利用して,ネットワーク的に近い(正確には,ブロードキャスト・ドメイン内にある)コンピュータのMACアドレスとIPアドレスの組み合わせを知っているのです。上手いことを考えたものです。

 なぜ,このような面倒なことをするのでしょう。それは,世の中はTCP/IPがすべてではないからです。イーサーネットのネットワーク・カードを使っているため,グループ内ではMACアドレスで個々のパソコンが識別されます。グループ外にデータを送るときに,現在はたまたまTCP/IPというプロトコルが主流になっています。ご希望ならTCP/IP以外のプロトコルを使うこともできるように,通信の仕組みを階層化しているのです。これにより,階層ごとにプロトコルを選択できるわけです。これまた,上手い仕組みを考えたものです。

どうやってIPアドレスとサブネット・マスクを設定するのか

 MACアドレスは,あらかじめネットワーク・カードに設定されている番号なので,常に同じ値のままです。それに対して,IPアドレスとサブネット・マスクは,パソコンを接続するネットワーク環境に合わせて,後から適切に設定しなければなりません。どうやって設定すればよいのでしょう?

 それでは,もう一つ実験です。Windowsの[スタート]メニューにある「マイ ネットワーク」を右クリックし,表示されるメニューから「プロパティ」を選択してください。「ネットワーク接続」というタイトルのウィンドウが表示されたら,「ローカルエリア接続」というアイコンを右クリックし,表示されるメニューから「プロパティ」を選択してください。「ローカルエリア接続のプロパティ」というタイトルのウィンドウが表示されたら,リストをスクロールして「インターネットプロトコル(TCP/IP)」を選択し,[プロパティ]ボタンをクリックしてください。

 図3に示した「インターネットプロトコル(TCP/IP)のプロパティ」というタイトルのウィンドウが表示されるはずです。このウィンドウで,IPアドレスやサブネット・マスクなどの設定を手作業で行えます。私のパソコンでは,IP アドレスやサブネット・マスクなどが空欄になっていて,「IPアドレスを自動的に取得する」が選択されています。皆さんのパソコンでは,いかがですか。きっと多くの人が,私と同じになっているでしょう。

図3●IPアドレスとサブネットマスクは自動的に設定される
図3●IPアドレスとサブネットマスクは自動的に設定される

 「IPアドレスを自動的に取得する」が選択されている場合は,パソコンを接続したネットワーク上にある「DHCPサーバー」がIPアドレスやサブネット・マスクなどを自動的に設定してくれます。DHCPは,Dynamic Host Configuration Protocolの略です。直訳すると「動的にホストを設定するプロトコル」という意味になります。つまり,パソコンの起動時にDHCPサーバーが,IPアドレスやサブネット・マスクなどを自動的に知らせて来るのです。DHCPサーバーの実体は,専用のサーバー・マシン,もしくはDHCPサーバー機能を持つルーターなどです。

 これで,出張先のホテルの部屋にあるネットワーク・ケーブルに接続しただけで,すぐにインターネットが利用可能になる仕組みがわかったでしょう。ホテルのLAN内にDHCPサーバーがあるのです。新たにパソコンを接続されると,DHCPサーバーがIPアドレスとサブネット・マスクを自動的に設定してくれるのです。

 ここでは,いくつかの操作を通して,IPアドレスとMACアドレスを解説しました。実際に手を動かすことで,単なる用語解説や技術解説を読むよりも,より深く理解できたのではないでしょうか? では,また次回もやってみよう!

矢沢 久雄(やざわ ひさお)
グレープシティ
アドバイザリースタッフ http://www.grapecity.com/