ARPとは?IPアドレスからMACアドレスを調べる仕組みを初心者向けに図解

ネットワーク初級編 16/全32記事

この記事は、 「ネットワーク初級編|通信の仕組みをゼロから学ぶ」 の第16回です。

前回学んだEthernetフレームが、実際にどのMACアドレスへ送られるのかを決めるために使われる ARPの仕組みを解説します。

ARPの仕組み|IPアドレスからMACアドレスを調べる流れを初心者向けに図解

IPv4通信では、宛先のIPアドレスが分かっていても、そのままLAN上へEthernetフレームを送れるとは限りません。 ARPを使って、同じネットワーク内で実際の配送先となるMACアドレスを調べる必要があります。 この記事では、ARP要求・ARP応答・ARPテーブルの流れを図で整理します。

対象レベル Level 1・初級
想定読了時間 約20分
身につく成果 ARPの通信手順を図で説明できる
前提知識 IP・MAC・Ethernet
演習環境 ブラウザ+任意でPC

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が埋める情報の空欄

💻 PC-A 宛先IP:192.168.1.20
宛先MAC:不明
🔎 ARPで確認 192.168.1.20のMACは?
🖥️ PC-B MAC:BB-BB-BB-BB-BB-BB

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フレームへ格納するイメージ

宛先MAC 送信元MAC 種別 IPパケット[送信元IP・宛先IP・データ] FCS

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
1

PC-AがARPテーブルを確認する

PC-Aは、192.168.1.20に対応するMACアドレスをすでに知っているか確認します。 登録がなければARP要求を送信します。

2

ARP要求をブロードキャストする

PC-Aは「192.168.1.20を持っている機器は、MACアドレスを教えてください」というARP要求を、同じLAN上の全端末へ送ります。

Ethernetフレームの宛先MACアドレスには、ブロードキャストを表す FF-FF-FF-FF-FF-FFが使われます。

3

各端末が対象IPアドレスを確認する

同じLAN上の端末はARP要求を受け取りますが、自分のIPアドレスと一致しない端末は応答しません。 192.168.1.20を持つPC-Bだけが応答します。

4

PC-BがARP応答を返す

PC-Bは「192.168.1.20のMACアドレスはBB-BB-BB-BB-BB-BBです」とPC-Aへ返します。 基本的なARP応答は、問い合わせ元のPC-Aを宛先とするユニキャストです。

5

PC-Aが対応関係を保存する

PC-Aは、192.168.1.20とBB-BB-BB-BB-BB-BBの対応をARPテーブルへ一時的に保存します。

6

本来送りたかったデータを送る

宛先MACアドレスが分かったため、PC-AはPC-B宛てのEthernetフレームを作り、IPパケットを送信します。

ARP要求とARP応答の違い

📢 ARP要求 全端末へ質問
ブロードキャスト
💬 ARP応答 質問した端末へ回答
基本はユニキャスト
📦 データ送信 判明したMAC宛てに送信

ARPテーブルとは何か

毎回ARP要求をブロードキャストすると、通信開始までの処理が増え、LAN上の端末も毎回要求を確認しなければなりません。 そこで端末は、ARPで確認したIPアドレスとMACアドレスの対応を一定時間保存します。

ARPテーブル

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で調べます。

同じネットワーク内の通信

💻 PC-A 192.168.1.10/24
🔀 スイッチ 同じLAN内で転送
🖥️ PC-B 192.168.1.20/24
ARP対象IP:192.168.1.20 調べるMAC:PC-BのMAC
  1. サブネットマスクを使い、192.168.1.20が同じネットワークか判断する
  2. PC-BのMACアドレスをARPで確認する
  3. 宛先MACをPC-B、宛先IPをPC-Bとして送信する

同じネットワーク宛てでは、最終宛先端末のMACアドレスを調べます。

別のネットワークへ送る場合

宛先が別のIPv4ネットワークにある場合、送信元PCは遠隔地のサーバーのMACアドレスをARPで調べません。 代わりに、最初の中継先となるデフォルトゲートウェイのMACアドレスを調べます。

別ネットワーク宛ての通信

💻 PC-A 192.168.1.10/24
🚪 ルーター GW:192.168.1.1
☁️ 別ネットワーク ルーターが中継
🗄️ Webサーバー 203.0.113.10
宛先IP:203.0.113.10 ARP対象IP:192.168.1.1 宛先MAC:ルーターの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の表示例

