フリーキーズ | 独学プログラミング

ARP入門!MACアドレス解決の仕組みをネットワーク初心者にわかりやすく解説

リンドくん

リンドくん

たなべ先生、ネットワークの勉強をしてるんですけど、ARPって何ですか?
IPアドレスとMACアドレスが関係してるみたいなんですが...

たなべ

たなべ

ARPはAddress Resolution Protocolの略で、簡単に言うと「IPアドレスからMACアドレスを調べるための仕組み」なんだ。
ネットワーク通信では実はとても重要な役割を果たしているんだよ。

プログラミング学習でお悩みの方へ

HackATAは、エンジニアを目指す方のためのプログラミング学習コーチングサービスです。 経験豊富な現役エンジニアがあなたの学習をサポートします。

✓ 質問し放題

✓ β版公開中(2025年内の特別割引)

HackATAの詳細を見る

ネットワーク通信に欠かせないアドレス解決の仕組み

インターネットや社内ネットワークでコンピュータ同士が通信する際、実は2種類のアドレスが使われていることをご存知でしょうか?

一つは皆さんもよく耳にするIPアドレス、もう一つはMACアドレスと呼ばれるものです。
これらのアドレスは異なる役割を持っており、ネットワーク通信を行うためには両方が必要になります。

しかし、自分たちが普段使っているのはIPアドレスだけです。Webサイトにアクセスする際も、他のコンピュータに接続する際も、IPアドレスを指定します。
では、MACアドレスはどうやって調べているのでしょうか?

その答えが、今回解説するARP(Address Resolution Protocol)という仕組みなのです。
ARPは、ネットワーク通信の裏側で静かに働き続けている、まさに縁の下の力持ちのような存在です。

この記事では、ネットワーク学習を始めたばかりの方でも理解できるよう、ARPとMACアドレス解決プロセスについて、基礎から丁寧に解説していきます。

IPアドレスとMACアドレスの違いを理解しよう

リンドくん

リンドくん

そもそも、なぜアドレスが2種類も必要なんですか?1つじゃダメなんですか?

たなべ

たなべ

それぞれのアドレスには異なる役割があるんだ。まず、その違いをしっかり理解しておくことが大切だよ。

IPアドレスとは

IPアドレスは、ネットワーク上でコンピュータを識別するための論理的なアドレスです。
例えば、192.168.1.10のような形式で表され、以下のような特徴があります。

  • 変更可能 - 設定によって自由に変えられます
  • 階層構造 - ネットワーク部とホスト部に分かれています
  • ルーティング可能 - インターネット全体で経路を決定できます
  • 人間にも読みやすい - 数字の並びで理解しやすい形式です

IPアドレスは、いわばインターネット上の住所のようなものです。郵便物を送る際に住所が必要なように、データを送信する際にはIPアドレスが必要になります。

MACアドレスとは

一方、MACアドレスは、ネットワークインターフェースカード(NIC)に割り当てられた物理的なアドレスです。
例えば、00:1A:2B:3C:4D:5Eのような16進数の形式で表され、以下のような特徴があります。

  • 固有の識別子 - 製造時に割り当てられた世界で唯一の番号です
  • 変更不可能 - 基本的にハードウェアに焼き付けられています
  • ローカルネットワークで使用 - 同じネットワーク内での通信に使われます
  • 48ビット - 前半24ビットはメーカー識別、後半24ビットは機器固有番号です

MACアドレスは、ネットワーク機器の製造番号のようなものと考えるとわかりやすいでしょう。

なぜ2つのアドレスが必要なのか

では、なぜ両方のアドレスが必要なのでしょうか?理由は以下の通りです。

IPアドレスの役割 - 広域ネットワーク(インターネット)でのルーティングに使用され、データがどこに届くべきかを示します。

MACアドレスの役割 - ローカルネットワーク内での実際のデータ配送に使用され、物理的にどの機器に届けるかを特定します。

例えるなら、IPアドレスは「東京都渋谷区〇〇」という住所で、MACアドレスは「その建物の中の特定の部屋番号」といった関係です。
両方があることで、インターネット全体から特定の機器まで、確実にデータを届けることができるのです。

ARPの基本的な仕組みとプロセス

