なお、IPv6 アドレスから MAC アドレスを取得する場合は、ICMPv6 を使用します。
OSI 参照モデル | TCP/IP モデル | TCP/IP プロトコル | 実装 |
---|---|---|---|
アプリケーション層 | アプリケーション層 | HTTP, DNS, DHCP, SSH, MIME, TLS | アプリケーション プログラム |
プレゼンテーション層 | |||
セッション層 | |||
トランスポート層 | トランスポート層 | TCP, UDP | OS |
ネットワーク層 | インターネット層 | IP, ICMP, ARP, IPSec | |
データリンク層 | ネットワーク インターフェイス層 | イーサネット (有線) IEEE 802.11(Wi-Fi/無線) | デバイスドライバー Network Interface |
物理層 |
ARP の仕組み
ARP は送信先の MAC アドレスがわからない時に使います。
ARP は次の 2 段階で IP アドレスから MAC アドレスを取得します。
- ARP リクエスト
- ARP リプライ
ブロードキャストで全員に送る理由は、送信先の 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 |
この時、ARP リクエストから送信元の MAC アドレスがわかるので、ユニキャストで返します。
なお、送信先 IP アドレスに、他人の IP アドレスが指定されている場合は無視します。
ARP のまとめ
再掲になりますが、まとめると以下のような動作となります。
ARP リプライを受け取ったホストは、ARP テーブル (送信先 IP アドレスと MAC アドレスの対応表) を更新し、キャッシュします。
ARP のレイヤ (階層)
OSI 参照モデルにおける ARP の階層は、「L2・L2.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
https://jprs.jp/tech/material/rfc/RFC1122-ja.txt
(中略)
2.3.2 ARP(アドレス解決プロトコル) ....................... 22
3. LINK LAYER .......................................... 32
https://datatracker.ietf.org/doc/html/rfc1812#section-3.3.2
(中略)
3.3.2 Address Resolution Protocol - ARP ................ 34
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 階層名 | プロトコル |
---|---|---|
4 | アプリケーション層 | HTTP, DNS, DHCP, SSH, SSL/TLS |
3 | トランスポート層 | TCP, UDP |
2 | インターネット層 | IP, ICMP, IPSec |
1 | ネットワーク インターフェイス層 | イーサネット(有線), IEEE802.11(無線), ARP |