ITの教科書検索

第3章 データが届くしくみ|3-2|コース全体 19本中10本目

入門読了 約9分更新日 2026-09-27

ARPとは ― IPアドレスからMACアドレスを知る仕組み

ARPとは、IPアドレスから同じネットワーク内の相手のMACアドレスを調べるプロトコルです。ブロードキャストで尋ね、別ネットワーク宛てならゲートウェイのMACアドレスを尋ねます。

目次
  1. MACを調べるのがARP
  2. なぜMACへの変換が必要か
  3. ARPの流れ
  4. ARPテーブル(キャッシュ)
  5. ゲートウェイ宛のときは何を聞くか
  6. GARP(Gratuitous ARP)
  7. ARPスプーフィング
  8. 練習問題

同じネットワーク内でフレームを渡すにはMACアドレスが要る。それをIPから調べるのがARP

同じネットワーク内の相手にデータを渡すとき、実際に使う宛先はMACアドレスです。しかし、ふだん扱うのはIPアドレスなので、相手のMACアドレスは分かりません。IPアドレスから相手のMACアドレスを調べるのがARP(Address Resolution Protocol)です。日本語では、アドレス解決プロトコルと訳します。

ARPの問い合わせは、ブロードキャストでネットワーク内の全員に届きます。この問い合わせをARPリクエストと呼びます。応答を返すのは該当する1台だけで、問い合わせ元だけに送るユニキャストで返します。この応答がARPリプライです。

別ネットワーク宛の通信では、ARPで尋ねる相手は最終的な宛先ではありません。尋ねる相手はデフォルトゲートウェイです。

なぜMACアドレスへの変換が必要か

IPアドレスとMACアドレスの役割の違いは、MACアドレスとIPアドレスの記事で説明した通りです。最終的な宛先を決めるのは、ネットワーク層である第3層のIPアドレスです。一方、実際にフレームを渡すのはデータリンク層である第2層で、使われるのはMACアドレスです。

宛先を決める層と、フレームを渡す層が違うのです。そのため、IPアドレスに対応するMACアドレスを調べる仕組みが必要になります。それがARPです。

ARPが調べられるのは、自分と同じネットワークにいる相手のMACアドレスだけです。ここでの同じネットワークとは、ルータを越えずに届く範囲、つまり同じ第2層のセグメントのことです。

ブロードキャストが届く範囲の外には、ARPは使えません。この制約があるため、ゲートウェイ宛の通信では尋ねる相手が変わります。この範囲の決まり方は、衝突ドメインとブロードキャストドメインの違いで説明しています。

ARPは、第3層のIPアドレスと第2層のMACアドレスを橋渡しします。この役割から、第2層と第3層の間で働くとされます。どちらの層に分類するかは、資料によって分かれます。

なお、この節の内容はIPv4での話です。IPv6ではARPを使いません。代わりに、NDP(Neighbor Discovery Protocol)という別の仕組みでMACアドレスを調べます。

ARPの流れ:リクエストはブロードキャスト、リプライはユニキャスト

PCがゲートウェイのMACアドレスを調べる例を見ます。PCのIPアドレスは192.168.10.25です。ゲートウェイは同じネットワーク内にあり、IPアドレスは192.168.10.1です。

  1. 1

    ARPリクエストをブロードキャストする

    PCは、「192.168.10.1 のMACアドレスを教えてください」という問い合わせを送ります。宛先MACは FF:FF:FF:FF:FF:FF です。この問い合わせは、同じネットワーク内の全員に届きます。

  2. 2

    該当する機器だけが判断する

    問い合わせを受け取った機器は、自分のIPアドレスへの質問かどうかを確認します。違えば無視します。

  3. 3

    該当する機器だけがARPリプライを返す

    該当する機器は、「私です。MACアドレスは AC:DE:48:AA:BB:CC です」と返信します。返信は、問い合わせ元のPCだけにユニキャストで送ります。

