ARP (Address Resolution Protocol) は、IPアドレスからMACアドレスの情報を取得するためのプロトコルです。
このページでは、ネットワーク初心者向けにARPって何?何のために存在するの?ARPがないとどうなる?ARPの具体的な仕組みは?といった疑問に分かりやすくお答えします。

IPアドレスとMACアドレスって何だっけ・・・?IPアドレスとMACアドレスの違いは・・・?という方もご安心ください。1つ1つ丁寧に解説していきます。
ネットワークエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識です。是非最後までご覧ください。
ARPとは?(Address Resolution Protocol)
ARPとは、 IPアドレスからMACアドレスの情報を取得するためのプロトコルです。

ARP(Address Resolution Protocol)は「アープ」と読みます。
プロトコルとはコンピュータとコンピュータがネットワークを通して通信する際に決められた約束事・決まりのこと。
普段の日常会話でも事前にプロトコルが決まっているから会話が成り立っていると言えます。ネットワークの世界でも同じで、異なるコンピュータ同士が適切に通信を行うためにはプロトコルが必要になります。

なぜARPが必要になるのか?
なぜARP(=IPアドレスからMACアドレスを取得すること)が必要になるのでしょうか。ここで、コンピュータ同士が通信する際の仕組みをおさらいしていきます。
まず、インターネット上で特定のコンピュータにデータを届けるにはIPアドレスが必要になります。IPアドレスはインターネット上における「住所」のような役割を果たします。

ですが、IPアドレスだけでは目的とするコンピュータにデータを送り届けることはできません。
IPアドレスはインターネット上のどのコンピュータと通信するのか?を規定するものの、LANで直接接続されているコンピュータとの通信については規定していません。


言い換えればIPアドレスはOSI参照モデルの第3層:ネットワーク層での規定であって、第2層:データリンク層における規定ではない―。つまりデータリンクにおける通信では、MACアドレスが分からない場合は通信できないということです。
このような場合(=宛先IPアドレスは分かるがMACアドレスが分からない場合)に登場するのが、 ARP (Address Resolution Protocol) です。
ARP (Address Resolution Protocol) の仕組み
ARPの仕組みは非常に簡単。
MACアドレスを教えて!という要求を出すARPリクエストとそれへの応答のARPリプライの2つのパケットを使用する仕組みです。
ARPリクエスト(ARP要求)
ARPでは、まずローカルネットワーク内(データリンク内)にARPリクエスト(ARP要求)をブロードキャストします。

ブロードキャストとは、接続されている全てのコンピュータにデータを転送するという意味です。

ARPリプライ(ARP応答)
ARPリクエストは全てのコンピュータに配信されますが、このとき自分のIPアドレスと一致しない要求が来た場合は無視します。
逆に、ARPリクエストの内容が自分のIPアドレスと一致する場合は要求元のコンピュータにARPリプライ(ARP応答)を返します。

ARPリプライを受け取った要求元のコンピュータは、IPアドレス「192.168.100.1」のコンピュータのMACアドレスを知ることが可能になる、という仕組みです。

ただし、このような処理をデータ転送のたびに行っていたのでは動作が非常に遅くなります。そこで、ARPではARPキャッシュという仕組みを備えています。
最後にARPキャッシュについて解説します。
ARPキャッシュ(ARPテーブル)
通常、パケット通信では一度送った相手のコンピュータにはその後も続けて何度かパケットを送ることになります。その都度、ARPを利用してIPアドレスからMACアドレスを取得するのは効率的ではありません。
そのため、ARPによって取得したMACアドレスは数分間キャッシュされる仕組みになっています。こうすることで通信量を削減しパフォーマンスを改善しています。

キャッシュとは、メモリなどに一時的に記憶しておくということ。人間にとっての「メモ」みたいなものだと考えてOKです。
IPアドレスとMACアドレスの対応関係を記憶するテーブルをARPテーブルと呼びます。
コマンドプロンプトで「arp -a」と打つことで今自分のコンピュータに記憶されているIPアドレスとMACアドレスの対応表を確認することが可能です。
インターネット アドレス 物理アドレス 種類 192.168.0.1 99-99-77-66-55-44 動的 192.168.0.2 fF-AA-aa-aa-bb-dd 動的 192.168.0.3 12-34-56-78-91-00 動的 255.255.255.255 ff-ff-ff-ff-ff-ff 静的

ARPテーブルはあくまでも一時的なデータベースであるため一定期間がすぎると内容は削除されます。
IPアドレスは動的に設定可能なので、IPアドレスとMACアドレスの対応表が変わる可能性があり、永遠に記憶してしまうといつかバグが発生してしまうためです。
ネットワークエンジニアを目指したい方は
ネットワークの基礎を1から学びたい方はこちらの書籍を購入してがっつり学びましょう!
さくっと手軽に読める内容ではないのですが、ネットワークエンジニアを目指すのであれば理解できないと厳しい参考書の1つ。

ネットワークエンジニアでなくても、インフラ系の知識を持っているエンジニアの市場価値は年々高まっています!
ITを1から学びなおしたい方は
システムエンジニアを目指す方や、IT知識を1から身につけたい方は以下のページをご覧ください。
正直どこから学び始めればよいかわからない。どのように勉強していけば、エンジニアとしてのスキルが磨けるか?が分からない・・・という方は必見です。
システムエンジニア向けに「できるエンジニア」になる方法を1から解説しておりますので、是非ご覧ください。

無料で読めるようにしてあります。累計12万人に参考にしていただきました!