Lesson3は,ARPのアドレス調査作業をもう少し具体的に見てみよう。ARP応答とARP要求について,実際にどういった情報をやりとりしているのかを知ることで,ARPのしくみが見えてくる。

ARPがイーサにあて先を指示

 ARP要求とARP応答は,実際は「ARPパケット」と呼ばれる形でやりとりされる。ARPパケットに入れる情報は,このパケットがARP要求なのかARP応答なのかを表す情報や,IPに調査を頼まれた対象マシンのIPアドレスなどである。

 ARPの作業は,ARPパケットに情報を入れて,イーサネットに渡すところまで。実際にARPパケットをLAN上に送り出すのは,運び役のイーサネットの役目である。例えばARP要求では,ARPが必要な情報をパケットに詰めて,「このパケットを全マシンあてに送って下さい」とイーサネットにお願いする。するとイーサネットが,言われた通りにパケットを運んでくれる(図3-1)。

図3-1● ARPの 情報はMACフレームの中に入れて送られる
図3-1● ARPの 情報はMACフレームの中に入れて送られる
ARPの情報は,MACフレームのデータ部分に入れてやりとりされる。

全マシンを示すアドレスをセット

 ARP応答とARP要求において,どんな情報が運ばれいるのか,その中身をのぞいてみよう(図3-2)。

図3-2●ARP パケットにアドレス情報を入れてやりとり
図3-2●ARP パケットにアドレス情報を入れてやりとり
ARPパケットの中に,ARP要求かARP応答かを示す情報や,各種アドレス情報などが入っている。
[画像のクリックで拡大表示]

 ARPパケットには各種アドレス情報が入っており,ARPパケット全体がMACフレームのデータ部分に入った形で運ばれる。これは,ARP要求でもARP応答でも同じである。

 ARP要求のときに重要なのは,調査対象のIPアドレスである。この情報は,ARP要求パケットの「目標IPアドレス」の部分に入れておく。調査対象のMACアドレスを記す「目標MACアドレス」の部分もあるが,これはわからないのですべて「0」を入れておく(図3-2上)。

 また,ARP要求パケットはLAN上の全マシンに届けなければいけない。そこであて先MACアドレスには,FF-FF-FF-FF-FF-FFをセットする。イーサネットの世界でFFFF-FF-FF-FF-FFというアドレスは,「全マシンが受け取る」と決まっているからだ。この全マシンあての通信は,「ブロードキャスト」と呼ばれる。

 こうしてLANに送り出されたブロードキャスト・フレームは,LANスイッチに入る。LANスイッチはMACフレームのあて先MACアドレスを見て,このMACフレームがブロードキャストであることがわかる。すると,自分のすべてのポートにこのフレームをコピーして送り出す。こうして最終的に,LAN上のすべてのマシンにARP要求が届く。

ARP応答はユニキャスト

 ARP要求パケットを受け取ったマシンは,ARPパケットの「目標IPアドレス」に書かれているIPアドレスを取り出し,このARPパケットが自分あてかどうかをチェックする。もし自分あてなら,ARP応答パケットの「送信元MACアドレス」の部分に自分のMACアドレスを記入して送り返す(図3-2下)。ほかのマシンは,「目標IPアドレス」に書かれていたアドレスが自分のIPアドレスとは異なるので,自分あてのARP要求ではないと判断する。そのため,何も応答は返さない。

 ARP応答パケットを含んだMACフレームのあて先MACアドレス部分には,ARP要求パケットを送ってきたマシンのMACアドレス(図3-2の場合はX)が入る。LANスイッチがこのMACフレームを受け取ると,あて先MACアドレスを見て,今度はそのMACアドレスがつながるポートだけにMACフレームを転送する。こうして最終的に,ARP要求を出したマシンに応答が返る。こうした1対1の通信は,ブロードキャストに対して「ユニキャスト」と呼ばれている。