MACアドレス(NICの物理的なアドレス)とIPアドレス(OSで設定する論理的なアドレス)を紐づけ、データリンク層とネットワーク層の架け橋的な役割を担うプロトコル。

Address Resolution Protocol

扱い的には2.5層

図:ARPはMACアドレスとIPアドレスを紐づけるプロトコル

ある端末がデータを送信する時、ネットワーク層から受け取ったデータをイーサネットフレームにカプセル化してケーブルに流す。この時、送信元MACアドレスは自分自身のNICのアドレスなのでまだわかるとして、宛先MACアドレスは知りようがない。

そこで実際のデータ通信に先立って、ARPでIPアドレスから宛先MACアドレスを求める。=アドレス解決。

図:イーサネットフレームの宛先MACアドレスは宛先IPアドレスから求める。

ARPのフレームフォーマット

イーサネットヘッダーのタイプコードで0x0806と定義されている。

図:ARPのフレームフォーマット

ハードウェアタイプ

使用しているレイヤー2プロトコルを表す2バイトのフィールド

イーサネットの場合は0x0001

プロトコルタイプ

使用しているレイヤー3プロトコルを表す2バイトのフィールド

IPv4の場合は0x0800

ハードウェアアドレスサイズ

MACアドレスの長さ。6が入る。

プロトコルアドレスサイズ

IPアドレスの長さ。4が入る(IPv4)。

オペレーションコード(オプコード、動作コード)

ARPフレームの種類を表す。

よく見かけるのは

1:ARP Request

2:ARP Reply

目標MACアドレス/目標IPアドレス

ARPで解決したいフィールド。最初はMACアドレスを知りようがないのでダミーのMACアドレス00:00:00:00:00:00をセットする。

ARPによるアドレス解決の流れ

1.まずはARPテーブルを検索。(ARPで解決した情報を一定時間保持するメモリ上のテーブル)

最初は空なのでARP Request処理に移行する。

ARPテーブルに情報がある場合は6に進む。

2.各フィールドの情報を組み立てる。

オペレーションコードはARP Requestを表す「1」。

送信元MACアドレスと送信元IPアドレスに自身のアドレスを入れる。

目標MACアドレスはARP Requestでは無視されるのでダミー(00:00:00:00:00:00)を入れる。

目標IPアドレスはIPヘッダーに含まれるIPアドレスによって変わる。

同じネットワークの場合はそのまま使う。

異なるネットワークの場合はそのネットワークの出口となる「ネクストホップ」を目標IPとして使用。

続いてイーサネットヘッダを組み立てる。

ARP Requestはブロードキャストを使用。つまり宛先MACアドレスはFF:FF:FF:FF:FF:FF

3.そのイーサネットネットワークにいる端末全てにいきわたる。対象の端末はARP Requestを自分に対するARPフレームと判断し受け入れる。併せてARPフィールドに含まれる送信元MACアドレスと送信元IPアドレスをARPテーブルに書き込む。

図:1~3までの処理

4.対象端末はARP Replyを返すために各フィールドの情報を組み立てる。

オペレーションコードはARP Replyを表す「2」

送信元MAC/IPアドレスは自身のアドレス

目標MAC/IPアドレスはRequestを送ってきた端末のもの

続いてイーサネットフレームの組み立て。

ARP Replyはユニキャストを使用。したがって宛先MACアドレスはRequestを送ってきた端末のもの。送信元MACは自身のもの。

5.Requestを送った端末はReplyのARPフィールドに含まれる送信元MACアドレスとIPアドレスを見て送信先を認識。併せてARPテーブルに書きこみ、一時保存する。

図:4~5の処理

6.以降はアドレス解決したMACアドレスを使ってデータ通信を行う。

ARPのキャッシュ機能

ARPの弱点:ブロードキャストを前提としている(最初は相手のMACアドレスを知らないので、ブロードキャストを使用するのは必然)

通信するたびにARPをブロードキャストしていたらそのネットワークはARPで溢れかえる。(そもそもMAC/IPアドレスともにそんなに頻繁に変わるものではない)

→APPのキャッシュ機能

OS等でも異なるが、基本的にエントリ数上限まで保持し続ける。=ARPテーブル

古くなったエントリに通信するときなどはユニキャストのARPを使用して到達性を確認する。そのReplyを受け取れなかったり、APRエントリが削除されていたらまたブロードキャストを使用してARP Requestを送る。

つまり「可能な限りブロードキャストを使用しないようにして、ネットワークがARPでいっぱいにならないように、ARPの処理を行っている」


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です