C:\> arp -a インターフェイス: 192.168.1.10 — 0x8 インターネット アドレス 物理アドレス 種類 192.168.1.1 11-11-11-11-11-11 動的 192.168.1.20 bb-bb-bb-bb-bb-bb 動的

この例では、PCが192.168.1.1と192.168.1.20に対応するMACアドレスを記憶しています。

ARPの動きを観察する簡単な手順

  1. arp -aで現在のARPテーブルを確認する
  2. 同じネットワーク内の端末やデフォルトゲートウェイへpingを実行する
  3. もう一度arp -aを実行する
  4. 対象IPアドレスのMACアドレスが追加・更新されたか確認する

会社や学校など管理されたネットワークでは、許可なく他端末へpingを実行しないでください。 自宅環境または管理者から許可された検証環境で確認しましょう。

ARPから考える障害切り分け

ARPを理解すると、「相手のIPアドレスは分かるのに通信できない」という状況を、より具体的に切り分けられます。

最初に、宛先が同じネットワークか確認する

宛先 ARPで調べる相手
同じネットワーク 最終宛先端末のMACアドレス
別のネットワーク デフォルトゲートウェイのMACアドレス

ARP情報を取得できないときの主な確認項目

端末側

  • IPアドレスとサブネットマスクは正しいか
  • ネットワークインターフェースは有効か
  • デフォルトゲートウェイは正しいか
  • IPアドレスの重複がないか

ネットワーク側

  • LANケーブルやWi-Fiは接続されているか
  • 同じVLANへ所属しているか
  • スイッチポートは正常か
  • 相手端末やゲートウェイは起動しているか

ARPテーブルの状態から考える

Linuxのip neighなどでは、近隣エントリーがINCOMPLETEFAILEDのような状態になることがあります。 これは、ARP要求を出したものの、MACアドレスを正常に解決できていない可能性を示します。

ただし、表示状態の名称や更新方法はOSによって異なります。 状態だけで原因を断定せず、IP設定、VLAN、物理接続、相手端末の状態をあわせて確認します。

pingの前にARPが動くことがあります。

同一LAN上の相手やデフォルトゲートウェイのMACアドレスが未登録なら、ICMP Echo Requestを送る前にARPで宛先MACアドレスを確認します。 次の記事では、この後に使われるICMPとpingの仕組みを解説します。

ARPスプーフィングにも注意する

ARPには、応答内容が正しい相手から送られたかを強く認証する仕組みがありません。 その性質を悪用し、偽のIP・MAC対応を端末へ覚えさせる攻撃は、ARPスプーフィングやARPポイズニングと呼ばれます。

企業ネットワークでは、スイッチのセキュリティ機能、端末保護、通信の暗号化、適切なネットワーク分割などを組み合わせて対策します。 初級では、ARP情報を無条件に信頼する仕組みには弱点があることを知っておきましょう。

ARPに関するよくある勘違い

ARPはドメイン名からIPアドレスを調べる仕組み

ドメイン名からIPアドレスを調べるのはDNSです。 ARPはIPv4アドレスに対応するMACアドレスを調べます。

別ネットワークのサーバーのMACアドレスをARPで調べる

別ネットワーク宛てでは、送信元端末はデフォルトゲートウェイのMACアドレスをARPで調べます。

ARP要求もARP応答も必ずブロードキャスト

ARP要求は通常ブロードキャストですが、基本的なARP応答は問い合わせ元へのユニキャストです。

ARPテーブルに登録があれば相手は必ず稼働している

ARPテーブルは一時的な対応情報です。登録後に相手が停止している可能性もあり、現在の到達性を保証しません。

IPv6でもARPをそのまま使用する

IPv6ではARPではなく、ICMPv6を利用するNeighbor Discoveryの仕組みで近隣情報を解決します。

ARPはIP通信とEthernet通信をつなぐ重要な役割を持つ

IPアドレスで最終宛先を判断し、ARPで現在のLAN上の配送先MACアドレスを確認することで、Ethernetフレームを送信できます。

理解度チェック

記事の内容を確認するため、次の5問に答えてください。 解答を見る前に、一度自分で考えてみましょう。

問題1.ARPの主な役割として正しいものはどれですか。

  1. ドメイン名からIPv4アドレスを調べる
  2. IPv4アドレスからMACアドレスを調べる
  3. ポート番号からアプリケーションを起動する
  4. 通信経路上のルーターをすべて調べる
解答を見る
正解:B

