この記事では、ARPテーブルを表示できるネットワークコマンド「arp」の使い方を説明します。
「arp」は「アープ」と読みます。
「arp」を使うと、「arp」を実行するコンピュータのARPテーブルを一覧表示することができます。
「ARPテーブル」とは、IPアドレスとMACアドレスを関連付けた情報のことです。
ノンネットワークエンジニアには難しいかもしれませんが、覚えておくと役に立つことがあるネットワークコマンドです。
この記事では、Windowsのコマンドプロンプトでネットワークコマンド「arp」を使います。
コマンドプロンプトの基本操作についてはこちらの記事にまとめていますので、必要な方はご参照下さい。
目次
「arp」は実行したコンピュータのARPテーブルを表示・削除できる
「arp」を使うと、実行したコンピュータのOSが管理しているARPテーブルを表示したり、削除したりすることができます。
MACアドレスは、イーサネットレベルで宛先や送信元を指定するために使われます。
ARPテーブルは、イーサネットにおける宛先のMACアドレスと、IPにおける宛先のIPアドレスを関連付けるために使います。
このARPテーブルが間違っていると、コンピュータが送り出すパケットが相手に届かないトラブルが起こります。
「arp」コマンドの使い方
「arp」の使い方について説明していきます。
ノンネットワークエンジニアの方は、次の項目だけ読んでおけば十分です。
- よく使う書式
- 実行結果の見方
もう少し詳しく知りたい方は、その先を読み進めていって下さい。
よく使う書式
ノンネットワークエンジニアが「arp」を使うなら、次の書式だけ覚えておきましょう。
arp -a
「arp」はオプションなしで実行するとヘルプが表示されます。
「arp -a」の実行結果には、ネットワークインタフェースごとのARPテーブルが全て表示されます。
打つ前に確認したいときは、やりたいことを選ぶだけでコマンドを組み立てられる道具もあります。「同じLAN内の機器を見たい」を選ぶと arp -a が出ます。ネットワークコマンドを作る
実行結果の見方
「arp -a」を実行すると、コマンドプロンプトに実行結果が表示されます。

ARPテーブルは、IPアドレスとMACアドレスの対応を示します。
実行結果の表記は「インターネットアドレス」がIPアドレス、「物理アドレス」がMACアドレスのことです。
一番右の「種類」は「動的」または「静的」が表示されます。
「動的」だと、そのIPアドレスとMACアドレスの組み合わせがキャッシュ(一時的な値)であることを示しています。
キャッシュを使わない場合、IPアドレスとMACアドレスの関連づけを通信の度に行うことになり、ネットワークの通信負荷が増加します。
そのため、1度調べたIPアドレスとMACアドレスの関連づけは、一定期間キャッシュされています。
「静的」は、IPアドレスとMACアドレスの関連づけを固定値として保持していることを示しています。
実行結果が何ブロックにも分かれていても、異常ではありません。
「インターフェイス:」という行が何度も出てくることがありますが、これはネットワークの差込口ごとに別の表が作られているためです。Microsoft も「コンピューターにインストールされているイーサネットまたはトークン リング ネットワーク アダプターごとに個別のテーブルがあります」と説明しています。
有線LANと無線LANの両方を持つパソコンや、仮想化ソフトを入れているパソコンでは、その数だけ表が並びます。自分がいま使っている接続の表だけを見れば十分です。
見分け方は次のとおりです。「インターフェイス:」の行には、その差込口のIPアドレスがそのまま書いてあります。先に「ipconfig」を実行して自分のIPv4アドレスを控えておき、それと同じ番号が書いてある表を見て下さい。
また、ARPテーブルは「同じネットワークにいる機器の一覧」ではありません。実際に通信した相手が載るもので、一度も通信していない機器は、電源が入っていても載りません。
さらに、並んでいる行の多くは通信相手ではありません。「224.」「239.」「255.」で始まる行は、Windowsがあらかじめ持っている決まりの番号です(当サイトで確認したパソコンでは、11行のうち6行がこれでした)。行数を「つながっている機器の台数」と受け取らないで下さい。

