ARP プロトコルとは

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

ping の最初だけ応答が遅い理由は、ARP で送信先の MAC アドレスを調べているからです。

192.168.0.1 --> 192.168.0.2 に 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 のレイヤ (階層)

ARP の OSI 参照モデルL2L3 で諸説ありますが、RFC6820 では 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
スポンサーリンク

最後に

TCP/IP のプロトコル一覧

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

OSI 参照モデル