ARPの仕組みを図解で説明 〜IPアドレスからMACアドレスを調べる流れ〜

「ARP」知っていますか?なぜ必要なのか説明できますか?

IPアドレスが分かれば通信できる、と思っている人も多いと思います。

しかし、実際にLANの中でデータを届けるには、もう1つのアドレスが必要です。

ARPの仕組みについて、図を使って説明していきます。

ARPの全体像の図。宛先のIPアドレスは分かっているが、MACアドレスが分からないので調べる

ARPとは?

ARP(Address Resolution Protocol)は、IPアドレスからMACアドレスを調べる仕組みです。

パソコンが持っているアドレスには、2つの種類があります。

  • IPアドレス: ネットワーク上の住所のようなもの。変わることがある
  • MACアドレス: 機器のネットワーク部品に割り当てられた番号

LANの中でデータを運ぶEthernetは、宛先のMACアドレスを見て転送します。

そのため、宛先のIPアドレスが分かっていても、MACアドレスが分からなければデータを送ることができません。

そこでARPを使って、MACアドレスを調べます。

ARPの流れ

パソコンAが、同じネットワークのパソコンB(192.168.1.20)へ送る場合を見てみましょう。

ARPの流れの図。全員に問い合わせ、本人だけが応答し、そのMACアドレス宛てにデータを送る

① パソコンAが「192.168.1.20の機器はいますか?」と全員に問い合わせる

② 同じネットワークの全ての機器が、問い合わせを受け取る

③ 192.168.1.20のパソコンBだけが、自分のMACアドレスを答える

④ パソコンAが、パソコンBのMACアドレスを宛先にしてデータを送る

①の問い合わせを ARP要求といい、ネットワーク全体へのブロードキャストで送ります。

③の応答を ARP応答といい、パソコンAだけに送ります。

「全員に聞いて、本人だけが答える」と覚えましょう。

ARPテーブル

データを送るたびに問い合わせていると、無駄な通信が増えてしまいます。

そこで、調べた結果をしばらく記録しておきます。

この記録を ARPテーブルやARPキャッシュといいます。

ARPテーブルの例。IPアドレス、MACアドレス、種類を記録している

一度調べた相手には、ARPテーブルの内容を使ってすぐに送ることができます。

記録は一定の時間が過ぎると消えるので、機器を交換した場合でも、また調べ直すことができます。

Windowsでは、コマンドプロンプトで「arp -a」と入力すると、ARPテーブルの内容を確認できます。

別のネットワークへ送る時

宛先が別のネットワークにある場合は、宛先の機器のMACアドレスを調べることはできません。

ARP要求のブロードキャストは、ルーターを越えないからです。

そこで、デフォルトゲートウェイのMACアドレスを調べて、ルーターへデータを渡します。

別のネットワークへ送る図。宛先のIPアドレスはサーバのまま、宛先のMACアドレスは区間ごとに変わる

① パソコンが、宛先は別のネットワークだと判断する

② パソコンが、デフォルトゲートウェイのMACアドレスをARPで調べる

③ 宛先のIPアドレスはそのままで、宛先のMACアドレスをルーターにして送る

④ ルーターが、次の区間のMACアドレスに付け替えて転送する

IPアドレスは最終的な宛先を示し、MACアドレスは次の機器までの宛先を示している、と考えると分かりやすいと思います。

同じネットワークかどうかの判断には、サブネットマスクを使います。

詳しくはサブネットマスクの計算を図解で説明の記事で説明しています。

ARPの注意点

ARPには、応答が本物かどうかを確かめる仕組みがありません。

そのため、攻撃者が偽の応答を返して、通信を自分の機器に向けさせる攻撃があります。

これを ARPスプーフィングといいます。

対策の機能を持つスイッチもありますが、まずは社内のネットワークに不審な機器をつながせないことが大切です。

また、ARPはIPv4で使われる仕組みです。

IPv6では、NDPという別の仕組みで同じ役割を果たしています。

まとめ

今回はARPの仕組みについて説明しました。

ARPは、IPアドレスからMACアドレスを調べる仕組みです。

全員に問い合わせて本人だけが答え、結果はARPテーブルに記録されます。

別のネットワークへ送る時は、デフォルトゲートウェイのMACアドレスを調べます。

「IPアドレスは最終の宛先、MACアドレスは次の機器」という考え方は、ネットワークを理解する上でとても大切です。

ぜひ「arp -a」を試して、自分のパソコンのARPテーブルを見てみてください。