こんにちは、インフラエンジニアのryuです。
ネットワークでは、IPアドレスとMACアドレスという2つの情報が使われます。どちらも通信先を識別しますが、役割は異なります。
では、パソコンはIPアドレスしか分からない相手へ、どのようにデータを届けているのでしょうか。
そこで使われるのがARPです。
ARPは、同じネットワーク内でIPv4アドレスに対応するMACアドレスを調べる仕組みです。LAN内の通信や、ルーターへデータを渡す場面で使われます。
この記事では、ARP RequestとARP Reply、ARPテーブル、別ネットワーク通信、確認コマンドを初心者向けに解説します。
ARPとは¶
ARPとは何なのでしょうか?
ARPは、IPv4アドレスに対応するMACアドレスを調べるためのプロトコルです。
正式名称はAddress Resolution Protocolです。日本語では、アドレス解決プロトコルと呼ばれます。
なぜ、IPアドレスとMACアドレスの両方が必要なのでしょうか。
IPアドレスは、通信相手がどのネットワークにいるかを判断し、複数のネットワークを越えてデータを届けるために使われます。
一方、Ethernetを使うLAN内では、最終的にMACアドレスを使ってフレームを届けます。
IPアドレスは分かっていても、対応するMACアドレスが分からなければ、同じLAN内でフレームを送信できません。そこでARPを使い、IPアドレスからMACアドレスを調べます。
IPアドレスとMACアドレスの違い¶
ARPを理解するには、IPアドレスとMACアドレスの役割を分けて考えることが大切です。
元の記事ではMACアドレスを固有のIPアドレスと説明していましたが、これは正しくありません。MACアドレスとIPアドレスは、別の階層で利用される異なる情報です。
| 比較項目 | IPアドレス | MACアドレス |
|---|---|---|
| 主な役割 | ネットワーク上の通信先を識別する | 同一LAN内の通信先を識別する |
| OSI参照モデル | 第3層・ネットワーク層 | 第2層・データリンク層 |
| 例 | 192.168.1.10 |
00:1A:2B:3C:4D:5E |
| 変更 | 接続先や設定で変わることがある | 通常は機器に割り当てられるが変更も可能 |
| 主に使う機器 | ルーター、L3スイッチ | L2スイッチ、NIC |
MACアドレスはネットワークインターフェースを識別する情報です。一般には製造時に割り当てられますが、設定で変更できる場合もあります。
IPアドレスは、所属するネットワークと機器を識別します。接続先が変われば、通常はIPアドレスも変わります。
【関連記事】IPアドレスとは?仕組み・種類・確認方法を初心者向けに解説
ARPは同じネットワーク内で使われる¶
ARPは、基本的に同じブロードキャストドメイン内で利用されます。
つまり、ルーターを越えた先にいる機器のMACアドレスを、ARPで直接調べるわけではありません。
同じネットワークと別のネットワークでは、ARPの対象が変わります。
同じネットワークへ通信する場合¶
たとえば、次の2台のPCが同じネットワークにいるとします。
| 機器 | IPアドレス | MACアドレス |
|---|---|---|
| PC1 | 192.168.10.10/24 |
00:11:22:33:44:55 |
| PC2 | 192.168.10.20/24 |
AA:BB:CC:DD:EE:FF |
PC1がPC2へ通信するとき、PC1はサブネットマスクを使い、PC2が同じネットワークにいると判断します。
しかし、最初はPC2のMACアドレスが分かりません。
そこでARPを使い、192.168.10.20に対応するMACアドレスを調べます。MACアドレスが分かると、PC1はPC2宛てのEthernetフレームを作成できます。