リンドくん

リンドくん

IPアドレスからMACアドレスを調べるって、具体的にどうやってるんですか?

たなべ

たなべ

それがARPの出番なんだ!実際のプロセスを順番に見ていこう。とても論理的で面白い仕組みだよ。

ARPの動作プロセス

ARPがMACアドレスを解決するプロセスは、以下のステップで行われます。

ステップ① ARPリクエストの送信

あるコンピュータ(送信元)が、特定のIPアドレスを持つコンピュータ(送信先)と通信したいとします。
しかし、送信先のMACアドレスが分からない場合、送信元はARPリクエストと呼ばれるメッセージをネットワーク全体にブロードキャスト(一斉送信)します。

ARPリクエストには、以下の情報が含まれています。

  • 送信元のIPアドレス
  • 送信元のMACアドレス
  • 調べたい送信先のIPアドレス
  • 送信先のMACアドレス(不明なので空欄)

このメッセージは、ネットワーク内のすべての機器に届きます。

ステップ② ARPリプライの返信

ブロードキャストされたARPリクエストを受け取った各機器は、そのメッセージを確認します。
もし自分のIPアドレスがリクエストで指定されているIPアドレスと一致すれば、その機器はARPリプライを送信元に返します。

ARPリプライには、以下の情報が含まれています。

  • 自分(送信先)のIPアドレス
  • 自分(送信先)のMACアドレス

この返信は、ブロードキャストではなく、ユニキャスト(特定の宛先への送信)で送信元にのみ届けられます。

ステップ③ ARPテーブルへの登録

送信元がARPリプライを受け取ると、そこに含まれる「IPアドレスとMACアドレスの対応関係」をARPテーブル(ARPキャッシュ)に保存します。

ARPテーブルは、過去に解決したIPアドレスとMACアドレスの対応を記録しておくための一時的なメモリです。
これにより、同じ宛先に再度通信する際には、ARPリクエストを送信せずに済むため、ネットワークの効率が向上します。

ARPテーブルの重要性

ARPテーブルは、ネットワーク通信の効率化に大きく貢献しています。
以下のような特徴があります。

  • 一時的な保存 - 通常、数分から数十分でエントリは削除されます
  • 動的な更新 - 新しい通信が発生すると自動的に更新されます
  • 確認可能 - コマンドで現在のARPテーブルを表示できます

ARPテーブルの確認方法

実際に自分のコンピュータのARPテーブルを確認するには、以下のコマンドを使用します。

Windowsの場合

arp -a

macOS / Linuxの場合

arp -a
# または
ip neigh show

実行すると、以下のような形式で表示されます。

(192.168.0.1) at 00:00:00:00:00:00 on en1 ifscope [ethernet]

この表示から、どのIPアドレスがどのMACアドレスに対応しているかがわかります。

ARP通信の実例とネットワーク上での動き

リンドくん

リンドくん

実際のネットワークでは、どんな場面でARPが使われるんですか?

たなべ

たなべ

実は、君がWebサイトにアクセスしたり、ファイルをダウンロードしたりするほぼすべての通信の裏側でARPが動いているんだよ。具体例を見てみよう。

実例① Webサイトへのアクセス

自分のコンピュータ(IPアドレス: 192.168.1.10)から、同じネットワーク内のWebサーバ(IPアドレス: 192.168.1.50)にアクセスする場合を考えてみましょう。

  1. HTTPリクエストの準備 - ブラウザが「http://192.168.1.50」にアクセスしようとします

  2. MACアドレスの確認 - システムはまず自分のARPテーブルを確認し、192.168.1.50のMACアドレスが登録されているかチェックします

  3. ARPリクエストの送信(未登録の場合) - MACアドレスが分からなければ、ARPリクエストをブロードキャストします

    • 「192.168.1.50のMACアドレスを教えてください!」
  4. ARPリプライの受信 - Webサーバが自分のMACアドレス(例: AA:BB:CC:DD:EE:FF)を返信します

  5. データ送信 - 取得したMACアドレスを使って、HTTPリクエストをWebサーバに送信します

このプロセス全体は、ほんの数ミリ秒で完了します。自分たちが意識することはほとんどありませんが、裏側ではこのような処理が行われているのです。

