Lesson2は,ARPの動作を見る。パソコン内のARPが,IPに指示されたMACアドレスをどうやって調べるかを学ぼう。

ARPの動作はたった三つ

 Lesson1で見たように,ARPは,IPから「IPアドレス××のマシンのMACアドレスを調べて」と依頼されて動き出す。

 この依頼を受けたARPは,三つの動作によって,MACアドレスを調べる。(1)ARP要求,(2)ARP応答,(3)ARPキャッシュへの記録――である。

 技術用語が出てきたので,難しく感じるかもしれないが,難しく考えないでも大丈夫。この三つの動作を簡単に説明すると,(1)全員に呼びかけて(ARP要求),(2)応答を聞いて(ARP応答),(3)結果を記録する(ARPキャッシュへの記録)――というものだ(図2)。

図2● ARPの動作は三つ   図2● ARPの動作は三つ
「××というIPアドレスを持っている人はいますか?」とLAN全体に呼びかけると(ARP要求),応答が返ってくる(ARP応答)。調べた結果を「ARPキャッシュ」に記録する。
[画像のクリックで拡大表示]

 それぞれの動作を,もう少し具体的に見ていこう。

 ARPがIPから,「192.168.1.100というIPアドレスを持ったマシンのMACアドレスを調べて」とお願いされたとしよう。するとARPは,LANにいる全マシンに対して「1 9 2.1 6 8.1.1 0 0というアドレスを持つマシンがいたらMACアドレスを教えて!」と呼びかける。これがARP要求である。

 LAN上に該当するマシンがいれば,そのマシンから応答が返って来る。「私が192.168.1.100です。私のMACアドレスは○○です」といった具合だ。これがARP応答である。192.168.1.100以外のマシンもARP要求を受け取るが,自分に対して呼びかけたものではないので無視する。そのため,ARP応答は,呼びかけに該当するマシンだけが返信する。

 これで,知りたかったMACアドレスがわかる。そこでARPは,ここで調べたIPアドレスとMACアドレスの情報を「ARPキャッシュ」と呼ばれるメモリーに記録する。そこには,「192.168.1.100のIPアドレスを持つマシンのMACアドレスは○○」と記録しておくわけだ。こうしておけば,このあと同じあて先にデータを送る際に,わざわざARP要求を出さなくてもこの記録を見るだけでMACアドレスがわかる。以上がARPの動作である。

ARPキャッシュを見てみよう

 ARPキャッシュの内容は,パソコンのメモリーに記録されており,私たちが見ることもできる。コマンド・プロンプトを起動して,

arp -a

と入力すればよい。すると,IPアドレスとMACアドレスがセットになって表示される(図2下の画面)。「Internet Address」の項目に表示されているのがIPアドレスで,「Physical Address」の項目に表示されたのがMACアドレスだ。これが,ARPが記録したアドレスの対応表というわけだ。

いつまでも古い情報を残さない

 ただし,ARPキャッシュに記録した情報は,一定時間経つと消えるようになっている。これは,マシンに割り当てられたアドレスが,いつまでも同じとは限らないからである。例えば,パソコンのIPアドレスが変わると,MACアドレスとIPアドレスの対応は関係も変わる。

 このとき,ARPキャッシュに古い情報が残っていると,通信ができなくなる。このため,ARPキャッシュの情報に保持時間を設けて,古い情報をいつまでも残さないようにしておくのである。もし情報が消えていたら,ARPが再びARP要求を出して調べ直すことになる。