GARP
GARP(Gratuitous ARP)はARPパケットの1つであり、以下の2つの役割を持っているプロトコルです。 ① 自分自身に設定するIPアドレスが重複していないかどうかを検出
② 同一セグメントのネットワーク機器上のARPキャッシュを更新させる
GARPとは、自分自身に設定するIPアドレスに対するARPのことです。通常のARPでは宛先のIPアドレスに
対して宛先のMACアドレスを得ようとしますが、GARPでは自身のIPアドレスに対して自身のMACアドレス
を得ようとします。自身のMACアドレスは知っているはずなのに、なぜ、自身のIPアドレスに対してARPを
行うのかは、上記の2つの役割を実現するためです。
ARPは、IPアドレスに対応するMACアドレスを知るためのプロトコル。
通常のARP
ARP request
通信したい相手ノードのIPアドレスを送信する。MACアドレスは不明な状態(00.00.00.00.00.00)。
「通信したい相手ノードのIPアドレス」は、自分の上位層(IP層以上)から指定される。
ARP reply
IPアドレスに対応するノードから送信されるMACアドレスを受信する。
通信相手のMACアドレスとIPアドレスを入手できた
この情報でARPテーブルを更新する
IPを使用した通信が可能になる
GARP
GARP request
自分のIPアドレスを送信する。MACアドレスは(わかっているけど)不明な状態
GARP reply
もし自分以外のノードからのreplyを受信した場合、IPアドレス重複を検知したことになる
自分のIPアドレスを変更することで、IPアドレス重複を解消する
例
自分と同等の機能を持つサーバーのIPアドレスに切り替える
もし自分以外のどのノードからもreplyがない場合は、IPアドレス重複なしが確認できたことになる
自分のMACアドレスを持ってreplyを送信する
ARPは同一セグメントにブロードキャストされるので、セグメント内の全ノードのARPテーブルが更新される。
そのため、replyをブロードキャストで送信する
Windows Server 2012 や Windows 8 以降では、デフォルトの動作でアドレス重複確認のためのARPとGARPを送信します。