ネットワーク

ARPとは

2020年1月18日

ARPとは

ARP(Address Resolution Protocol:アドレス解決プロトコル)とは、IPアドレス(IPv4)からOSI参照モデルのデータリンク層で使用するMACアドレスを取得するためのプロトコルです。

スポンサーリンク

インターネット上で通信を行うためには、IPアドレスMACアドレスが必要です。

IPアドレスとmacアドレス

上記のイメージ例の通り、IPアドレスは最終地点の宛先を指定していますが、MACアドレスは次の宛先を指定しています。

IPアドレスは、コンピュータの位置を特定するためのインターネット上の住所、それに対してMACアドレスは、隣接するコンピュータ間の通信を可能とするために必要な情報です。そのため、インターネット上で通信を行うためには、IPアドレスとMACアドレスが必要なのです。

そして、ARPは送信先のIPアドレスは分かるが、MACアドレスが分からないという時に使用されるプロトコルです。

ポイント

ARPとは、IPアドレスからMACアドレスを取得するためのプロトコル

ARPはIPv4の時に使用されるプロトコルです。IPv6を使用したIPアドレスの場合は、ICMPv6の近隣探索プロトコル(NDP)によりARPの機能が提供されています。

ARPの流れ

ARP(Address Resolution Protocol)の仕組みは非常にシンプルです。「ARPリクエスト」と「ARPリプライ」と呼ばれる2種類のパケットを使用して、IPアドレスからMACアドレスを取得します。

ARPリクエスト

ARPリクエスト

上記例で「PC1」は「PC3」にデータを送信しようとしています。しかし「PC3」のIPアドレスは分かるが、MACアドレスが分かっていません。そこで「PC1」は「ARPリクエスト」を送信します。

ARPリクエストとは「このIPアドレスが割り振られているコンピュータのMACアドレスを教えて」という内容のパケットです。

ARPリクエストは、ブロードキャストであり同じセグメント内の全コンピュータに送信されます。

ARPリクエスト時のARPパケットは以下のように設定されます。送信先のMACアドレスを取得したいので、送信先MACアドレスは未設定とします。

送信元MACアドレス送信元IPアドレス送信先MACアドレス送信先IPアドレス
PC1のMACアドレスPC1のIPアドレス未設定(00-00-00-00-00-00)PC3のIPアドレス

ARPリプライ

ARPリプライ

ARPリプライとは、ARPリクエストに対する応答です。上記例では「PC3」が「PC1」に対してARPリプライのパケットを送信しています。

ARPリクエストを受信した各コンピュータは、格納された送信先IPアドレスが自身のIPアドレスと同一であるかを確認し一致している場合、自身のMACアドレスを格納したARPリプライを送信元に返信します。

ARPリプライ時のARPパケットは以下のように設定されます。

送信元MACアドレス送信元IPアドレス送信先MACアドレス送信先IPアドレス
PC3のMACアドレスPC3のIPアドレスPC1のMACアドレスPC1のIPアドレス

ARPキャッシュ

一度「ARPリクエスト」と「ARPリプライ」のやり取りが行われた場合、一定時間の間、ARPテーブルにARPキャッシュとして保持されます。

ARPキャッシュとして保持する理由は、効率を上げることです。ARPキャッシュにIPアドレスとMACアドレスの対応表を保持することで、次回からはARPキャッシュを利用してMACアドレスを求めることができます。

スポンサーリンク

ARPパケット

ARPパケットの内容は次の通りです。

項目名ビット説明
ハードウェアタイプ (Hardware
Type)
16 bitハードウェアの種類。イーサネットの場合は「0x0001」が設定される。
プロトコルタイプ (Protocol
Type)
16 bitプロトコルの種類。IPv4の場合「0x0800」以降の値が設定される
ハードウェア長 (Hardware
Length)
8 bitMACアドレスの長さを表す。イーサネットの場合は「6」が設定される
プロトコル長 (Protocol
Length)
8 bitIPアドレスの長さを表す。IPv4の場合は「4」が設定される
オペレーション(Operation)16 bitARPの動作の種類を表すためのコード(1:ARPリクエスト、2:ARPリプライ)
送信元MACアドレス (Sender MAC address)48 bit送信元のMACアドレス
送信元IPアドレス (Sender IP address)32 bit送信元のIPアドレス
送信先MACアドレス (Target
MAC address)
48 bit送信先のMACアドレス。ARPリクエストの場合は 「00-00-00-00-00-00」 の値が入る。
送信先IPアドレス (Target
IP address)
32 bit送信先のIPアドレス。この情報が自分のものであった場合、受信したノードはARPリプライを返す。

helpful