このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
少々、解説が長くなるため、動画を3回に分けて解説します。
演習ファイルのダウンロード
ファイルは Packet tracer Version 8.2.1 で作成しています。古いバージョンの Packet Tracer では、ファイルを開くことができませんので、最新の Packet Tracer を準備してください。Tracer を準備してください。
ネットワークの構成を Packet Tracer で一から設定していくのは大変かと思います。「ダウンロード」から演習で使用するファイルのダウンロードができます。ファイルは、ウイルスバスターでウイルスチェックをしておりますが、ダウンロードは自己責任でお願いいたします。
リモートネットワークと通信する場合のARPの動作
ここでは、宛先がリモートネットワークにあるホストと通信する場合のARPの動作について確認していきます。
ネットワークは、下図のとおりです。
宛先がリモートネットワークにあるホスト場合、宛先MACアドレスを「FFFF.FFFF.FFFF」のブロードキャストアドレスとするARPリクエストを送信して、まず、デフォルトゲートウェイのMACアドレスを学習するようになります。
このARPの動作を確認していきます。

CDPによるMACアドレスの学習
しばらく、時間が経過すると、Switch1はRouterのG0/0のMACアドレス、Switch2はRouterのG0/1のMACアドレスを学習します。
そこで、疑問が湧いてきます。
それは、ARPが行われていなくとも、なぜ、スイッチはRouterのMACアドレスを学習するのか、ということです。
その理由ですが、
しばらく時間が経過すると、各スイッチは、RouterとCDP(Cisco Discovery Protocol)のやり取りします。
その過程で、
- Swich1はRouterのG0/0のMACアドレスをSwich1のG0/1に紐づけて学習
- Swich2はRouterのG0/1のMACアドレスをSwitch2のG0/1に紐づけて学習
することになります。
この動きをまず、確認します。
・「Power Cycle Devices」ボタンをクリックします。

ワークスペース上に配置してある、すべてのデバイスが再起動します。
リンクライトが緑になるまで待ちます。

リンクライトが緑色になったら素早くシミュレーションモードに切り替えます。
・シミュレーションボタンをクリックします。

Switch1とSwitch2のMACアドレステーブルを表示する。
・「Inspect」アイコンをクリックします。

Switch1をクリックして、「MAC Table」を選択します。

同様にSwitch2のMACアドレステーブルを表示します。

CDPの動作を確認する。
・「Show All/None」をクリックして、監視するプロトコルのチェックを、すべて外します。

・「Edit Filters」ボタンをクリックして「Misc」の「CDP」にチェックを入れます。

・RouterにCDPの封筒が現れるまで、「Play Controls」の「▶|」ボタンをクリックします。

Switch1、Switch2のMACアドレステーブルは、まだ、空の状態です。

・「Play Controls」の「▶|」ボタンをクリックします。

RouterからのCDPパケットが各スイッチに届いたタイミングで、MACアドレステーブルにエントリーが1つ増えます。

以下のことが分かります。
- Swich1はRouterのG0/0のMACアドレスをSwich1のG0/1に紐づけて学習している。
- Swich2はRouterのG0/1のMACアドレスをSwitch2のG0/1に紐づけて学習している。
Ciscoデバイスは、CDPのやり取りによって、隣接するCiscoデバイスのMACアドレスを学習しているということが分かります。今回、各スイッチにはIPアドレスを割り当てていませんので、RouterがスイッチのMACアドレスの学習は行われません。
・Switch1、Switch2のMACアドレステーブルのパネルは閉じておきます。
ルータ、各PCのIPアドレスとMACアドレスの確認
ルータ、スイッチ、各PCのIPアドレスとMACアドレスは、下表のとおりです。
| デバイス | IPアドレス | MACアドレス |
| Router | G0/0: 192.168.1.254/24 G0/1: 192.168.2.254/24 | 0000.AAAA.AAAA 0000.BBBB.BBBB |
| PC1 | 192.168.1.1/24 | 0000.1111.1111 |
| PC2 | 192.168.1.2/24 | 0000.2222.2222 |
| PC3 | 192.168.1.3/24 | 0000.3333.3333 |
| PC4 | 192.168.2.4/24 | 0000.4444.4444 |
| PC5 | 192.168.2.5/24 | 0000.5555.5555 |
| PC6 | 192.168.2.6/24 | 0000.6666.6666 |
現在のネットワークの状況
各PCのARPテーブルは空の状態です。ルータのARPテーブルは、自身のインターフェイスのMACアドレスがあるだけの状態です。
一応、確認しておきます。
PC1のARPテーブル
・PC1のARPテーブル表示します。
PC1の「Comand Prompt」から「arp -a」コマンドを実行します。
C:>arp -a