実例② 別のネットワークへの通信

同じネットワーク内ではなく、インターネット上のサーバ(例: www.example.com)にアクセスする場合はどうでしょうか?

この場合、直接相手のMACアドレスを調べることはできません。なぜなら、インターネット上の遠く離れたサーバは、同じローカルネットワーク内にいないからです。

そこで、以下のようなプロセスになります。

  1. ゲートウェイ(ルータ)のMACアドレスを調べる - ARPを使って、自分のネットワークの出口であるルータのMACアドレスを取得します

  2. ルータにデータを送信 - ルータのMACアドレス宛にデータを送り、後はルータに任せます

  3. ルータが中継 - ルータがインターネット上でデータを次の中継地点に転送していきます

つまり、ローカルネットワーク内での通信にはARPが使われますが、インターネット通信では最初の一歩(ルータへの送信)でARPが使われるということです。

ARPに関するセキュリティとトラブルシューティング

ARPスプーフィング(ARP spoofing)

ARPは非常に便利な仕組みですが、セキュリティ上の弱点も持っています。
その一つがARPスプーフィングと呼ばれる攻撃です。

ARPスプーフィングとは、偽のARPリプライを送信して、他のコンピュータのARPテーブルを書き換える攻撃です。
これにより、通信内容を盗み見たり、改ざんしたりすることが可能になります。

例えば、攻撃者が「自分がルータです」という偽のARPリプライを送信すると、被害者のコンピュータは攻撃者にデータを送ってしまいます。
攻撃者はそのデータを盗み見た後、本物のルータに転送することで、通信を継続させることができるのです。

対策方法

ARPスプーフィング対策としては、以下のような方法があります。

  • 静的ARPエントリの設定 - 重要な機器のARPエントリを手動で固定します
  • ARPスプーフィング検知ツールの使用 - ネットワーク監視ツールで不正なARP通信を検知します
  • スイッチのセキュリティ機能 - ポートセキュリティやDHCPスヌーピングなどを有効化します

よくあるARPのトラブルと解決法

ネットワーク通信で問題が発生した際、ARPが原因となっていることがあります。

トラブル① ARPキャッシュの古い情報

症状: 以前は通信できていたのに、突然通信できなくなった

原因: ARPテーブルに古い(間違った)MACアドレスが残っている

解決法: ARPキャッシュをクリアする

# Windowsの場合
arp -d

# macOS / Linuxの場合
sudo ip neigh flush all

トラブル② ARPテーブルが満杯

症状: 新しい機器と通信できない

原因: ARPテーブルのエントリ数が上限に達している

解決法: 不要なエントリを削除するか、システムを再起動する

トラブル③ IPアドレスの重複

症状: 通信が不安定になったり、接続できなくなったりする

原因: 同じIPアドレスを持つ機器が複数存在し、ARPの応答が混乱している

解決法: IPアドレスの重複を解消し、各機器に固有のIPアドレスを割り当てる

まとめ

リンドくん

リンドくん

ARPって、普段意識しないけど、とても重要な仕組みなんですね!

たなべ

たなべ

その通り!ネットワーク通信の基礎中の基礎だから、エンジニアを目指すならしっかり理解しておくことが大切なんだ。今日学んだことを、ぜひ実際に試してみてね。

この記事では、ARPとMACアドレス解決プロセスについて、基礎から詳しく解説してきました。
最後に、重要なポイントをおさらいしましょう。

ARPの役割

  • IPアドレスからMACアドレスを調べるためのプロトコルです
  • ローカルネットワーク内での通信に不可欠な仕組みです

ARPの動作プロセス

  • ARPリクエストをブロードキャストで送信します
  • 該当する機器がARPリプライで応答します
  • 取得した情報をARPテーブルに保存して効率化します

実用的な知識

  • arp -aコマンドでARPテーブルを確認できます
  • ARPキャッシュのクリアでトラブル解決できることがあります
  • セキュリティ面での注意も必要です

ネットワーク技術は、実際に触れてみることで理解が深まります。
今回学んだARPの知識を土台に、さらに学習を進めていきましょう!

この記事をシェア

関連するコンテンツ