Tips

ARPでMACアドレス解決 (ネットワーク①)

ARPでMACアドレス解決

ARP-TOP

ARPがMACアドレス情報を入手する仕組みを簡単に記載します。
こちらの記事は次の知識が前提になります。

  • MACアドレス
  • OSI参照モデル
  • IPアドレス
  • ネットワークセグメント

概要は次のとおりです。

  1. ARPリクエストのMACアドレスブロードキャスト(ff:ff:ff:ff:ff:ff)
  2. ARPリプライによるIPアドレスの返答
  3. ARPテーブルへの追加

では具体的にみていきましょう。

1. ARPリクエストのMACアドレスブロードキャスト(ff:ff:ff:ff:ff:ff)

ネットワーク層のIPアドレスで通信するためには、
同一ネットワークセグメント上にあるデータリンク層のMACアドレスをお互いに知っている必要があります。
自分と同じネットワークセグメント上にある他のホストと通信する場合は、そのホストのMACアドレス宛てにフレームを飛ばします。
自分と違うネットワークセグメント上にあるホストと通信する場合は、
大抵の場合デフォルトゲートウェイのMACアドレス宛てにフレームを飛ばします。
このMACアドレス情報を入手するため、ホストは通信したい相手のIPアドレス情報をこめて下記のMACアドレス宛にブロードキャストします。

ff:ff:ff:ff:ff:ff

このMACアドレス宛のフレームはルータを超えて転送されません。同一ネットワークセグメント内(ブロードキャストドメイン内)のみ届きます。

2. ARPリプライによるIPアドレスの返答

ARPリクエストが上記アドレス宛にブロードキャストされると、同一ネットワークセグメント内にあるすべてのホストがこれを受け取ります。
その中で、ARPリクエストに含まれるIPアドレスが、自分に設定されたIPアドレスと一致するホストのみ、
ARPリプライを自分のMACアドレスをこめて返します。
ARPリプライの宛先は、ARPリクエストの送信元MACアドレス、すなわちARPリクエストを発信したホストになります。

3. ARPテーブルへの追加

ARPリプライを受信したホスト(ARPリクエストの発信者)は、通信したいIPアドレスをもつホストのMACアドレス情報を入手します。
これによりめでたくIP通信ができるようになります。
IP通信するたびに毎回ARPリクエストを飛ばしていては非効率なので、学習したMACアドレス情報はARPテーブルに保存されます。
次回からのIP通信は、ARPテーブルを参照して適切なMACアドレス宛にフレームを送信します。

【ARPテーブルの例】
arp

ちなみにルータがこのARPリクエストを受け取った場合、受け取ったインターフェースのIPアドレスが、
ARPリクエストの中身にあるIPアドレスと一致すると、ルータ自身が「それは自分のIPで、MACアドレスはこちらですよ」といった具合に、
そのインターフェースのMACアドレスをこめてARPリプライを返します。
このルータがデフォルトゲートウェイであれば、
パソコンはめでたくデフォルトゲートウェイを経由してインターネット上のWEBサーバとIP通信できるようになるわけです。

written by 伊藤豪朗

ネットワーク

ARPでMACアドレス解決
デフォルトゲートウェイってどこに向ければいいの?

Recent News

Recent Tips

Tag Search