別のネットワークへ通信する場合¶
PC1がインターネット上のサーバーなど、別のネットワークへ通信する場合を考えてみましょう。
このときPC1は、遠隔サーバーのMACアドレスを調べません。
PC1がARPで調べるのは、デフォルトゲートウェイであるルーターのMACアドレスです。まずルーターへフレームを渡し、その後はルーターが宛先IPアドレスを見て次のネットワークへ転送します。
| 通信先 | ARPで調べるMACアドレス |
|---|---|
| 同じネットワークのPC | 相手PCのMACアドレス |
| 別ネットワークのサーバー | デフォルトゲートウェイのMACアドレス |
外部サーバーのMACアドレスではなく、通常はゲートウェイのMACアドレスがARPテーブルへ登録されます。
ARP RequestとARP Replyの仕組み¶
ARPによるアドレス解決では、ARP RequestとARP Replyという2種類のメッセージが使われます。
ARP Requestはブロードキャスト¶
PC1が192.168.10.20のMACアドレスを知りたい場合、同じLAN全体へARP Requestを送ります。
ARP Requestの内容は、簡単に表すと次のような問い合わせです。
192.168.10.20を使っている機器は、
自分のMACアドレスを教えてください。
宛先MACアドレスがまだ分からないため、Ethernetの宛先にはブロードキャストアドレスが使われます。
FF:FF:FF:FF:FF:FF
同じブロードキャストドメインの機器が受信し、対象の機器だけが回答します。
ARP Replyは通常ユニキャスト¶
192.168.10.20を持つPC2は、ARP RequestへARP Replyを返します。
192.168.10.20は私です。
MACアドレスはAA:BB:CC:DD:EE:FFです。
ARP Replyは、通常は問い合わせ元のPC1へユニキャストで送られます。
PC1は対応関係をARPテーブルへ保存し、しばらく再利用します。
ARPテーブルとは¶
ARPテーブルは、IPv4アドレスとMACアドレスの対応関係を保存した表です。
ARPキャッシュや近隣キャッシュと呼ばれることもあります。
登録される主な情報は、次のとおりです。
| 項目 | 例 |
|---|---|
| IPアドレス | 192.168.10.20 |
| MACアドレス | AA:BB:CC:DD:EE:FF |
| 種類 | 動的、静的 |
| インターフェース | Ethernet、Wi-Fiなど |
| 状態 | 到達可能、未解決など |
動的に学習した情報は一定時間後に削除され、古い対応関係を使い続けないようになっています。
静的登録もできますが、通常は動的学習が中心です。
OSI参照モデルとARPの関係¶
ARPが必要なのは、IP通信とEthernet通信で扱うアドレスが異なるためです。
IPアドレスは第3層のネットワーク層、MACアドレスは第2層のデータリンク層で利用されます。

ルーターはIPアドレスを見て、どのネットワークへ転送するかを判断します。
一方、同じEthernet LAN内で実際にフレームを送るには、宛先MACアドレスが必要です。ARPは、この第3層のIPアドレスと第2層のMACアドレスを対応付けます。
初心者の段階では、IPv4通信に必要なMACアドレスをLAN内で調べる仕組みと理解すれば十分です。
【関連記事】プロトコルとは?ネットワーク通信のルールを初心者向けに解説
WindowsでARPテーブルを確認する¶
ここからは、自分のパソコンでARPテーブルを確認してみましょう。
Windowsでは、コマンドプロンプトやPowerShellを開きます。

次のコマンドを入力します。
arp -a
すると、インターフェースごとにARPテーブルが表示されます。

