前回は、「IPアドレスで直接通信する仕組み」を紹介した。この中にでてきたARPについて、具体的にどのようなやりとりを行なうのか、パケットの中身から学んでいこう。
ARPパケットをキャプチャする
ARPの動作をパケットキャプチャソフトの「Wireshark(画面1)」を使って解析しよう。Wiresharkはキャプチャしたパケットのリストやその中身を階層ごとに表示するツールだ。
ここでは、パケットの中身を別途抜き出して記載した(画面2)。上側がREQUST(照会)パケット、下側がREPLY(応答)パケットの内容である。
まず、REQUESTの中身を解説する。①~④がEthernetフレームの情報である。Ethernetのフレームは2種類あり、このフレームは「Ethernet II」である。⑤~⑪がARPパケットの情報で、⑦を見るとこのパケットの処理内容がREQUESTで、⑪を見ると検索対象のIPアドレスが172.20.152.1であることがわかる。
なお、Wiresharkはネットワークインターフェイスの製造元もわかる範囲で表示する。③や⑧の「Matsushi_2e:1f:58(00:0b:97:2e:1f:58)」は、
- MACアドレスは00:0b:97:2e:1f:58
- 上位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”と表示され、時間の経過により自動的に消去されることはない。
サブネットマスクが重要
第2回で触れたサブネットマスクも、IPの通信において重要な設定項目である。実はIPで通信しようとする端末は、ARPテーブルを参照するよりもさらに前に、相手が自分と同じネットワーク(サブネット)に属しているかどうかを調べている。すなわち、ネットワークアドレス部が一致するかどうかを確認する。このネットワークアドレスは、IPアドレスとサブネットマスクの論理積として算出される。その結果自分と相手のネットワークアドレスが一致すれば、2台とも同じネットワークに属していることになり、Ethernetの直接通信が可能である。
●
ここまでは同一のサブネット内での通信、つまりルーティングを必要としない通信方式を解説した。次回からはいよいよ、サブネットを越えた機器の通信の仕組みを解説していこう。
この連載の記事
-
第13回
ネットワーク
OSPFを実際に設定してみよう! -
第12回
ネットワーク
OSPFの通信手順と代表ルータを理解しよう -
第11回
ネットワーク
大規模ネットワークでも使えるOSPFとは? -
第10回
ネットワーク
ルーティング情報を自動更新するルーティングプロトコルとは? -
第9回
ネットワーク
経路が複数あるときのルータ設定とその動作 -
第8回
ネットワーク
ルーティングの基礎「静的ルーティング」を試してみよう -
第7回
ネットワーク
ルータとルータを結ぶネットワークの仕組みを知ろう -
第6回
ネットワーク
ルーティングテーブルからパケットの経路を決める手順とは? -
第5回
ネットワーク
ルーティングの基本動作を見てみよう -
第3回
ネットワーク
TCP/IPの基本、IPアドレスで直接通信する仕組みを知ろう - この連載の一覧へ