ARP

ARP(Address Resolution Protocol)とは, IPアドレスからMACアドレスを得るためのプロトコルである.

TCP/IPを利用したLANでの通信では, IPパケットは下位層でMACフレームが付加された状態で伝送されることから, MACアドレスの情報が必要となる.

しかし, IPアドレスとMACアドレスは自動的な関連付けがないので, ARPでMACアドレスを得る必要がある.

ARPの仕組み

ARPにはARPリクエストARPリプライという2種類のパケットを利用し, 宛先となるIPアドレスを持つノードのMACアドレスの情報を得る.

ARPリクエストの中には, MACアドレスを知りたいノードのIPアドレスが入っている.

ARPリクエストはブロードキャストされるため, セグメント内の全ノードがパケットを受信する.

ARPリクエスト

受け取ったノードはそれぞれ中身を見て, それが自身のIPアドレスだと分かると, 自身のMACアドレスが入ったARPリプライを送信元のノードへ送信する.

これにより, 送信元のノードはIPアドレスの対応したMACアドレスを取得でき, LANでの通信が可能となる.

当然ながら, ARPリプライはユニキャストで送信される.

ARPリプライ

また, 異なるネットワークにあるノードのMACアドレスが分からない場合は, デフォルトゲートウェイのMACアドレスを知るためのARPリクエストを送信する.

異なるネットワークに対するARPリクエスト

ARPパケットのフォーマット

ARPパケットのフォーマットは以下の通りである.

ARPはIPと同様にOSI参照モデルのネットワーク層で動作し(TCP/IPではインターネット層), IPパケットではなくARPパケットであり, Ethernetフレームによりカプセル化される.

ARPパケット

フィールド ビット数 説明
ハードウェアタイプ 16bit ハードウェアの種別情報は入る.
Ethernetの場合は"0x0001"である.
プロトコルタイプ 16bit プロトコルの種別情報が入る.
IPの場合は"0x0800"である.
元々はTCP/IP以外でもARPを使えるように設計されていたが, TCP/IP以外で使われることはない.
ハードウェアアドレス長 8bit MACアドレスの長さが入る.
固定値で"6"となる.
プロトコルアドレス長 8bit IPアドレスの長さが入る.
固定で"4"となる.
オペレーション 16bit ARPリクエストなのかARPリプライなのかを識別するための情報が入る.
ARPリクエストの場合は"0x0001", ARPリプライの場合は"0x0002"となる.
送信元のMACアドレス 48bit 送信元のMACアドレスが入る.
通信に必要な「送信元MACアドレス」の情報は当然L2ヘッダの中にある.
送信元のIPアドレス 32bit 送信元のIPアドレスが入る.
探索するMACアドレス 48bit 探索するMACアドレスが入る.
ARPリクエストの場合は"00-00-00-00-00-00"又は"FF-FF-FF-FF-FF-FF"が入る.
探索するIPアドレス 32bit 探索するIPアドレスが入る.
このIPアドレスが自身のIPアドレスと一致した場合, ARPリプライを返す.

ARPキャッシュとARPテーブル

一度, ARPリクエストとARPリプライによりARPパケットのやり取りがされると, ARPキャッシュとして一定時間情報が残る.

ARPキャッシュが残っている間, そのノード間はARPパケットのやり取りをすることなく, LANでの通信が可能となる.

ARPキャッシュはARPテーブルという場所に保存されており, PCからの場合は, ターミナルでarp -aと入力することで確認できる.

ARPパケットのやり取りにより, 動的(dynamic)に得られるARPキャッシュとデフォルトで静的(static)に定義されているARPキャッシュの2種類が存在する.

また, 動的に得たARPキャッシュは一定時間後削除されるが, ターミナルでarp -dと入力することで今すぐ削除することも可能である.

CiscoルータからARPテーブルを確認する場合は, ターミナルでshow ip arpと入力する.

Ciscoルータでは, 自身のIPアドレスとMACアドレスもARPテーブルにのせている.

また, ARPキャッシュの時間の項目(Age)には"-"と表示しており, このARPキャッシュが消えないことを表している.

なお, Cisco IOS SoftwareにおけるARPキャッシュのタイムアウトはデフォルトで240分(4時間)となっている.

results matching ""

    No results matching ""