• このエントリーをはてなブックマークに追加

【ネットワーク基礎】arpの仕組み・種類

  • このエントリーをはてなブックマークに追加

arp

zaco muraです。

ネットワークエンジニア・サーバエンジニアの方は一度は耳にしたことがあると思いますが、ARP(Address Resolution Protocol)は通信において重要な役割を持っています。
私が扱うシステムでもarpについてはトラブルなどの時に出てくるキーワードですが、実は中身についてあんまり知らなくて、漠然と「MACアドレスといえばARP」みたいなイメージでした。なので、この機会に仕組みや種類をまとめておこうかと思います。(あくまで私の理解です。間違っているところがあれば指摘していただけると嬉しいです)

arpとは

Address Resolution Protocolです。日本語で言えばアドレス解決プロトコルです。ここで言うアドレスとは、IPアドレスではなく物理アドレス(=MACアドレス)です。

なぜarpが必要なの?

パケット(正確にはフレーム)を送るときに、宛先の端末を特定するためです。もしarpが無いと、IPアドレスはわかるけどそれってどの端末なの?という状態になります。
人間に例えるなら、名前はわかるけど顔がわからないみたいな状態ですかね。そんな時は、「この中に山田さんはいますかー?」みたいな感じで山田さんは誰かを聞きますよね。その山田さん確認がarpです。

IPアドレスとMACアドレスの違いは?

ひとことで言うと、IPアドレス=論理的なアドレス、MACアドレス=物理的なアドレスです。IPアドレスは変更したり別端末に付け替えたりできますが、基本的にMACアドレスは端末に付与されたものを変えることはできません。先程の例で言うと、山田という呼び名は(ニックネームなど)変えることができますが、顔を変えることは基本的にできないですよね。

また、NW的に言うとレイヤが違います。レイヤについてはこのへんを参照してください。

IPアドレス = レイヤ3
MACアドレス= レイヤ2

です。

arpが使われる場面

arpを最も意識する場面は同一セグメント内の通信だと思います。例えば以下のような構成の時

自分の端末 : 192.168.0.101
山田の端末 : 192.168.0.102

自分の端末から山田の端末にpingを打とうとした時に、自分の端末は「相手は同じ192.168.0.0/24の端末だから同一セグメントだな、ということは直接フレームが届くからarpでMACアドレスを聞こう」と考えます。そして、arpによりお互いのMACアドレスを知る状態になり、pingを送ることができるようになります。

ちなみに、別セグメント宛の通信の場合は以下のようになります。
例)googleパブリックDNS(8.8.8.8)へのping

宛先MACアドレス : デフォルトゲートウェイのMACアドレス
宛先IPアドレス : 8.8.8.8

この時、自分の端末は「相手は自分とは違うセグメントの端末だから、デフォルトゲートウェイにパケットを送ろう。だからまずはデフォルトゲートウェイのMACアドレスを聞こう」と考え、まずデフォルトゲートウェイに対して arpを送ります。

arpの種類

ここまででarpについて説明してきましたが、実はarpには種類があります。それは送信元IP/MAC,宛先IP/MACの組み合わせで決まります。
以下がよく使われるarpです。

名称 用途 送信元IP 送信元MAC 宛先IP 宛先MAC
arp
request
通信したいIPアドレスを持つ端末のMACアドレスを調べる 自分のIP 自分のMAC 通信したい相手のIPアドレス FF:FF:FF:FF:FF:FF
arp
reply
requestに対する応答 自分のIP 自分のMAC requestを送ってきたIP requestを送ってきたMAC
arp
probe
IPアドレスが使われているかどうかの確認
(自分の端末へのIP設定時、重複していないことの確認に使う)
0.0.0.0 自分のMAC 使いたいIP FF:FF:FF:FF:FF:FF
gratuitous
arp
IPアドレスを使っていることの宣言 自分のIP 自分のMAC 自分のIP FF:FF:FF:FF:FF:FF

特にgratuitous arpはNW機器の冗長などに使われます。例えばHSRPなどで同じIPを複数端末に設定する場合、切り替わりのタイミングでgratuitous arpを投げることによって切り替わり(つまりIPアドレスに対応するMACアドレスが変わったこと)を周辺のNW機器に対して周知します。ちなみにグラテュータスアープと読むらしいですが、私はジャパニーズなので正しいかどうかはわかりません。

まとめ

通信できないとか通信が不安定になるといった時には結構arpが絡んでいるイメージです。より詳しく知りたい人はRFCを読むことをお勧めします。(参考: http://www.kasai.fm/wiki/rfc5227jp)

スポンサーリンク
Sponsords Link
  • このエントリーをはてなブックマークに追加

ZacoDesign

スポンサーリンク
Sponsords Link