ARPは聞いたことあるけど、RARPとGARPが出てきた瞬間に「あれ、どっちがどっち?」ってなるやつです。
しかもGARPは文脈によって意味が変わるので、調べるほど混乱しがち。
この記事では、“何を・どっち向きに・何のために” を軸に、ARP/RARP/GARPの違いをスッキリ整理します。

ARPを30秒で理解
ARPが解く課題(IP→MAC)
ARPの仕組みと「ARPテーブル」の意味
ARP(アープ)は、ざっくり言うと 「IPアドレスからMACアドレスを調べる仕組み」 です。
IPアドレスはネットワーク上の“住所”みたいなもので、PCやスマホは通信する時にまず相手のIPアドレスを見ます。
ところが、同じ家(同じLAN)の中でデータを実際に運ぶ時は、IPだけではなく MACアドレス(機械の名札みたいな番号) が必要になります。
そこでARPの出番です。
ARPの目的は「IPのようなプロトコルアドレスを、Ethernetのようなローカルネットワークアドレスに変換する事」と説明されています。
動き方はシンプルです。
例えば、あなたのPCが「192.168.1.50(相手のIP)に送りたい」と思った時、相手のMACアドレスが分からなければ送れません。
そこでPCは、同じLAN内に向けて ブロードキャスト(みんなに聞こえる放送) で「192.168.1.50って誰? MACアドレス教えて」と問い合わせます。
該当する機器が「私だよ。MACはこれ」と返事を返します。
この対応関係(IP ↔ MAC)を、機器はしばらく覚えておきます。
そのメモ帳が ARPテーブル(ARPキャッシュ) です。
この「覚えておく」が凄く大事です。
毎回ブロードキャストしたらネットワークがうるさくなるので、機器は一度学んだMACをしばらく使い回します。
Ciscoの資料でも、送る前にARPキャッシュを見て、無ければブロードキャストして調べる流れが説明されています。
ただし、ARPテーブルが古くなるとトラブルが起きます。
例えば、同じIPを別の機器が使ってしまったり、機器が入れ替わってMACが変わったりすると、古い情報を信じたまま送ってしまって届かない事があります。
なので、ARPは「仕組みを知る」だけでなく、「テーブルを疑う」視点も持つと強いです。
RARPを30秒で理解
RARPが解く課題(MAC→IP)
RARPは“昔の自動IP取得”で、今はほぼ出番なし
RARP(ラープ)は、ARPの逆で 「MACアドレスからIPアドレスを教えてもらう仕組み」 です。
昔は、ハードディスクが無い端末(ディスクレス端末)の様に、自分のIPアドレスを保存出来ない機械がありました。
そういう機械は起動しても「自分のIPが分からない」ので、ネットワークに出られません。
そこでRARPでは、端末が自分のMACアドレスを手がかりにして「このMACのIPって何?」とネットワークに問い合わせ、RARPサーバがIPアドレスを返す、という考え方でした。
RFC 903でも「ハードウェアアドレスしか分からない端末が、自分のプロトコルアドレス(例:インターネットアドレス)を動的に見つける方法」と説明されています。
でも、RARPには弱点がありました。
- サーバ側が MAC→IPの対応表 を管理しないといけない(運用が大変)
- 基本的に IPアドレスしか配れない(DNSやゲートウェイなどの設定が渡せない)
そのため、もっと便利に色々設定を配れる BOOTPやDHCP が広まり、RARPは「今の主役」ではなくなりました。
RARPがobsolete(ほぼ使われない)で、DHCPなどに置き換えられた事も説明されています。
結論としては、RARPはテストや用語として出る事はあるけど、現場で触る機会は少ない、という立ち位置です。
GARP(Gratuitous ARP)を理解
なぜ“自分宛てARP”を投げるのか
GARPは「調べる」より「知らせる」ためのARP
ここでのGARPは、多くのネットワークの会話で出る Gratuitous ARP(グラチュイタスARP) の事です。
意味はざっくり 「頼まれてないのに勝手にARPを投げる」 です。
特に多いのは、機器が 自分のIPアドレスについて ARPをブロードキャストで投げるパターンです。
Juniperの説明でも、gratuitous ARPは「ルータ自身のIPに対するブロードキャスト要求」で、重複IPの検知に役立つ、と書かれています。
じゃあ、何のためにやるの?目的は主に2つです。
1)重複IP(同じIPを2人が使っちゃう事故)の気づき
自分のIPで「このIP使ってる人いる?」みたいにARPを投げて、もし返事が来たら「誰かが同じIPを使ってるかも」と疑えます。
ただし、これで必ず100%見つけられるわけではありません。
IETFのRFC 5227でも、gratuitous ARPは重複検知として完全ではない、という趣旨の説明があります。
なので「ヒントにはなるけど万能ではない」と覚えるのが安全です。
2)周りの機械に“最新情報”を配る(テーブル更新)
もう1つが超重要で、現場でよく出るのがこっちです。
たとえば冗長構成(予備機がいて、切り替えで担当が入れ替わる仕組み)だと、同じIPを別の機器が引き継ぐ事があります。
この時周りの機器が古いARPテーブルを持っていると、切り替え直後に通信が迷子になります。
そこでGARPを投げて 「このIPは今このMACだよ!」 と周りに知らせ、ARPテーブルの更新を促します。
GARPがARPテーブルやMACアドレステーブルの更新などに使われる、という整理もあります。
つまりGARPは、普通のARPみたいに「相手を探す」より、「周りに通知して整える」 役目が強い、というのがポイントです。
ARP/RARP/GARPの違い早見表
目的・方向・登場シーンで比較
3つの違いは「向き」「目的」「今使うか」で決まる
混乱しやすい理由は、全部「IPとMACが出てくる」からです。
なので、見分けはこの3つだけでOKです。
- 向き(どっちからどっちへ?)
- ARP:IP → MAC(相手のMACを知りたい)
- RARP:MAC → IP(自分のIPを知りたい)
- GARP(Gratuitous):自分のIPの情報を周りに“知らせる/更新させる”
- 目的(何を解決する?)
- ARP:LAN内で通信するための基本の変換
- RARP:昔の「起動時にIPをもらう」
- GARP:重複IPの気づき、切替時のテーブル更新
- 今もよく使う?
- ARP:現役(IPv4では必須)
- RARP:ほぼ過去(DHCPに置き換え)
- GARP:現役(運用・冗長構成で重要)
ここまでを押さえると、「単語を暗記しなくても」見分けられます。
【最重要】GARPは2種類ある(混同ポイント)
Gratuitous ARP と Generic Attribute Registration Protocol
IPの話ならGratuitous、VLANの話なら別のGARP
GARPがややこしい最大の理由は、GARPという略語が“別の意味”でも使われる事です。
1つ目は今まで説明してきた Gratuitous ARP(ARPの話)。
2つ目はスイッチの世界で出る Generic Attribute Registration Protocol(こちらも略してGARP) です。
見分け方はめちゃくちゃ簡単で、会話の中に何が出てくるかで判断出来ます。
- IP、重複IP、ARPキャッシュ、冗長切替 が話題 → ほぼ「Gratuitous ARP」のGARP
- VLAN、スイッチ、GVRP/MVRP、登録(registration) が話題 → 「Generic Attribute…」のGARP
Ciscoの資料では、VLAN情報をやりとりするGVRPは GARP(Generic Attribute Registration Protocol)に基づく と説明されています。
さらにIEEEの説明では、GARPをMRPに置き換える(改善する)流れが示されています。
なので「GARPって何?」と聞かれたら、まずは一言、
「ARPのGARP? それともVLANのGARP?」
と確認出来ると、かなり仕事が出来る人になります。
現場で役立つ確認コマンド&対処
ARPテーブル確認・重複IP・切替時
トラブルは「誰がどのMACを覚えてるか」を見る
現場で役に立つのは、難しい理論よりも 「今、どの機械が何を覚えてるか」 を見る事です。
通信が急におかしくなった時、原因が「ルーティング」じゃなくて「ARPテーブルの古さ」だった、というのは普通にあります。
Ciscoの資料でも、ARPキャッシュ(ARPテーブル)に情報が無ければブロードキャストで探す、という前提で話が進みます。
まずは端末でARPテーブルを確認します(例)。
# Windows
arp -a
# Linux(代表例)
ip neigh
ここで見るポイントは「相手のIPに対して、どのMACが入っているか」です。
もしここが間違っていると、正しい相手に届きません。
次に、冗長切替(Active/Standby)やVMの移動などが絡む場面では、GARP(Gratuitous ARP)が飛んでいるかが大事になります。
GARPは「自分のIPに対するブロードキャスト要求」で、重複IP検知にも使える、とJuniperが説明しています。
また、周りの機器がGARPを受け取ってARPキャッシュを更新するかどうかは、機器や設定にもよります(ベンダのドキュメントで設定項目として扱われます)。
要するに、切替直後に一瞬つながらないときは「GARPで周りの記憶を更新出来ているか」を疑う、これだけで原因に近づき易いです。
今使う代替・関連技術まとめ
DHCP/BOOTP、IPv6のND、MRP(MVRP)
「今のネットワーク」では役割がこう分かれる
最後に「今の世界」での整理です。
- RARPの代わり
RARPは「MACしか分からない端末がIPを教えてもらう」仕組みでしたが、今はDHCPが一般的です。RARPはobsoleteで、BOOTP/DHCPに置き換えられたことが説明されています。 - IPv6ではARPの代わりにND
IPv6ではARPではなく、Neighbor Discovery(ND)という仕組みで「近くの相手の存在確認」や「リンク層アドレスの発見」をします。RFC 4861でも、同じリンク上のノードがNDで相手のリンク層アドレスを見付けると書かれています。
Juniperの説明でも、IPv6ではNDがARPなどを置き換える、という整理がされています。 - スイッチ側の“別のGARP”はMRPへ
VLANの話で出るGARP(Generic Attribute…)は、より良い仕組みとしてMRPに置き換える流れがあり、IEEEのページでもその方向性が示されています。
ここまでで、「arp / rarp / garp の違い」は次の一文で言えるようになります。
ARP=IP→MACを調べる、RARP=昔のMAC→IP、GARP(Gratuitous)=周りに知らせて更新する(ただしGARPはVLANの別物もある)。
まとめ
ARP/RARP/GARPの違いは、「何を知りたいのか(向き)」と「何のために使うのか(目的)」で整理すると迷いません。
まず ARP は、同じLAN(同じ教室みたいな近いネットワーク)の中で通信する時に使う基本の仕組みです。
やりたい事は 「IPアドレス(住所)からMACアドレス(機械の名札)を調べる」 事。
IPだけ分かっても、実際にデータを届けるにはMACが必要なので、ARPで対応するMACを見付けます。
ARPの目的は「IPのようなプロトコルの住所を、Ethernetのような近くのネットワークの住所に変換する方法を示す事」と説明されています。
次に RARP はARPの逆で、「MACアドレスから自分のIPアドレスを教えてもらう」 ための仕組みでした。
昔、設定を保存出来ない端末などが、起動した直後に「自分のIPが分からない」問題を解決するために考えられたものです。
RFCでも「ハードウェアアドレス(MAC)しか分からない時に、プロトコルアドレス(IP)を動的に見つける方法」と説明されています。
ただ、RARPは配れる情報が少なく、今は DHCPなどの仕組みに置き換えられて、ほぼ使われない とされています。
そして多くの人が混乱する GARP は、普通(TCP/IPの会話では) Gratuitous ARP の意味で使われる事が多いです。
これは「相手を探すARP」というより、周りに知らせて更新するARP です。
例えば自分のIPについてARPをブロードキャストで投げて、
- 同じIPを使っている人がいないか(重複IPのチェック)
- 冗長構成の切り替え後に、周りの機器の覚え(ARPキャッシュ)を更新させる
といった目的で使われます。Juniperの説明でも、gratuitous ARPは「自分のIPに対するブロードキャスト要求」で、重複IP検知に役立つと書かれています。
最後に超重要な注意点として、GARPは“別の意味”でも使われます。
スイッチやVLANの文脈だと、GARPは Generic Attribute Registration Protocol の事があり、GVRP(VLAN情報を交換する仕組み)がその上で動く、とCiscoの資料に明記されています。
なので、会話に IP・ARPキャッシュ・冗長切替 が出たら「Gratuitous ARPのGARP」、VLAN・スイッチ・GVRP が出たら「別物のGARP」と判断すると安全です。
コメント