MACアドレステーブルは空です。確認は省略しますが、他のPCのMACアドレステーブルも同様に空です。
RouterのARPアドレステーブル
Routerで「show arp」コマンドを実行します。
Router#show arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.254 - 0000.AAAA.AAAA ARPA GigabitEthernet0/0
Internet 192.168.2.254 - 0000.BBBB.BBBB ARPA GigabitEthernet0/1
Router自身のインターフェイスのMACアドレスのみで、他のデバイスのMACアドレスはありません。
「Inspect」でARPテーブルを表示する。
CLIからコマンドでARPテーブルを随時、確認していくのは少々、煩わしいです。
そこで、「Inspect」を使って、ARPテーブルをワークスペース上に配置しておきます。
PC1のARPテーブル表示します。
・「Inspect」アイコンをクリックします。

PC1をクリックして、「ARP Table」を選択します。

ARPテーブルが表示されます。

RouterとPC5のARPテーブルも同様に配置します。

ARPの動作確認
ここからの解説は、以下のYouTubeの動画で解説を見ることができます。
宛先がリモートネットワークにあるホスト場合、宛先MACアドレスを「FFFF.FFFF.FFFF」のブロードキャストアドレスとするARPリクエストを送信して、まず、デフォルトゲートウェイのMACアドレスを学習するようになります。
このARPの動作を確認していきます。
説明がややこしくなりますので、Switch1とSwich2のMACアドレステーブルの内容の確認については省略します。
それでは、ARPの動作を確認していきます。
・「Show All/None」をクリックして、監視するプロトコルのチェックを、すべて外します。

・「Edit Filters」ボタンをクリックします。

「ARP」と「ICMP」にチェックを入れます。

・PC1からPC5へpingを実行します。
C:>ping 192.168.1.5

ICMPとARPの封筒が現れます。

①PC1のARPリクエスト
イーサーネットでは、宛先と通信を行うには、送信元と宛先のIPアドレスとMACアドレスが必要です。
ARPリクエストの封筒を確認します。
・ICMPの封筒をクリックします。
・「Out Layers」を確認します。

PC1は、宛先IPアドレスは分かっています。
宛先IPアドレスはリモートネットワーク上にあります。
リモートネットワークにICMPエコー要求を送るにはデフォルトゲートウェイに送る必要があります。
しかし、PC1はICMPエコー要求を送りたくとも、デフォルトゲートウェイのMACアドレスが分かっていません。
このままでは、ICMPエコー要求をPC5へ送信することができません。
そこで、デフォルトゲートウェイであるRouterのG0/0のMACアドレスを調べるために、ARPリクエストを行います。
・「Play Controls」の「▶|」ボタンをクリックします。

時間が1ステップ進みます。
ARPリクエストの封筒を確認します。
・ARPの封筒をクリックします。

・「Out Layers」を確認します。
送信元MACアドレスが、PC1のMACアドレスである「0000.1111.1111」、宛先MACアドレスが、ブロードキャストアドレスである「FFFF.FFFF.FFFF」となっています。