PC192.168.10.25① ARPリクエスト(ブロードキャスト)宛先MAC: FF:FF:FF:FF:FF:FF② ARPリプライ(ユニキャスト)宛先MAC: PCのMACゲートウェイ192.168.10.1ホストB192.168.10.30対象外 → 無視ホストC192.168.10.40対象外 → 無視
ARPリクエストは、「192.168.10.1のMACは誰ですか」という問い合わせです。宛先MACを FF:FF:FF:FF:FF:FF にしたブロードキャストなので、ネットワーク内の全員に届きます。「私です」とARPリプライを返すのは、該当するIPアドレスを持つ機器だけです。ここではゲートウェイが、ユニキャストで返します。他の機器は無視します。

ARPでは、問い合わせは全員に届きますが、答えるのは該当者だけです。この非対称な動き方が、ARPの特徴です。

ARPテーブル(キャッシュ)

同じ相手と通信するたびにARPリクエストをやり直していては、効率が悪くなります。そこで機器は、一度調べたIPアドレスとMACアドレスの対応を記録しておき、次からはそれを使います。この対応の一覧をARPテーブルと呼びます。ARPキャッシュとも呼びます。

arp -aARPテーブルの内容を見る(Linux)
$ arp -a
? (192.168.10.1) at ac:de:48:aa:bb:cc [ether] on eth0
? (192.168.10.30) at ac:de:48:dd:ee:ff [ether] on eth0

1行の中身を分解すると、次のようになります。

表示例意味
?ホスト名(逆引きできないと ? のまま)
(192.168.10.1)IPアドレス
at ac:de:48:aa:bb:cc対応するMACアドレス
[ether]アドレスの種類(Ethernet)
on eth0このエントリを学習したネットワークインタフェース
arp -aARPテーブルの内容を見る(Windows)
> arp -a
インターフェイス: 192.168.10.25 --- 0xb
  インターネット アドレス  物理アドレス           種類
  192.168.10.1            ac-de-48-aa-bb-cc      動的
  192.168.10.30           ac-de-48-dd-ee-ff      動的

# 表示形式はLinuxと異なりますが、内容(IPアドレスとMACアドレスの対応)は同じです。

Linuxでは、同じ表を ip neigh でも見られます。arp を含む古いコマンドと新しいコマンドの対応は、netstat・ss・digの記事にまとめています。

ARPテーブルには有効期限がある

ARPテーブルのエントリは、記録したらずっと残るわけではありません。一定時間で自動的に消えます。期限が切れた後にそのIPアドレスと通信するときは、もう一度ARPリクエストからやり直します。

期限の長さと数え方は、機器によって異なります。PCのARPキャッシュは、OSによって数十秒から数十分程度のことが多いです。例えば、macOSの既定値は20分です。

Linuxでは、期限切れのエントリがすぐには消えないこともあります。stale(古い)という状態で、しばらく残ります。

一方、Ciscoルータの初期設定では4時間です。この4時間は、使われていない時間ではありません。学習してからの経過時間で数えます。同じ有効期限でも、何を基準に数えるかは機器によって異なります。

有効期限があるのは、対応関係が変わることがあるからです。ネットワークカードを交換すれば、MACアドレスが変わります。同じIPアドレスが、DHCPで別の機器に割り当てられることもあります。

古い対応のままでは、間違った相手にフレームが届いてしまいます。なお、IPアドレスを自動で配る仕組みはDHCPです。

ゲートウェイ宛のときは何を聞くか

別ネットワークにある相手と通信するとき、ARPで尋ねるのは最終的な宛先のMACアドレスではなく、デフォルトゲートウェイのMACアドレスです。

理由は、先に触れたARPの制約です。ARPは同じネットワーク内でしか使えません。最終的な宛先が別ネットワークにいる場合、PCはそのMACアドレスを直接調べられません。

PCはまず、同じネットワーク内のデフォルトゲートウェイにフレームを渡す必要があります。だから、ARPで尋ねる相手もゲートウェイになります。宛先が同一ネットワークかどうかを判定する方法は、デフォルトゲートウェイの記事にあります。