表示例は環境によって異なりますが、次のような情報を確認できます。
Internet Address Physical Address Type
192.168.1.1 aa-bb-cc-dd-ee-ff dynamic
192.168.1.20 11-22-33-44-55-66 dynamic
Internet AddressがIPv4アドレス、Physical AddressがMACアドレスです。
ルーターや最近通信した機器が表示されます。同じLAN内の全機器が必ず表示されるわけではありません。
PowerShellではGet-NetNeighbor -AddressFamily IPv4でも確認できます。
LinuxでARP情報を確認する¶
Linuxでは、従来のarpコマンドよりもip neighコマンドを使うのが一般的です。
ip neigh
表示例は次のとおりです。
192.168.1.1 dev eth0 lladdr aa:bb:cc:dd:ee:ff REACHABLE
192.168.1.20 dev eth0 lladdr 11:22:33:44:55:66 STALE
lladdrの後ろがMACアドレスです。
INCOMPLETEやFAILEDなら、MACアドレスを取得できていません。相手の電源、VLAN、配線、Wi-Fiなどを確認します。
macOSでARPテーブルを確認する¶
macOSでは、ターミナルから次のコマンドを実行します。
arp -a
対象へpingを実行してからarp -aを見ると、新しいエントリを確認しやすくなります。
ping -c 1 192.168.1.1
arp -a
ARPテーブルを削除・再学習する方法¶
古いARP情報が残っていると、通信先のMACアドレスが変わった後に一時的な通信障害が起こることがあります。
Windowsでは、管理者権限のコマンドプロンプトで次のように削除できます。
arp -d *
Linuxでは、次のコマンドで近隣キャッシュを削除できます。
sudo ip neigh flush all
削除後に通信すると、ARP RequestとARP Replyが再度行われます。
削除だけで済ませず、相手の電源、IP設定、VLAN、接続も確認しましょう。
Gratuitous ARPとは¶
Gratuitous ARPは、自分自身のIPアドレスに関するARP情報を、要求される前に通知する仕組みです。
IPアドレスの重複確認や、冗長化機器の切り替え後に周囲のARP情報を更新するために使われます。
ARPスプーフィングとは¶
偽のARP情報を送り込む攻撃をARPスプーフィングと呼びます。企業ネットワークではDynamic ARP Inspectionや通信の暗号化などで対策します。
IPv6ではARPを使わない¶
ARPはIPv4で利用される仕組みです。
IPv6ではARPの代わりに、ICMPv6を使ったNeighbor Discovery Protocol、略してNDPが利用されます。
IPv6では、近隣探索やルーター探索などをNDPが行います。
ARPが原因で通信できないときの確認方法¶
同じネットワーク内の機器へ通信できない場合は、ARP情報も確認します。
エンジニア歴10年の経験でも、基本から順番に確認することが大切です。
| 順番 | 確認内容 | 主な方法 |
|---|---|---|
| 1 | 自分のIPアドレスとサブネット | ipconfig、ip address |
| 2 | 相手と同じネットワークか | IPアドレスとCIDRを比較 |
| 3 | 相手が起動しているか | 電源、NIC、Wi-Fiを確認 |
| 4 | ARP情報が作成されるか | arp -a、ip neigh |
| 5 | ARP状態が失敗していないか | INCOMPLETE、FAILEDを確認 |
| 6 | VLANや配線が正しいか | スイッチ設定、接続を確認 |
| 7 | IPアドレスが重複していないか | DHCP、固定IP設定を確認 |
| 8 | ファイアウォールの影響 | ICMPや対象通信を確認 |
INCOMPLETEのままならARP Replyが返っていません。MACアドレスを取得済みなら、ファイアウォールやサービスも確認します。
WiresharkでARPを確認する¶
ARPの動きをより深く理解したい場合は、Wiresharkなどのパケットキャプチャツールを使います。
表示フィルターへ次のように入力すると、ARPだけを表示できます。
arp
ARP Requestのブロードキャストと、ARP Replyで返るMACアドレスを確認できます。
InfraAcademyのネットワーク入門講座でARPを実践する¶
ARPは、文章を読んで覚えるだけでは、IPアドレスとMACアドレスがどの場面で使われるのか分かりにくい分野です。
InfraAcademyのネットワーク入門講座では、IPアドレス、サブネット、ルーティング、スイッチ、VLAN、NAT、ACLまで順番に学べます。
独自シミュレーターでPC、スイッチ、ルーターを配置し、IP設定とpingを実践できます。
ARPを単体で暗記するのではなく、次の順番で学ぶのがおすすめです。
IPアドレス
→ サブネット
→ ARP
→ スイッチ
→ デフォルトゲートウェイ
→ ルーティング
最初の講座は無料です。ネットワークを基礎から学びたい方はロードマップを確認してください。
InfraAcademyのネットワーク学習ロードマップを見る
まとめ¶
ARPは、同じネットワーク内でIPv4アドレスに対応するMACアドレスを調べる仕組みです。
同じネットワークの相手へ通信する場合は、相手のMACアドレスをARPで調べます。別ネットワークへ通信する場合は、デフォルトゲートウェイのMACアドレスを調べます。
ARP Requestはブロードキャストで送られ、対象の機器が通常はユニキャストのARP Replyを返します。
取得した情報はARPテーブルへ一時的に保存されます。Windowsではarp -aやGet-NetNeighbor、Linuxではip neighで確認できます。
まずは自分のパソコンでデフォルトゲートウェイへpingを実行し、ARPテーブルにどのような情報が追加されるか確認してみましょう。
その後、ネットワークシミュレーターでPCやルーターを配置すると、ARPとルーティングの関係をさらに理解しやすくなります。