このタイミングでSwitch1は、PC1のMACアドレス「0000.1111.1111」をSwich1のF0/1に紐づけて学習します。
次にこの受信したARPリクエストを転送します。
スイッチは、宛先がマルチキャスト、ブロードキャストのパケットを受信したポート以外のすべてのポートに対して転送するデバイスです。
宛先MACアドレスである「FFFF.FFFF.FFFF」はブロードキャストアドレスであるため、Switch1は受信したポート以外のすべてのポート対して、ブロードキャストを転送することになります。
・「Play Controls」の「▶|」ボタンをクリックします。

時間が1ステップ進みます。
PC2とPC3は自分宛のパケットでないため、パケットを破棄します。

このタイミングでRouterは、PC1のMACアドレスを学習します。
RouterのARPテーブル
・RouterのARPテーブルを確認します。

Routerは、PC1のMACアドレス「0000.1111.1111」をG0/0に紐づけて学習していることが確認できます。
②RouterのARPリプライ
・「Play Controls」の「▶|」ボタンをクリックします。

時間が1ステップ進みます。
RouterはARPリプライを返します。
・ARPの封筒をクリックします。

「Out Layers」を確認します。

送信元がRouterのG0/0で、宛先がPC1のユニキャストのパケットであることが分かります。
Switch1はこのARP応答がユニキャストで、宛先であるPC1のMACアドレスをF0/1で既に学習済みであるため、Swich1のF0/1からPC1に向けてのみ転送します。
・「Play Controls」の「▶|」ボタンをクリックします。

時間が1ステップ進みます。
ARPリプライがPC1に届きます。このタイミングでPC1は、RouterのG0/0のMACアドレスを学習します。

PC1のARPテーブルを確認します。

デフォルトゲートウェイのMACアドレスを学習できたため、これでやっと ICMPエコー要求を送ることができます。
③PC1のICMPエコー要求
・「Play Controls」の「▶|」ボタンを1回クリックします。

時間が1ステップ進みます。
ICMPエコー要求がSwich1に届きます。

このICMPエコー要求は、ユニキャストであるため、Swich1はRouterに転送します。
・「Play Controls」の「▶|」ボタンを1回クリックします。

時間が1ステップ進みます。
ICMPエコー要求がRouterに届きます。

④RouterのARPリクエスト
ここからの解説は、以下の YouTube 動画で続きの解説を見ることができます。
しかし、Routerは、宛先のPC5のMACアドレスが分からないためARPリクエストを送る必要があります。
そのため、PC1から届いたICMPエコー要求は、タイムアウトすることになります。
少し省略しながら、解説を進めていきます。
・「Play Controls」の「▶|」ボタンを2回クリックします。

時間が2ステップ進みます。
PC4、PC6は自分宛ではないため、ARPリクエストを破棄します。

PC5は、このタイミングで、RouterのG0/1のMACアドレスを学習します。

⑤PC5のARPリプライ
PC5は、ARPリプライをRouterに送信します。
・「Play Controls」の「▶|」ボタンを2回クリックします。

時間が2ステップ進みます。
PC5のARPリプライがRouterに届きます。

Routerは、このタイミングでPC5のMACアドレスを学習します。

これで、やっと、RouterはPC1からのICMPエコー要求を転送できるようになります。
⑥PC1のICMPエコー要求
・「Play Controls」の「▶|」ボタンを1回クリックします。

時間が1ステップ進みます。
1回目のICMPエコー要求は、タイムアウトしてしまいますが、ここで、2回目のICMPエコー要求を送信します。

・「Play Controls」の「▶|」ボタンを2回クリックします。

時間が2ステップ進みます。
RouterにPC1からのICMPエコー要求が届きます。

Routerは、PC5のMACアドレスを学習しているため、PC1からのICMPエコー要求をPC5へ転送することができます。
・「Play Controls」の「▶|」ボタンを2回クリックします。

時間が2ステップ進みます。

これで、やっと、PC1は、PC5へICMPエコー要求を届けることができるのです。
少々、解説が、長くなってしまいました、ここまで、リモートネットワークにあるホストと通信する場合のARPの動作について確認してきました。このARPの動作については、各イーサネットセグメントごとに行われることになります。