宛先の場所ARPで尋ねる相手理由
同じネットワーク内
(例:192.168.10.30)
宛先そのもの
192.168.10.30
直接フレームを渡せるので、宛先自身のMACが必要
別ネットワーク
(例:203.0.113.50)
デフォルトゲートウェイ
192.168.10.1
別ネットワークには直接渡せないので、中継してくれるゲートウェイのMACが必要
宛先MACゲートウェイのMAC宛先IP203.0.113.50(サーバ)同一ネットワーク複数ネットワークを経由PC192.168.10.25ゲートウェイ192.168.10.1サーバ203.0.113.50✕ 直接ARPできない
サーバ宛の通信でも、PCが実際にARPで尋ねるのはゲートウェイのMACです。ゲートウェイは、PCと同じネットワーク内にいます。フレームの宛先IPは、最後までサーバの203.0.113.50のままです。一方、宛先MACはゲートウェイのものになります。

ARPで尋ねる相手はゲートウェイで、パケットの宛先IPアドレスとは別物です。IPヘッダの宛先IPは、最後まで書き換わらずにサーバのままです。一方、Ethernetヘッダの宛先MACだけが、ゲートウェイのものになります。

複数のルータを経由するときは、宛先MACが区間ごとに書き換わります。これも、MACアドレスとIPアドレスの記事で説明したのと同じしくみです。

GARP(Gratuitous ARP)

ここまでのARPは、相手のMACアドレスを尋ねる動きでした。これとは別に、自分のIPアドレスについてのARPを、自分から送信する仕組みがあります。この仕組みをGARP(Gratuitous ARP)と呼びます。主に2つの用途があります。

1つは重複IPアドレスの検知です。機器は起動時に、ARPリクエストを送ります。尋ねるのは、これから使いたいIPアドレスです。このARPリクエストを、ARP Probeと呼びます。

このとき送信元IPアドレスは、まだ確定していない自分のIPではなく、0.0.0.0にします。この手順は、RFC 5227で定められています。もし誰かがそのIPアドレスをすでに使っていれば、応答が返ります。それで重複が分かります。

もう1つは、MACアドレスの変更を周囲に知らせる用途です。知らせを受けた機器は、有効期限を待たずにARPテーブルを更新します。この知らせ方を、ARP Announcementと呼びます。

ARPスプーフィング

ARPには、応答の送り主が本物かどうかを確認する仕組みがありません。機器は、応答した機器の言い分をそのまま信じます。そして、その内容をARPテーブルに記録してしまいます。

悪意のある機器が、「自分がゲートウェイです」と偽ったARP応答を送ったとします。すると、周囲の機器のARPテーブルを書き換えられます。この攻撃をARPスプーフィングと呼びます。ARPポイズニングとも呼びます。

成功すると、本来ゲートウェイ宛の通信が攻撃者の機器を経由するようになります。通信の内容を盗み見られたり、書き換えられたりするおそれがあります。具体的な攻撃手順はここでは扱いません。経路に入り込んで盗聴・改ざん・なりすましを行う攻撃は、まとめて中間者攻撃と呼びます。

スイッチのポートに接続してよいMACアドレスを制限するポートセキュリティでは、ARPスプーフィングは防げません。ARPの中身までは確認しない機能だからです。ARPスプーフィングを防ぐのは、スイッチのDynamic ARP Inspectionという機能です。DHCPスヌーピングとの関係も含めて、DHCPスヌーピングの記事で説明しています。

練習問題(全5問)

Q1ARPリクエストの送り方は?
Q2ARPリプライの送り方は?
Q3192.168.10.25/24 のPCが、別ネットワークにある 203.0.113.50 のサーバと通信するとき、PCがARPで尋ねるのは誰のMACアドレスか?
Q4ARPテーブル(キャッシュ)の説明として正しいものは?
Q5GARP(Gratuitous ARP)の用途として正しいものは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

おすすめの本 PR

ネットワークを初めて学ぶ人向けの入門書です。

目的別の本の選び方を見る

入門コースを読み進める

入門コース 全19本中10本目