GARP (Gratuitous ARP) とはARPパケットの1つで、主に「自分のIPアドレスが他の機器と重複していないかどうか」を確かめるために用いられる通信プロトコルです。

このページではネットワーク初心者向けにGARPとは何か?そもそもARPって何?という疑問をお持ちの方に1からわかりやすくGARPを解説します。
ネットワークエンジニアを目指す方であれば知らないと恥ずかしい基本知識の1つです。是非最後までご覧ください。
【前提】ARPとは?

GARP (Gratuitous ARP) を正確に理解するには、前提としてARPについての理解が必須。
そもそもARPとは何か?ARPはどのようなときに利用されるのか?を簡単に復習しておきます。
ARP (Address Resolution Protocol) とは、 IPアドレスからMACアドレスを取得するためのプロトコルです。
IPアドレスはインターネットを通してコンピュータとコンピュータが通信を行うために必要な「インターネット上の住所」のようなものなので、IPアドレスが設定されていないコンピュータとは情報の交換が行えません。

また、コンピュータ同士の通信においては最終目的地を示すIPアドレスだけではなく、LANケーブルや無線などで直接接続されたコンピュータについての情報も必要となります。これがMACアドレスです。

ケーブルで直接接続された機器同士の通信では、IPアドレスではなくMACアドレスを用いるということ。
したがって、インターネット通信を行う際にはIPアドレスとMACアドレス、この2つの情報がどちらも必要になるということです。

ARPは「データを届けたいコンピュータのIPアドレスは分かっているが、MACアドレスがわからない・・・。」という場合に用いられるプロトコルです。

ARPでは、初めにARPリクエストというパケットをネットワーク内のすべてのコンピュータ機器に送付。


その後、指定されたIPアドレスを保持するコンピュータは自身のMACアドレスをARPリプライという形で返答することにより、IPアドレスからMACアドレスを取得することが可能になります。

GARPとは?
GARPとは Gratuitous ARP の略で「自分のIPアドレスに対するMACアドレスを知りたい」というARPパケットを指します。
そもそもMACアドレスは常に自分自身が知っている情報なので、わざわざ「自分のMACアドレスを教えてくれ」というパケットを流すこと自体意味不明です。

Gratuitousという単語自体も「不要な」「いわれのない」といった意味を持ちます。
では、なぜこのようなパケットが必要になるのか?
GARPは以下のような場面で利用されます。
GARP①:同一ネットワーク内のIPアドレス重複を検知
GARPは、同一のネットワーク内でIPアドレスの重複が発生していないか?を検知するために利用されます。

ここでは、ネットワークに新しいコンピュータを接続する場合を考えてみます。

ネットワークにコンピュータを新たに接続する際には、必ずそのネットワーク内で一意となるようなIPアドレスをコンピュータに設定する必要があります。

IPアドレスの割り当ては普通はDHCP (Dynamic Host Configuration Protocol) と呼ばれる通信プロトコルによって行われます。

もし、このときIPアドレスがほかの機器と重複してしまうとネットワーク内での通信が正常に行えません。
それを回避するためにIPアドレスの割り当てを受けたコンピュータはネットワーク内に存在するすべての機器にARPリクエストを送付(=ブロードキャスト)します。
参考 ブロードキャストとは?


ですが、そのIPアドレス「192.168.100.1」は自分に割り当てられているので、当然答えは返ってくることはないはずです。
このとき、他のコンピュータからARPリプライがなければ、同一のIPアドレスが設定されているコンピュータは存在しないということになります。
ですが、他の機器からARPリプライが返ってくる場合は、同じIPアドレスを持つコンピュータが他にも存在するということに。

GARPを利用することでIPアドレスの重複を検知できることがわかります。
もしIPアドレスが重複していることがわかれば、DHCPによるIPアドレスの設定は取り消されるという仕組みです。

DHCPを合わせて学習したい!という方は以下の記事をご覧ください。
GARP②:ARPキャッシュの更新
GARPにはARPキャッシュの更新という役割もあります。
通常、パケット通信では一度送った相手のコンピュータにはその後も続けて何度かパケットを送ることになります。その都度、ARPを利用してIPアドレスからMACアドレスを取得するのは効率的ではありません。

そのため、ARPによって取得したMACアドレスは数分間キャッシュされる仕組みになっています。ARPキャッシュは以下のように、IPアドレスからMACアドレスの対応表が一覧で並ぶためARPテーブル (MACテーブル) とも呼ばれます。

ARPキャッシュは一定の期間で削除・更新される仕組みですが、例えば以下のようにルータを冗長化して利用するような場合に障害が発生した場合はすぐにARPキャッシュを更新する必要があります。
①:ルータに障害が発生


ARPキャッシュを更新しないといつまでも同じルータに対してデータを転送し続けてしまいます。そこで、スタンバイしていたルータはGARPパケットを送付します。
②:GARPパケットの送付

③:ARPキャッシュの更新

GARPパケット(IPアドレスと新しいMACアドレスの対応表)を受け取ったコンピュータは自身のARPキャッシュを更新します。

このようにすることで有効なルータに対してデータ通信を開始することができるようになるという仕組みです。

ネットワークエンジニアを目指す方は
コンピュータとコンピュータはどのように通信をしているのか?インターネットはどのような仕組みで構成されているのか?

ネットワークの基礎を1から学習したい方(=ネットワークエンジニアを目指す方)は、以下の書籍が非常におすすめ。
日常生活で例えた説明や豊富な図解付きでIT初心者でも分かりやすく理解することができます。
ただし、ページ数も多くさくっと手軽に読める内容ではありません。しかしながら、ネットワークエンジニアを目指す場合、ほぼ全員が一度は読んだことがある書籍なので是非一度読破しておきたい1冊

ネットワークエンジニアを目指す方ではなくても、ネットワークの知識がある/なしで今後のキャリアプランに大きく影響します。1度手に取ってみてはいかがでしょうか?
またシステムエンジニアを目指す方や、IT知識を1から身につけたい方は以下のページをご覧ください。
正直どこから学び始めればよいかわからない。どのように勉強していけば、エンジニアとしてのスキルが磨けるか?が分からない・・・という方は必見です。
システムエンジニア向けに「できるエンジニア」になる方法を1から解説しておりますので、是非ご覧ください。

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