Part2では,TCP/IPソフトがIPパケットを作り,それを最初に届ける相手を見つけるまでを説明した。Part3では,IPアドレスからMAC アドレスを手に入れる手順に話を進めよう。

 TCP/IPソフトがIPパケットを作り,それを最初に届ける相手を見つけるまでをPart2で説明した。ここまではIPネットの世界だ。次はいよいよLANの世界に足を踏み入れる。ここの主役は,MACフレームとMACアドレスだ。

 TCP/IPソフトがルーティング・テーブルから見つけたのはやはりIPアドレスだった。IPパケットをその経路に届けるには,IPパケットをMACフレームというトラックに乗せ,トラックの運転手にあて先MACアドレスを知らせなくてはならない。

まずARPテーブルを検索する

 では,あて先MACアドレスをどうやって見つけるのだろうか。

 パソコンは2段階処理であて先MACアドレスを見つける。まず最初のステップは,自分が持つIPアドレスとMACアドレスの対応表を使うこと。この対応表は「ARP(アープ)テーブル」と呼ばれ,IPアドレスとMACアドレスの対応関係がまとめられている(図1)。

図1●MACフレームを送り出す手順
図1●MACフレームを送り出す手順
IPパケットは,最終的にはMACフレームに納めて送り出すが,それまでにはいくつかの手順を踏まなければならない。最終目的の機器が同じネットワーク上になければ,送り出すべきルーターのIPアドレスを探す。それに対応するMACアドレスが自分が持つARPテーブルになければ,ARPによってそれを手に入れる必要がある。

 ARPテーブルもルーティング・テーブル同様,パソコンにコマンドを打ち込めば表示することができる(図2)。

図2●実際のARPテーブルはこうなっている
図2●実際のARPテーブルはこうなっている
Windowsでは,実際にARPテーブルの内容を確認できる。

LAN全体にアドレスを問い合わせる

 目的のIPアドレスがこのARPテーブルの中にあれば,あて先MACアドレスは簡単に手に入る(図3)。

図3●まずARPテーブルを見てMACアドレスを確認<br>(a)のように,対応するMACアドレスがARPテーブルにある場合は簡単だ。そのMACアドレスに対してそのまま送ればよい。(b)のように,対応するMACアドレスがARPテーブルにない場合は,ARPによって目的のMACアドレスを獲得する。
図3●まずARPテーブルを見てMACアドレスを確認
(a)のように,対応するMACアドレスがARPテーブルにある場合は簡単だ。そのMACアドレスに対してそのまま送ればよい。(b)のように,対応するMACアドレスがARPテーブルにない場合は,ARPによって目的のMACアドレスを獲得する。
[画像のクリックで拡大表示]

 ARPテーブルにないときは,次のステップに移る。直接,あて先マシンにMACアドレスを教えてもらう処理「ARP」を開始する。

 ARPでは,まず最初に送信元マシンが,「このIPアドレスを割り当てられている人は,私にあなたのMACアドレスを知らせてください」という意味のARPメッセージをMACフレームに入れてLAN上に送り出す。このメッセージは「ARP要求」と呼ばれる。

 ここでちょっと疑問が浮かぶ。このARP要求を入れたMACフレームの「あて先MACアドレス」は何にすればいいのだろう。ARP要求は,LANに接続しているすべてのIP機器に送りたい。実は,このような要求を満たすMACアドレスとして「ブロードキャスト・アドレス」がある。48ビットのMACアドレスがすべて1という特別なアドレスである。あて先MACアドレスがブロードキャスト・アドレスのMACフレームは「ブロードキャスト・フレーム」と呼ばれ,すべてのLAN機器が自分あてのフレームと判断し,中身をチェックするように決められている。

 話を戻そう。ARP要求を受け取ったLAN機器は,問い合わせのあったIPアドレスが自分のものかどうかを調べる。もし自分のIPアドレスなら,送信元に対して自分のMACアドレスを添付したARP応答を返信する。こうしてARPを送り出したパソコンは,あて先マシンのMACアドレスを入手することができるのだ。このように目的のアドレスを入手することをアドレス解決と呼ぶ。

Q.1 アドレス解決とはどういう意味?
TCP/IPソフトが求めるアドレスを取得することを,一般にアドレス解決(address resolution)と呼びます。IPアドレスからMACアドレスを求めるARPが代表的ですが,その逆にMACアドレスからIPアドレスを探す「ReverseARP」や,WAN環境で使われるATM用ARPやフレーム・リレー用ARPもあります。また,DNSサーバーを使ってドメイン名に対応するIPアドレスを見つけることもアドレス解決と呼ばれています。