「ARP」という言葉はネットワークの学習を進めると必ず登場する重要なプロトコルのひとつです。
しかしブロードキャストやMACアドレスとの関係など、仕組みを詳しく説明しようとすると難しいと感じる方も多いでしょう。
本記事では、ARPの仕組みと役割を、ブロードキャスト・リクエスト・パケットの流れを交えてわかりやすく解説します。
ネットワーク通信の基礎を固めたい方や、資格学習中の方にもきっと役立つ内容でしょう。
ARPを正しく理解することで、ネットワークトラブルの原因調査や設計の理解にも大いに役立てられます。
ARPとは「IPアドレスからMACアドレスを解決するプロトコル」のこと
それではまず、ARPの基本的な意味と役割について解説していきます。
ARP(Address Resolution Protocol)とは、ネットワーク層のIPアドレスからデータリンク層のMACアドレスを取得・解決するためのプロトコルです。
コンピュータがネットワーク上で通信を行う際、相手のIPアドレスはわかっていても、実際にフレームを送信するためには相手のMACアドレスが必要になります。
このIPアドレスとMACアドレスの「橋渡し」を担うのがARPの役割でしょう。
1982年にRFC 826として標準化されており、今日のネットワーク通信においても欠かせない基盤プロトコルとなっています。
ARPはOSI参照モデルのネットワーク層(レイヤー3)とデータリンク層(レイヤー2)の間をつなぐプロトコルとして位置づけられます。IPアドレスだけでは実際のフレーム送信ができないため、ARPによるMACアドレスの解決が必要不可欠です。
IPアドレスとMACアドレスの違い
ARPを理解するうえで、IPアドレスとMACアドレスの違いを把握しておくことが重要です。
| 項目 | IPアドレス | MACアドレス |
|---|---|---|
| 役割 | ネットワーク上の論理的な住所 | 機器固有の物理的な識別子 |
| 層 | ネットワーク層(レイヤー3) | データリンク層(レイヤー2) |
| 変更 | 設定により変更可能 | 原則として固定(製造時に付与) |
| 形式 | 192.168.1.1など(IPv4) | 00:1A:2B:3C:4D:5Eなど |
実際にデータを送受信するにはMACアドレスが必要なため、IPアドレスしかわからない場合にARPで解決する仕組みが機能するでしょう。
ARPが必要になる場面
ARPが動作するのは、主に同一ネットワーク(サブネット)内で通信が発生するときです。
たとえばPCがプリンターへデータを送ろうとする際、プリンターのIPアドレスはわかっていても、フレームを送るためのMACアドレスが不明な状態ではパケットを届けられません。
このような「IPはわかるがMACがわからない」状況を解決するためにARPリクエストが送信されるでしょう。
ARPのリクエストとリプライの流れ
続いては、ARPリクエストとARPリプライの具体的な流れを確認していきます。
ブロードキャストとユニキャストの違いも含めて理解することで、ARPの動作がより明確になるでしょう。
ARPリクエストの送信(ブロードキャスト)
ARPリクエストは、ネットワーク内のすべての機器に向けて送信されるブロードキャストパケットです。
送信元の機器は「このIPアドレスを持っているのは誰ですか?」という問い合わせを、同一ネットワーク上の全機器へ一斉に送ります。
宛先MACアドレスには「FF:FF:FF:FF:FF:FF」というブロードキャストアドレスが使用されるでしょう。
【ARPリクエストの内容例】
送信元IP:192.168.1.10
送信元MAC:AA:BB:CC:DD:EE:FF
宛先IP:192.168.1.20(問い合わせ対象)
宛先MAC:FF:FF:FF:FF:FF:FF(ブロードキャスト)
同一ネットワーク上のすべての機器がこのリクエストを受け取りますが、対象のIPアドレスを持つ機器のみが応答します。
ARPリプライの返信(ユニキャスト)
ARPリクエストを受け取った機器の中で、問い合わせのIPアドレスを持つ機器だけがARPリプライを返します。
ARPリプライはユニキャストで送信され、リクエストを送った機器に直接MACアドレスを通知します。
リプライを受け取った機器は、取得したMACアドレスをARPテーブル(ARPキャッシュ)に記録し、以降の通信に利用するでしょう。
ARPの通信フロー全体像
① 端末AがIPアドレス「192.168.1.20」へ通信したいがMACアドレスが不明
② 端末AがARPリクエスト(ブロードキャスト)をネットワーク全体に送信
③ IPアドレス「192.168.1.20」を持つ端末BがARPリプライ(ユニキャスト)を返信
④ 端末AがMACアドレスをARPテーブルに記録
⑤ 端末Aが取得したMACアドレスを使って端末Bへフレームを送信
この一連の流れが数ミリ秒単位で自動的に行われるため、ユーザーはARPの存在を意識することなくネットワーク通信を利用できているでしょう。
ARPパケットの構造
続いては、ARPパケットがどのような情報を持っているかを確認していきます。
パケットの構造を理解することで、Wiresharkなどのキャプチャツールでの分析にも役立つでしょう。
ARPパケットの主なフィールド
| フィールド名 | 内容 |
|---|---|
| ハードウェアタイプ | ネットワークの種類(イーサネットなら「1」) |
| プロトコルタイプ | 使用するプロトコル(IPv4なら「0x0800」) |
| オペレーションコード | リクエスト(1)かリプライ(2)かを示す |
| 送信元MACアドレス | リクエスト送信元の物理アドレス |
| 送信元IPアドレス | リクエスト送信元の論理アドレス |
| 宛先MACアドレス | リクエスト時は「00:00:00:00:00:00」 |
| 宛先IPアドレス | MACアドレスを問い合わせる対象のIP |
オペレーションコードの値によってリクエストとリプライを区別できるため、パケットキャプチャの際にはこの値を確認すると通信の流れが把握しやすくなるでしょう。
Gratuitous ARP(無償ARP)とは
Gratuitous ARP(グラチュイタス ARP)とは、自分自身のIPアドレスに対してARPリクエストを送信する特殊な動作を指します。
IPアドレスの重複確認や、ARPテーブルの更新通知などの目的で使われます。
一方でARPポイズニング攻撃にも悪用されるケースがあるため、セキュリティの観点からも把握しておくべき動作でしょう。
ARPに関連する重要な概念
続いては、ARPと合わせて知っておきたい関連概念を確認していきます。
これらを理解しておくことで、ネットワーク全体の仕組みをより深く把握できるでしょう。
ARPテーブル(ARPキャッシュ)
ARPリプライで取得したIPアドレスとMACアドレスの対応情報は、ARPテーブル(ARPキャッシュ)と呼ばれる一時的なテーブルに保存されます。
同じ相手への通信が発生した際にARPリクエストを再送しなくて済むため、ネットワークの効率化に貢献しています。
ARPテーブルのエントリは一定時間が経過すると自動的に削除され、次回通信時に再取得される仕組みになっているでしょう。
RARP(Reverse ARP)との違い
ARPとは逆に、MACアドレスからIPアドレスを解決するプロトコルをRARP(Reverse ARP)と呼びます。
かつてIPアドレスを持たない端末が起動時にIPアドレスを取得する用途で使われていましたが、現在はDHCPに置き換えられており、ほとんど使われていません。
ARPとRARPの関係を知っておくと、アドレス解決の仕組み全体の理解がより深まるでしょう。
IPv6におけるARPの後継
IPv6ではARPは使用されず、代わりにNDP(Neighbor Discovery Protocol:近隣探索プロトコル)がアドレス解決を担います。
NDPはICMPv6をベースとしており、ARPよりも高機能で安全性が向上しています。
IPv6環境への移行が進む中で、NDPの基本的な役割を理解しておくことも今後重要になるでしょう。
まとめ
本記事では、ARPの仕組みと役割について、ブロードキャスト・リクエスト・パケット構造・関連概念を交えながら解説しました。
ARPとはIPアドレスからMACアドレスを解決するプロトコルで、同一ネットワーク内の通信に欠かせない役割を担っています。
ブロードキャストでARPリクエストを送信し、対象機器からユニキャストでARPリプライを受け取ることでMACアドレスを取得し、ARPテーブルに記録するという流れが基本動作でしょう。
ARPポイズニングなどの攻撃への理解を深めるためにも、ARPの基本的な仕組みをしっかり把握しておくことが大切です。
本記事がARPへの理解を深め、ネットワーク学習や実務に役立てば幸いです。