ARP プロトコルとは

ARP (Address Resolution Protocol)ARP とは、IPv4 アドレスから MAC アドレスを取得するプロトコルです。

なお、IPv6 アドレスから MAC アドレスを取得する場合は、ICMPv6 を使用します。

192.168.0.1 --> 192.168.0.2 に ARP リクエスト
OSI 参照モデルTCP/IP モデルTCP/IP プロトコル実装
アプリケーション層アプリケーション層HTTP, DNS, DHCP,
SSH, MIME, TLS
アプリケーション
プログラム
プレゼンテーション層
セッション層
トランスポート層トランスポート層TCP, UDPOS
ネットワーク層インターネット層IP, ICMP, ARP, IPSec
物理層
OSI 参照モデルTCP/IP モデルは完全に 1:1 ではない。ARP はデータリンク層ネットワーク層の間 (詳しくはここ)。
スポンサーリンク

ARP の仕組み

ARP は送信先の MAC アドレスがわからない時に使います。

ARP は次の 2 段階で IP アドレスから MAC アドレスを取得します。

  • ARP リクエスト
  • ARP リプライ
192.168.0.1 --> 192.168.0.2 に ARP リクエスト

ARP リクエスト

ARP リクエストは、ブロードキャストで全てのノード (PC) に送信します。

ブロードキャストで全員に送る理由は、送信先の MAC アドレスがわからないからです。

ARP リクエストには、主に以下の内容が含まれます。

フィールド説明
送信元 MAC アドレス11:22:33:44:55:66 (自分の MAC アドレス)
送信元 IP アドレス192.168.0.1 (自分の IP アドレス)
送信先 MAC アドレス00:00:00:00:00 (不明なので 0 で埋めます)
送信先 IP アドレス192.168.0.2
イーサネットフレームで送信先 MAC アドレスを FF:FF:FF:FF:FF:FF を指定するので、ブロードキャストとなります

ARP リプライ

ARP リプライは、ARP リクエストに自分の IP アドレスがある場合のみ、返します。

この時、ARP リクエストから送信元の MAC アドレスがわかるので、ユニキャストで返します。

なお、送信先 IP アドレスに、他人の IP アドレスが指定されている場合は無視します。

ARP のまとめ

再掲になりますが、まとめると以下のような動作となります。

192.168.0.1 --> 192.168.0.2 に ARP リクエスト

ARP リプライを受け取ったホストは、ARP テーブル (送信先 IP アドレスMAC アドレスの対応表) を更新し、キャッシュします。

スポンサーリンク

ARP のレイヤ (階層)

OSI 参照モデルにおける ARP の階層は、「L2L2.5・L3」の3つの派閥があります。

RFC では L2 (リンク層) と記載されています。

Although strictly speaking the scope of address resolution is confined to a single L2 broadcast domain (i.e., ARP runs at the L2 layer below IP)

https://tex2e.github.io/rfc-translater/html/rfc6820.html

2. リンクレイヤー .............................................. 21
(中略)
2.3.2 ARP(アドレス解決プロトコル) ....................... 22

https://jprs.jp/tech/material/rfc/RFC1122-ja.txt

3. LINK LAYER .......................................... 32
(中略)
3.3.2 Address Resolution Protocol - ARP ................ 34

https://datatracker.ietf.org/doc/html/rfc1812#section-3.3.2

Richard Stevens という RFC の共著者は L2.5 と定義してます。

Richard Stevens places ARP in OSI's data link layer[7] while newer editions associate it with the network layer or introduce an intermediate OSI layer 2.5.

https://en.wikipedia.org/wiki/Address_Resolution_Protocol

Oracle や IBM のドキュメントを見ると、L3 (ネットワーク層) と記載されてます。

3 ネットワーク インターネット IP, ARP, ICMP

https://docs.oracle.com/cd/E19504-01/805-1756/tcpoverview2-62673/index.html

1 番目のネットワーク・レベル・プロトコルは、アドレス解決プロトコル (ARP) です。 

https://www.ibm.com/docs/ja/aix/7.2?topic=protocols-internet-network-level
スポンサーリンク

最後に

TCP/IP のプロトコル一覧

TCP/IP 階層名プロトコル
アプリケーション層HTTPDNSDHCPSSHSSL/TLS
トランスポート層TCPUDP
インターネット層IP, ICMPIPSec
ネットワーク
インターフェイス層
イーサネット(有線), IEEE802.11(無線), ARP
IEEE802.3(イーサネット)、IEEE802.11 はTCP/IP プロトコルスイートではない

OSI 参照モデル