リンドくんたなべ先生、ネットワークの勉強をしてるんですけど、ARPって何ですか?
IPアドレスとMACアドレスが関係してるみたいなんですが...
たなべARPはAddress Resolution Protocolの略で、簡単に言うと「IPアドレスからMACアドレスを調べるための仕組み」なんだ。
ネットワーク通信では実はとても重要な役割を果たしているんだよ。
ネットワーク通信に欠かせないアドレス解決の仕組み
インターネットや社内ネットワークでコンピュータ同士が通信する際、実は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 -amacOS / 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)にアクセスする場合を考えてみましょう。
-
HTTPリクエストの準備 - ブラウザが「http://192.168.1.50」にアクセスしようとします
-
MACアドレスの確認 - システムはまず自分のARPテーブルを確認し、192.168.1.50のMACアドレスが登録されているかチェックします
-
ARPリクエストの送信(未登録の場合) - MACアドレスが分からなければ、ARPリクエストをブロードキャストします
- 「192.168.1.50のMACアドレスを教えてください!」
-
ARPリプライの受信 - Webサーバが自分のMACアドレス(例: AA:BB:CC:DD:EE:FF)を返信します
-
データ送信 - 取得したMACアドレスを使って、HTTPリクエストをWebサーバに送信します
このプロセス全体は、ほんの数ミリ秒で完了します。自分たちが意識することはほとんどありませんが、裏側ではこのような処理が行われているのです。
実例② 別のネットワークへの通信
同じネットワーク内ではなく、インターネット上のサーバ(例: www.example.com)にアクセスする場合はどうでしょうか?
この場合、直接相手のMACアドレスを調べることはできません。なぜなら、インターネット上の遠く離れたサーバは、同じローカルネットワーク内にいないからです。
そこで、以下のようなプロセスになります。
-
ゲートウェイ(ルータ)のMACアドレスを調べる - ARPを使って、自分のネットワークの出口であるルータのMACアドレスを取得します
-
ルータにデータを送信 - ルータのMACアドレス宛にデータを送り、後はルータに任せます
-
ルータが中継 - ルータがインターネット上でデータを次の中継地点に転送していきます
つまり、ローカルネットワーク内での通信には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の知識を土台に、さらに学習を進めていきましょう!





