このページの本文へ

試してわかるルーティング第4回

パケットキャプチャで通信を徹底解析!

IPアドレスからMACアドレスを導くARPの中身を見てみよう

2011年02月22日 09時00分更新

文● 伊藤玄蕃

  • この記事をはてなブックマークに追加
  • 本文印刷

前回は、「IPアドレスで直接通信する仕組み」を紹介した。この中にでてきたARPについて、具体的にどのようなやりとりを行なうのか、パケットの中身から学んでいこう。

ARPパケットをキャプチャする

 ARPの動作をパケットキャプチャソフトの「Wireshark(画面1)」を使って解析しよう。Wiresharkはキャプチャしたパケットのリストやその中身を階層ごとに表示するツールだ。

画面1 パケットキャプチャソフトの「Wireshrak」

 ここでは、パケットの中身を別途抜き出して記載した(画面2)。上側がREQUST(照会)パケット、下側がREPLY(応答)パケットの内容である。

画面2 Wiresharkのツリービュー画面。パケットの中身を表示する

 まず、REQUESTの中身を解説する。①~④がEthernetフレームの情報である。Ethernetのフレームは2種類あり、このフレームは「Ethernet II」である。⑤~⑪がARPパケットの情報で、⑦を見るとこのパケットの処理内容がREQUESTで、⑪を見ると検索対象のIPアドレスが172.20.152.1であることがわかる。

 なお、Wiresharkはネットワークインターフェイスの製造元もわかる範囲で表示する。③や⑧の「Matsushi_2e:1f:58(00:0b:97:2e:1f:58)」は、

  1. MACアドレスは00:0b:97:2e:1f:58
  2. 上位3オクテットから判明した製造元は松下電器産業

という内容を表わしている。

 REPLYの内容も同様である。②がこのパケットの宛先(REQUESTを送信した端末)のMACアドレスである。③がREPLYを送信した(検索対象の)端末のMACアドレスで、こちらはインテルが製造元だとわかる。REPLY側の返信先(照会元)を示す②⑩⑪が、それぞれREQUEST側の③⑧⑨と対になっていることがわかるだろう。

IPアドレスとMACアドレスの対応

 電話やメールを考えればわかるように、通信は特定の相手とひんぱんに行なわれる。そういう相手まで、いちいちARPを使ってMACアドレスを照会するのは非効率的だ。ARPはブロードキャストを使用しEthernet内のすべての端末に処理を要求するため、関係のない端末にとっては邪魔にしかならない。つまり、ARPの使用は最小限に抑えたほうがネットワークの利用効率は上がる。

 そこで、一度ARPによって得られたIPアドレスとMACアドレスの組み合わせ(エントリ)は、一定期間、端末のメモリ上に保持される。これを「ARPテーブル」または「ARPキャッシュ」と呼ぶ。端末はIPで通信を始める前に、必ず自分の保持するARPテーブルに相手のIPアドレスが存在するかどうかを確認する。ARPテーブルにIPアドレスが存在すれば、対応するMACアドレスをEthernetフレームの宛先アドレスとして使用する。もしARPテーブルになければ、ARPによって相手のMACアドレスを検索する。

 もしIPアドレスが重複するといった事故が生じたり、老朽化した機器やNICを交換すると、ARPテーブルの内容が実際と合わなくなる。そのためARPテーブルの各エントリは、最後に参照されてから一定時間が経過すると消去される。また多くのOSでは、ARPテーブルにエントリを手作業で追加や削除したり、テーブルの内容を表示するためのコマンドを実装している。

 画面3は、PCに保持されたARPテーブルの内容を表示した画面である。各行がエントリを表わし、エントリの右端の“dynamic”は、このエントリがARPの処理により動的に追加されたことを意味している。コマンドにより手動で追加されたエントリはここが“static”と表示され、時間の経過により自動的に消去されることはない。

画面3 IPアドレスとMACアドレスの対応

サブネットマスクが重要

 第2回で触れたサブネットマスクも、IPの通信において重要な設定項目である。実はIPで通信しようとする端末は、ARPテーブルを参照するよりもさらに前に、相手が自分と同じネットワーク(サブネット)に属しているかどうかを調べている。すなわち、ネットワークアドレス部が一致するかどうかを確認する。このネットワークアドレスは、IPアドレスとサブネットマスクの論理積として算出される。その結果自分と相手のネットワークアドレスが一致すれば、2台とも同じネットワークに属していることになり、Ethernetの直接通信が可能である。

 ●

 ここまでは同一のサブネット内での通信、つまりルーティングを必要としない通信方式を解説した。次回からはいよいよ、サブネットを越えた機器の通信の仕組みを解説していこう。

カテゴリートップへ

この連載の記事
ピックアップ