この記事は、 「ネットワーク初級編|通信の仕組みをゼロから学ぶ」 の第16回です。
前回学んだEthernetフレームが、実際にどのMACアドレスへ送られるのかを決めるために使われる ARPの仕組みを解説します。
ARPの仕組み|IPアドレスからMACアドレスを調べる流れを初心者向けに図解
IPv4通信では、宛先のIPアドレスが分かっていても、そのままLAN上へEthernetフレームを送れるとは限りません。 ARPを使って、同じネットワーク内で実際の配送先となるMACアドレスを調べる必要があります。 この記事では、ARP要求・ARP応答・ARPテーブルの流れを図で整理します。
IPアドレスは、通信相手をネットワーク全体の中から識別するために使われます。 一方、同じLAN上でEthernetフレームを届けるときは、宛先MACアドレスが必要です。
そこで登場するのが、IPアドレスに対応するMACアドレスを調べるARPです。 ARPを理解すると、IPアドレスとMACアドレスが通信の中でどのように連携しているかが見えるようになります。
この記事を読み終えるとできること
- ARPの役割を自分の言葉で説明できる
- ARP要求とARP応答の違いを説明できる
- ARPテーブルが必要な理由を説明できる
- 別ネットワーク宛てではゲートウェイをARPする理由が分かる
ARPとは何か
ARPとは、同じIPv4ネットワーク内で、宛先IPアドレスに対応するMACアドレスを調べる仕組みです。
ARPは、Address Resolution Protocolの略です。 日本語では「アドレス解決プロトコル」と表現されます。
ここでいうアドレス解決とは、IPv4アドレスからMACアドレスを調べることです。 たとえば、PC-Aが「192.168.1.20へ送りたい」と分かっていても、Ethernetフレームには宛先MACアドレスも入れなければなりません。
ARPが埋める情報の空欄
宛先MAC:不明
ARPはIPv4アドレスをMACアドレスへ置き換える仕組みではありません。
IPアドレスとMACアドレスは両方使われます。ARPは、Ethernetフレームを作るために不足している宛先MACアドレスを調べます。
なぜIPアドレスだけでは送れないのか
TCP/IP通信では、複数の情報が異なる役割を持っています。 IPパケットには送信元IPアドレスと宛先IPアドレスが入り、Ethernetフレームには送信元MACアドレスと宛先MACアドレスが入ります。
| 情報 | 主な役割 | 今回の例 |
|---|---|---|
| 宛先IPアドレス | 最終的にどの端末・サーバーへ届けるかを示す | 192.168.1.20 |
| 宛先MACアドレス | 現在のLAN上で、次にどの機器へフレームを渡すかを示す | BB-BB-BB-BB-BB-BB |
IPパケットをEthernetフレームへ格納するイメージ
ARPで宛先MACアドレスが分かると、送信側はEthernetフレームを完成させられます。
Ethernetを使うLANでは、スイッチがMACアドレスを見てフレームを転送します。 そのため、送信側はIPアドレスだけでなく、現在のLAN上でフレームを渡す相手のMACアドレスも知る必要があります。
ARP要求からARP応答までの流れ
PC-AからPC-Bへ通信する例で、ARPの基本的な流れを確認します。
PC-A
- IP:192.168.1.10
- MAC:AA-AA-AA-AA-AA-AA
PC-B
- IP:192.168.1.20
- MAC:BB-BB-BB-BB-BB-BB
PC-AがARPテーブルを確認する
PC-Aは、192.168.1.20に対応するMACアドレスをすでに知っているか確認します。 登録がなければARP要求を送信します。
ARP要求をブロードキャストする
PC-Aは「192.168.1.20を持っている機器は、MACアドレスを教えてください」というARP要求を、同じLAN上の全端末へ送ります。
Ethernetフレームの宛先MACアドレスには、ブロードキャストを表す
FF-FF-FF-FF-FF-FFが使われます。
各端末が対象IPアドレスを確認する
同じLAN上の端末はARP要求を受け取りますが、自分のIPアドレスと一致しない端末は応答しません。 192.168.1.20を持つPC-Bだけが応答します。
PC-BがARP応答を返す
PC-Bは「192.168.1.20のMACアドレスはBB-BB-BB-BB-BB-BBです」とPC-Aへ返します。 基本的なARP応答は、問い合わせ元のPC-Aを宛先とするユニキャストです。
PC-Aが対応関係を保存する
PC-Aは、192.168.1.20とBB-BB-BB-BB-BB-BBの対応をARPテーブルへ一時的に保存します。
本来送りたかったデータを送る
宛先MACアドレスが分かったため、PC-AはPC-B宛てのEthernetフレームを作り、IPパケットを送信します。
ARP要求とARP応答の違い
ブロードキャスト
基本はユニキャスト
ARPテーブルとは何か
毎回ARP要求をブロードキャストすると、通信開始までの処理が増え、LAN上の端末も毎回要求を確認しなければなりません。 そこで端末は、ARPで確認したIPアドレスとMACアドレスの対応を一定時間保存します。
ARPテーブルとは、IPv4アドレスとMACアドレスの対応関係を一時的に記録する表です。
| IPアドレス | MACアドレス | 種類 |
|---|---|---|
| 192.168.1.1 | 11-11-11-11-11-11 | 動的 |
| 192.168.1.20 | BB-BB-BB-BB-BB-BB | 動的 |
動的エントリーは永続保存ではない
ARPで自動的に学習した情報は、通常は一定時間が経過すると削除または再確認されます。 端末の交換や再起動によってMACアドレスとの対応が変わる可能性があるためです。
ARPテーブルの保持時間や表示状態は、OSやネットワーク機器によって異なります。 「何分で必ず消える」と一律に覚えるより、一時的なキャッシュであると理解することが重要です。
ARPテーブルに登録があれば、必ず通信できるとは限らない
ARPテーブルに対応関係が残っていても、相手端末が停止していたり、途中のスイッチポートに問題があったりすれば通信できません。 ARPテーブルは「過去に学習した対応情報」であり、現在の到達性を保証するものではありません。
同じネットワークへ送る場合
PC-AとPC-Bが同じIPv4ネットワークに所属している場合、PC-AはPC-B本人のMACアドレスをARPで調べます。
同じネットワーク内の通信
- サブネットマスクを使い、192.168.1.20が同じネットワークか判断する
- PC-BのMACアドレスをARPで確認する
- 宛先MACをPC-B、宛先IPをPC-Bとして送信する
同じネットワーク宛てでは、最終宛先端末のMACアドレスを調べます。
別のネットワークへ送る場合
宛先が別のIPv4ネットワークにある場合、送信元PCは遠隔地のサーバーのMACアドレスをARPで調べません。 代わりに、最初の中継先となるデフォルトゲートウェイのMACアドレスを調べます。
別ネットワーク宛ての通信
| 項目 | PC-Aから最初に送るフレーム |
|---|---|
| 宛先IPアドレス | Webサーバーの203.0.113.10 |
| 宛先MACアドレス | デフォルトゲートウェイのMACアドレス |
IPパケットの宛先は最終目的地のWebサーバーですが、Ethernetフレームの宛先は、現在のLANで次に渡す相手であるルーターです。
遠隔地サーバーのMACアドレスを、自分のLANからARPで取得することはできません。
ARP要求はブロードキャストですが、通常ルーターはそのブロードキャストを別ネットワークへ転送しません。
ルーターを越えるとMACアドレスは変わる
ルーターは受信したEthernetフレームをいったん取り外し、次のネットワークへ送るための新しいフレームを作ります。 このため、送信元MACアドレスと宛先MACアドレスはルーターを通過するたびに変わります。
一方、通常の通信では、IPパケットの送信元IPアドレスと宛先IPアドレスは、最終端末間を識別する情報として使われ続けます。 ただし、NATなどでIPアドレスが変換される場合は例外です。
ARPパケットに含まれる主な情報
初級段階ですべてのフィールドを暗記する必要はありません。 ARP要求とARP応答には、主に次の情報が含まれると理解してください。
| 情報 | 意味 | ARP要求の例 |
|---|---|---|
| オペレーション | 要求か応答かを示す | 要求 |
| 送信元MACアドレス | 問い合わせた端末のMAC | AA-AA-AA-AA-AA-AA |
| 送信元IPアドレス | 問い合わせた端末のIP | 192.168.1.10 |
| 宛先MACアドレス | 調べたい相手のMAC | 要求時点では不明 |
| 宛先IPアドレス | MACを調べたい相手のIP | 192.168.1.20 |
Ethernetフレームの「宛先MAC」と、ARPメッセージ内の「宛先MAC」は別の項目です。 ARP要求を運ぶEthernetフレームはブロードキャスト宛てですが、ARPメッセージ内では調査対象のMACアドレスがまだ不明です。
Gratuitous ARPという使い方もある
通常のARPは、別のIPアドレスに対応するMACアドレスを問い合わせます。 一方、自分のIPアドレスとMACアドレスの対応を周囲へ通知するARPもあり、Gratuitous ARPと呼ばれます。
これは、IPアドレスの重複確認、冗長化機器の切り替え後に周囲のARP情報を更新する場面などで利用されます。 初級では、「問い合わせ以外にも、対応関係を周囲へ知らせる使い方がある」と覚えておけば十分です。
ARPテーブルを確認するコマンド
自分のPCがどのIPアドレスとMACアドレスの対応を覚えているかは、コマンドで確認できます。
Windows
arp -a
ARPテーブルの一覧を表示します。
Linux
ip neigh
近隣端末のIP・MAC・状態を表示します。
macOS
arp -a
ARPキャッシュの一覧を表示します。
Windowsの表示例
この例では、PCが192.168.1.1と192.168.1.20に対応するMACアドレスを記憶しています。
ARPの動きを観察する簡単な手順
arp -aで現在のARPテーブルを確認する- 同じネットワーク内の端末やデフォルトゲートウェイへpingを実行する
- もう一度
arp -aを実行する - 対象IPアドレスのMACアドレスが追加・更新されたか確認する
会社や学校など管理されたネットワークでは、許可なく他端末へpingを実行しないでください。 自宅環境または管理者から許可された検証環境で確認しましょう。
ARPから考える障害切り分け
ARPを理解すると、「相手のIPアドレスは分かるのに通信できない」という状況を、より具体的に切り分けられます。
最初に、宛先が同じネットワークか確認する
| 宛先 | ARPで調べる相手 |
|---|---|
| 同じネットワーク | 最終宛先端末のMACアドレス |
| 別のネットワーク | デフォルトゲートウェイのMACアドレス |
ARP情報を取得できないときの主な確認項目
端末側
- IPアドレスとサブネットマスクは正しいか
- ネットワークインターフェースは有効か
- デフォルトゲートウェイは正しいか
- IPアドレスの重複がないか
ネットワーク側
- LANケーブルやWi-Fiは接続されているか
- 同じVLANへ所属しているか
- スイッチポートは正常か
- 相手端末やゲートウェイは起動しているか
ARPテーブルの状態から考える
Linuxのip neighなどでは、近隣エントリーがINCOMPLETEやFAILEDのような状態になることがあります。
これは、ARP要求を出したものの、MACアドレスを正常に解決できていない可能性を示します。
ただし、表示状態の名称や更新方法はOSによって異なります。 状態だけで原因を断定せず、IP設定、VLAN、物理接続、相手端末の状態をあわせて確認します。
pingの前にARPが動くことがあります。
同一LAN上の相手やデフォルトゲートウェイのMACアドレスが未登録なら、ICMP Echo Requestを送る前にARPで宛先MACアドレスを確認します。 次の記事では、この後に使われるICMPとpingの仕組みを解説します。
ARPスプーフィングにも注意する
ARPには、応答内容が正しい相手から送られたかを強く認証する仕組みがありません。 その性質を悪用し、偽のIP・MAC対応を端末へ覚えさせる攻撃は、ARPスプーフィングやARPポイズニングと呼ばれます。
企業ネットワークでは、スイッチのセキュリティ機能、端末保護、通信の暗号化、適切なネットワーク分割などを組み合わせて対策します。 初級では、ARP情報を無条件に信頼する仕組みには弱点があることを知っておきましょう。
ARPに関するよくある勘違い
ドメイン名からIPアドレスを調べるのはDNSです。 ARPはIPv4アドレスに対応するMACアドレスを調べます。
別ネットワーク宛てでは、送信元端末はデフォルトゲートウェイのMACアドレスをARPで調べます。
ARP要求は通常ブロードキャストですが、基本的なARP応答は問い合わせ元へのユニキャストです。
ARPテーブルは一時的な対応情報です。登録後に相手が停止している可能性もあり、現在の到達性を保証しません。
IPv6ではARPではなく、ICMPv6を利用するNeighbor Discoveryの仕組みで近隣情報を解決します。
IPアドレスで最終宛先を判断し、ARPで現在のLAN上の配送先MACアドレスを確認することで、Ethernetフレームを送信できます。
理解度チェック
記事の内容を確認するため、次の5問に答えてください。 解答を見る前に、一度自分で考えてみましょう。
問題1.ARPの主な役割として正しいものはどれですか。
- ドメイン名からIPv4アドレスを調べる
- IPv4アドレスからMACアドレスを調べる
- ポート番号からアプリケーションを起動する
- 通信経路上のルーターをすべて調べる
解答を見る
ARPは、同じIPv4ネットワーク内でIPアドレスに対応するMACアドレスを調べる仕組みです。
問題2.ARP要求を運ぶEthernetフレームの宛先MACアドレスとして一般的なものはどれですか。
- 00-00-00-00-00-00
- 送信元端末自身のMACアドレス
- FF-FF-FF-FF-FF-FF
- WebサーバーのMACアドレス
解答を見る
ARP要求は、対象MACアドレスが分からないため、同じLAN上の全端末へ届くブロードキャストとして送信されます。
問題3.PCが別ネットワーク上のWebサーバーへ通信するとき、最初にARPで調べるMACアドレスはどれですか。
- WebサーバーのMACアドレス
- DNSサーバーのMACアドレス
- デフォルトゲートウェイのMACアドレス
- 送信元PC自身のMACアドレス
解答を見る
別ネットワーク宛てでは、最初の中継先となるデフォルトゲートウェイへフレームを渡すため、そのMACアドレスを調べます。
問題4.ARPテーブルを使う主な理由は何ですか。
解答を見る
一度確認したIPアドレスとMACアドレスの対応を一時保存し、通信のたびにARP要求を送る処理を減らすためです。
問題5.次の空欄を埋めてください。
同じネットワーク宛てでは( A )のMACアドレスをARPで調べ、別ネットワーク宛てでは( B )のMACアドレスをARPで調べます。
解答を見る
実践演習:どのMACアドレスをARPで調べるか
次の構成を見て、PC-Aが通信開始時にどの機器のMACアドレスを調べるか考えてみましょう。
演習用ネットワーク
GW:192.168.10.1
課題1.PC-AからPC-Bへ通信する
PC-Aは、どのIPアドレスに対応するMACアドレスをARPで調べますか。
課題1の解答を見る
ARP対象IP:192.168.10.20
PC-BはPC-Aと同じ192.168.10.0/24に所属するため、PC-B本人のMACアドレスを調べます。
課題2.PC-AからWebサーバーへ通信する
PC-Aは、どのIPアドレスに対応するMACアドレスをARPで調べますか。
課題2の解答を見る
ARP対象IP:192.168.10.1
Webサーバーは別ネットワークにあるため、PC-Aは最初の中継先であるデフォルトゲートウェイのMACアドレスを調べます。 Webサーバーの203.0.113.50はIPパケットの宛先として使用します。
課題3.フレームとIPパケットの宛先を書く
PC-AからWebサーバーへ最初に送るとき、次の2つの宛先を書いてください。
IPパケットの宛先IP:__________
課題3の解答を見る
- Ethernetフレームの宛先MAC:ルーターの192.168.10.1側インターフェースのMACアドレス
- IPパケットの宛先IP:203.0.113.50
課題4.障害原因を考える
PC-AからデフォルトゲートウェイのMACアドレスをARPで取得できません。 原因候補を3つ以上挙げてください。
課題4の解答例を見る
- PC-AのLANケーブルが抜けている、またはWi-Fiが切断されている
- PC-AのIPアドレスやサブネットマスクが誤っている
- デフォルトゲートウェイのIPアドレス設定が誤っている
- PC-Aとルーターが異なるVLANに所属している
- スイッチポートが停止している
- ルーターのインターフェースが停止している
自分の言葉で説明する課題
最後に、次の質問へ30秒程度で答えてみましょう。
「IPアドレスが分かっているのに、なぜARPが必要なのですか?」と質問されました。 IPアドレス、MACアドレス、Ethernetフレームという言葉を使って説明してください。
説明例を見る
IPアドレスは最終的な通信相手を指定するために使いますが、LAN上でEthernetフレームを送るには宛先MACアドレスも必要です。 ARPは、宛先IPアドレスまたはデフォルトゲートウェイのIPアドレスに対応するMACアドレスを調べ、Ethernetフレームを作れるようにする仕組みです。
同じネットワークなら最終宛先、別ネットワークならデフォルトゲートウェイという違いまで説明できれば、この記事の目標は達成です。
まとめ
- ARPは、同じIPv4ネットワーク内でIPアドレスに対応するMACアドレスを調べる仕組み
- ARP要求は通常ブロードキャスト、ARP応答は基本的に問い合わせ元へのユニキャスト
- 確認したIPアドレスとMACアドレスの対応はARPテーブルへ一時保存される
- 同じネットワーク宛てでは、最終宛先端末のMACアドレスを調べる
- 別ネットワーク宛てでは、デフォルトゲートウェイのMACアドレスを調べる
- ルーターを越えるたびにEthernetフレームのMACアドレスは付け替えられる
- IPv6ではARPではなくNeighbor Discoveryの仕組みが使われる
ARPは、IPアドレスで判断した通信先を、実際のEthernetフレームの配送先へつなぐ橋渡し役です。

コメント