hosochinの技術ブログ

【ネスペ対策】【ARP】ARP/GARP/RARPについて

はじめに

お世話になります、hosochinです
今回はIPAのネットワークスペシャリスト対策ってことでARPについてです

目次

ARPとは

ARP = Address Resolution Protocol はIPアドレスからMACアドレスを取得するプロトコルです

例をあげてみます
PC1からPC2に通信したいとします
PC1は送信先のIPアドレスが分かっていますが、イーサネットフレームを送信するにはMACアドレスが必要になります
そこでPC1はARP要求を行い、PC2のMACアドレスを調べます

ARP動作イメージ

ARP動作フロー:

  1. PC1がARP要求をブロードキャスト送信
  2. PC2がARP応答でMACアドレスを通知
  3. PC1がMACアドレスを取得してデータ送信

ARPテーブルについて

上記の図でARPの概要が掴めたかと思いますが、通信の度にARPするのはイケてないですよね
そこで登場するのが 「ARPテーブル」 です
1度行ったARPは各PCのARPテーブルというテーブルにキャッシュされます
2回目以降の通信はARPテーブルを参照することで、毎度ARPしなくても通信できるようになります

ARPテーブルの特徴:

  • IP-MAC対応関係をキャッシュ
  • 一定時間で自動削除される(通常数分~数十分)
  • コマンドプロンプトで arp -a で確認可能

また、ARPテーブルの情報は一定時間経つと削除されます
PCの入れ替えなどで、古い情報がいつまでも残っていると、通信ができなくなるので定期的にリセットしてます

GARPについて

GARP = Gratuitous ARP はARPの1種で、自分自身のIPアドレスに対するARPのことです

GARP動作イメージ

GARPの役割は主に2つあります

  1. 自分自身に設定するIPアドレスが重複していないかを検出
  2. 同一セグメント上の機器のARPテーブルを更新する

1. 自分自身に設定するIPアドレスが重複していないかを検出

同一セグメント上に自分自身のIPアドレスが既に使われていないかを確認できます
GARPに応答が返ってきた場合、自身のIPアドレスが同一セグメント上に存在しているということが分かります

重複検出の流れ:

  • 自分のIPアドレスに対してARP要求
  • 応答があれば重複発生
  • 応答がなければ使用可能

2. 同一セグメント上の機器のARPテーブルを更新する

GARPは自分自身のIPアドレス/MACアドレスを他の機器に通知することができます
GARPを受け取った機器は、送信元のIPアドレス/MACアドレスを見てARPテーブルを更新します
このため、VRRPなどで切り替わりが発生した場合など、自分自身のMACアドレスに変更があった場合にGARPを送ることで、すぐに他の機器と通信が可能になります

ちなみにこの部分は過去問の穴埋め問題で出題されていました

(VRRPの)マスタルータが故障した際には、新しくマスタになったルータが [ 穴埋め:回答はGARP ] パケットをブロードキャストすることによってL2SWのMACアドレステーブルを更新する

ネットワークスペシャリスト 令和元年/午後1/問1

RARPについて

RARP = Reverse ARP はARPの逆で、MACアドレスからIPアドレスを取得したい場合に使われます
例えばプリンタなどの小型の組込機器をネットワークに接続したい場合などに使われます

RARP利用場面:

  • 組み込み機器のネットワーク参加
  • IPアドレス自動取得が必要な場合
  • 現在はDHCPが主流

まとめ

ARPはIPアドレスとMACアドレスの対応関係を管理する重要なプロトコルです。GARPは重複検出とARPテーブル更新に使用され、特にVRRPなどの冗長化技術では必須の機能です。RARPは現在あまり使われませんが、ネットワークスペシャリスト試験では基本概念として出題されることがあります。