ARPは、同じIPv4ネットワーク内でIPアドレスに対応するMACアドレスを調べる仕組みです。

問題2.ARP要求を運ぶEthernetフレームの宛先MACアドレスとして一般的なものはどれですか。

  1. 00-00-00-00-00-00
  2. 送信元端末自身のMACアドレス
  3. FF-FF-FF-FF-FF-FF
  4. WebサーバーのMACアドレス
解答を見る
正解:C

ARP要求は、対象MACアドレスが分からないため、同じLAN上の全端末へ届くブロードキャストとして送信されます。

問題3.PCが別ネットワーク上のWebサーバーへ通信するとき、最初にARPで調べるMACアドレスはどれですか。

  1. WebサーバーのMACアドレス
  2. DNSサーバーのMACアドレス
  3. デフォルトゲートウェイのMACアドレス
  4. 送信元PC自身のMACアドレス
解答を見る
正解:C

別ネットワーク宛てでは、最初の中継先となるデフォルトゲートウェイへフレームを渡すため、そのMACアドレスを調べます。

問題4.ARPテーブルを使う主な理由は何ですか。

解答を見る

一度確認したIPアドレスとMACアドレスの対応を一時保存し、通信のたびにARP要求を送る処理を減らすためです。

問題5.次の空欄を埋めてください。

同じネットワーク宛てでは( A )のMACアドレスをARPで調べ、別ネットワーク宛てでは( B )のMACアドレスをARPで調べます。

解答を見る
A:最終宛先端末 B:デフォルトゲートウェイ

実践演習:どのMACアドレスをARPで調べるか

次の構成を見て、PC-Aが通信開始時にどの機器のMACアドレスを調べるか考えてみましょう。

演習用ネットワーク

💻 PC-A 192.168.10.10/24
GW:192.168.10.1
🔀 スイッチ 同一LANを接続
🚪 ルーター 192.168.10.1/24
🖥️ PC-B 192.168.10.20/24
🗄️ Webサーバー 203.0.113.50/24

課題1.PC-AからPC-Bへ通信する

PC-Aは、どのIPアドレスに対応するMACアドレスをARPで調べますか。

ARP対象IP:__________
課題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で調べますか。

ARP対象IP:__________
課題2の解答を見る

ARP対象IP:192.168.10.1

Webサーバーは別ネットワークにあるため、PC-Aは最初の中継先であるデフォルトゲートウェイのMACアドレスを調べます。 Webサーバーの203.0.113.50はIPパケットの宛先として使用します。

課題3.フレームとIPパケットの宛先を書く

PC-AからWebサーバーへ最初に送るとき、次の2つの宛先を書いてください。

Ethernetフレームの宛先MAC:__________
IPパケットの宛先IP:__________
課題3の解答を見る
  • Ethernetフレームの宛先MAC:ルーターの192.168.10.1側インターフェースのMACアドレス
  • IPパケットの宛先IP:203.0.113.50

課題4.障害原因を考える

PC-AからデフォルトゲートウェイのMACアドレスをARPで取得できません。 原因候補を3つ以上挙げてください。

例:LANケーブルが抜けている
課題4の解答例を見る
  • PC-AのLANケーブルが抜けている、またはWi-Fiが切断されている
  • PC-AのIPアドレスやサブネットマスクが誤っている
  • デフォルトゲートウェイのIPアドレス設定が誤っている
  • PC-Aとルーターが異なるVLANに所属している
  • スイッチポートが停止している
  • ルーターのインターフェースが停止している

自分の言葉で説明する課題

最後に、次の質問へ30秒程度で答えてみましょう。

「IPアドレスが分かっているのに、なぜARPが必要なのですか?」と質問されました。 IPアドレス、MACアドレス、Ethernetフレームという言葉を使って説明してください。

ARPが必要なのは、________________________________。
説明例を見る

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フレームの配送先へつなぐ橋渡し役です。

次の記事:ICMPとpingの仕組み

ARPで同じLAN上の配送先MACアドレスが分かると、端末は本来送りたかったIPパケットを送信できます。

次の記事では、通信相手へ到達できるかを確認するときに使われるICMPと、日常的な切り分けで使うpingの仕組みを解説します。 pingを実行したときに、ARPとICMPがどの順番で動くのかも確認します。

ネットワーク初級編 16/全32記事

初級編では、ネットワークの全体像からIPアドレス、Ethernet、ARP、ICMP、TCP、DNS、基本コマンド、障害切り分けまでを順番に学びます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次