ARP

隣の装置と通信するためにMACアドレスが使われますが、隣の装置のMACアドレスはどのようにして知るのでしょうか?

本項では、ARP(Address Resolution Protocol)について説明します。

DNSのような仕組みはない

通信相手のIPアドレスはDNS(Domain Name System)が教えてくれますが、MACアドレスにはこのような仕組みはありません。

通信相手のMACアドレスを知るためには、ARPという通信を行います。ARPには通信したい装置のIPアドレス情報があり、自分宛てでないと判断した装置は何もしません。

自分宛てではないARP問い合わせには答えない。

自分宛てと判断した装置は、自分のMACアドレスを応答します。

自分宛ての問い合わせには、MACアドレスを応答する。

これにより、通信相手のMACアドレスがわかります。

ARPテーブル

ARPは、通信するたびに毎回問い合わせるのではありません。一回問い合わせると、IPアドレスとMACアドレスを対にしてしばらく覚えておきます。これは何個も覚えておけるので、ARPテーブルと言います。

【ARPテーブル】
IPアドレス MACアドレス
AのIPアドレス AのMACアドレス
BのIPアドレス BのMACアドレス
CのIPアドレス CのMACアドレス

ARPテーブルに載っているIPアドレスについてはARPが必要ないため、早く通信できます。ARPテーブルに保持しておく時間は装置によって異なりますが、時間を経過すると忘れ、再度ARPを行います。

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

【arp -a実行例】
C:¥>arp -a

インターフェイス: 192.168.1.2 --- 0x10
  インターネット アドレス   物理アドレス      種類
  192.168.1.1           11-ff-11-ff-11-ff     動的
  192.168.1.3           ff-11-ff-11-ff-11     動的

また、arp -dコマンドを実行するとARPテーブルを削除できます。その場合、コマンドプロンプトを開く際に、右クリックして「その他」→「管理者として実行」を選択しておく必要があります。

関連ページ

基本編「ARPの確認
ARPの確認の実技ができます。
追補版「ARPパケットフォーマット
ARPパケット構造を説明しています。
トラブル対応「ルーター交換で通信不可
ARPテーブルが原因のトラブル事例と対処方法を説明しています。

次のページ全体の通信の流れ