ヘルプで全てのオプションを表示する
「arp」にはたくさんのオプションが用意されています。
しかし、ノンネットワークエンジニアの方には、これらのオプションはほとんど必要ありません。
ここでは、コマンドプロンプトで「arp」のオプションを一覧表示する方法だけ説明します。
「arp」のオプションを一覧表示するには、コマンドプロンプトで
arp
と入力します。
実行すると、次の様に全オプションと説明が表示されます。
C:\>arp
アドレス解決プロトコル (ARP) で使用される、IP アドレスから物理アドレスへの変換テーブルを表示および変更します。ARP -s inet_addr eth_addr [if_addr]
ARP -s inet_addr eth_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]-a 現在のプロトコル データを参照し、現在の ARP エントリを表示します。inet_addr が指定されている場合は、指定されたコンピューターのみの IP アドレスと物理アドレスが表示されます。2 つ以上のネットワーク インターフェイスが ARP を使用する場合は、各 ARP テーブルのエントリが表示されます。
-g -a と同じです。
-v 現在の ARP エントリを詳細モードで表示します。すべての無効なエントリとループバック インターフェイスのエントリが表示されます。
inet_addr インターネット アドレスを指定します。
-N if_addr if_addr で指定されたネットワーク インターフェイスの ARP エントリを表示します。
-d inet_addr で指定されたホストを削除します。inet_addr にワイルドカードを使用すると、すべてのホストを削除できます。
-s ホストを追加し、インターネット アドレス inet_addr を物理アドレスeth_addr に関連付けます。物理アドレスは、ハイフンで区切られた 6個の 16 進数バイトで指定します。このエントリは恒久的です。
eth_addr 物理アドレスを指定します。
if_addr 指定された場合は、アドレス変換テーブルを変更するインターフェイスのインターネット アドレスを指定します。指定がない場合は、最初の適用可能なインターフェイスが使用されます。
例 :
> arp -s 157.55.85.212 00-aa-00-62-c6-09 …. 静的エントリを追加します。
> arp -a …. テーブルを表示します。
もしオプション指定が必要になることがあればヘルプで確認して下さい。
時々使うオプション
ノンネットワークエンジニアの方でも、時々使うかもしれない「arp」のオプションを紹介します。
軽く知っておく程度で良いと思います。
-d
「-d」を使うと、ARPテーブルから指定したIPアドレスの情報を削除することができます。
「-d」の後ろで削除対象のIPアドレスを指定します。
arp -d [IPアドレス]
例えば、ARPテーブルから「192.168.1.1」の情報を削除する場合は次の様に入力し実行します。
arp -d 192.168.1.1
ただし「-d」は、管理者として実行したコマンドプロンプトでないと失敗します。
普通に開いたコマンドプロンプトで「arp -d」を実行すると、削除は行われず、次のようなメッセージが表示されます(当サイトの環境で確認した実際の表示です)。
The ARP entry deletion failed: The requested operation requires elevation.
「requires elevation」は「管理者の権限が要る」という意味です。この場合は、コマンドプロンプトを管理者として実行してから、もう一度同じコマンドを入力して下さい。
なお、表示を確認するだけの「arp -a」は管理者でなくても実行できます。権限が要るのは、ARPテーブルを書き換える操作(「-d」で消す・「-s」で足す)の方です。当サイトでは「-s」でも同じ「requires elevation」が出ることを確認しています。
「削除」という言葉に身構えるかもしれませんが、ARPテーブルは、次にその相手と通信したときに自動で作り直されます。記事の前半で説明したとおり、これは一時的に覚えているだけの控えだからです。
設定を消してしまうわけではないので、元に戻せなくなることはありません。
なぜARPテーブルが必要なのか?
そもそも、なぜARPテーブルの様な仕組みが必要なのでしょうか?
IPアドレスもMACアドレスも通信相手を識別する情報なのに、なぜどちらも必要なのでしょうか?
ノンネットワークエンジニアの方は疑問がたくさんあると思います。
ここでは、「なぜARPテーブルの様な仕組みが必要なのか?」を簡単に説明します。
通信を行う時、データはパケットと呼ばれる複数の塊に分けて送られます。
そのパケットには、送信データ以外にヘッダと呼ばれる領域があり、宛先情報などが含まれています。
このヘッダ領域に、IPアドレスとMACアドレスの情報も含まれています。
ヘッダ領域のIPアドレスとMACアドレスには下記の情報を入れることになっています。
MACアドレス
パケット送信先の通信機器のMACアドレス
IPアドレス
データ送信先の通信機器のIPアドレス
要するに、MACアドレスはパケットを次に送り届ける通信機器を指定するために使われます。
IPアドレスはデータを最終的に送り届ける通信機器を指定するために使われます。
訳がわからなくなってきましたか?
例えばインターネット上のサーバーにデータを送る時、サーバーと自分の端末の間にはルーターなどの通信機器がいくつかあります。
MACアドレスは、次にパケットを渡すルーターなどの通信機器を示します。
IPアドレス(ドメイン名)は、最終的にパケットがたどり着く通信端末を示します。
ノンネットワークエンジニアの方が、ここまで理解するには難しいと思います。
なんとなく用途が異なり必要なんだなと感じていただければ十分です。
この2つの違いは、次の記事で改めて整理しています。
さらに詳しく知りたい方は、通信プロトコルレイヤや、TCP/IPについて調べてみて下さい。
機器を入れ替えて通信できなくなった時はARPキャッシュを削除してみる
これまで使っていた機器(サーバーやルーター)が壊れて新しい機器に置き換えた場合、以前と同じIPアドレスを割り当てると、通信できないトラブルが起きることがあります。
これは、IPアドレスが同じでもMACアドレスが変わっており、ARPテーブルと矛盾が起きていることが原因です。
解決するには、ARPテーブルのIPアドレスとMACアドレスの関連づけを最新に更新します。
ARPテーブルのキャッシュは、一定時間経過すると更新されます。
しかし、一定時間経過するまではARPテーブルは矛盾がある状態となります。
もし機器入れ替え直後に通信できなくなった時は、手動でARPテーブルから対象の情報を削除して対処します。
方法は、「時々使うオプション」で説明した「-d」オプションを使用します。
ネットワーク構築時やトラブル対応している時などは、機器を交換したりすることもあるので、ARPテーブルの情報が矛盾して通信できないということがたびたび起きます。
可能であれば、通信機器の電源を全て切って再度電源を入れ直すというのもありです。
この辺りはノンネットワークエンジニアの方には難しいですが、なんとなく知っているだけで、いざというときに役立つかもしれません。
頭の片隅に入れておきましょう。
「arp」のまとめ
この記事では、ARPテーブルを表示できるネットワークコマンド「arp」の使い方を説明しました。
「arp」を使うと、「arp」を実行するコンピュータのARPテーブルを一覧表示することができます。
ノンネットワークエンジニアは次の書式だけ覚えておきましょう。
arp -a
「この症状のときは、どのコマンドを使えばいいのか」を一覧で確かめたい方は、次の記事にまとめてあります。





