【初心者わかりやすく】ARP(アドレス解決プロトコル)を詳細に解説

 LAN上の2台のコンピュータが相互に通信しようとすると、IPパケットは、送信元と宛先のMACアドレスを持つイーサネットフレームにカプセル化する必要があります。送信側のコンピュータは宛先MACアドレスをどのようにして知るのでしょうか。そこでARP(Address Resolution Protocol アドレス解決プロトコル)を使用します。ここでは、2台のCiscoルータを用いて、ARPの仕組みを確認します。

 以下の記事を先に読んでいただくことをお勧めします。

 まず、R1とR2のARPテーブルを事前に確認しておきます。

R1# show ip arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.12.1            -   0000.0000.1111  ARPA   FastEthernet0/0.12

R2# show ip arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.12.2            -   0000.0000.2222  ARPA   FastEthernet0/0.12

 では、R1(192.168.12.1)からR2(192.168.12.2)にPingを送信してみます。

R1# ping 192.168.12.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 8/22/40 ms

 このIPパケットの送信元IPアドレスは192.168.12.1で、宛先IPアドレスは192.168.12.2です。このIPパケットに送信元MACアドレスと宛先MACアドレスを含む イーサネットフレームへカプセル化して送信されます。

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

R1# show ip arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.12.1            -   0000.0000.1111  ARPA   FastEthernet0/0.12
Internet  192.168.12.2            0   0000.0000.2222  ARPA   FastEthernet0/0.12

 192.168.12.2  のMACアドレスが0000.0000.2222と学習しています。そして、送信元MACアドレス0000.0000.1111と宛先MACアドレス0000.0000.2222 イーサネットフレームにカプセル化して送信されます。 では、R1はR2のMACアドレスをどのようにして知るのでしょうか。ここで、ARP(Address Resolution Protocol アドレス解決プロトコル)が使用されます。

ARPリクエスト

 R1はR2のMACアドレスが何であるかはわからないので、R1はARPリクエストを送信します。

 ARPリクエストの中身は「192.168.12.2を持っているのは誰で、MACアドレスは何ですか?」とブロードキャストMACアドレス宛(ff:ff:ff:ff:ff:ff)に送信します。ブロードキャストMACアドレス宛に送信されるため、スイッチはこのフレームをフラッディングします。

ARPリプライ

 R2はARPリプライで応答します。ARPリプライは送信元のMACアドレス宛に、自身のMACアドレスをデータ部分に挿入します。

pingの最初のリクエスト応答がないのは?

 R1からのPing結果をもう一度掲載します。

R1# ping 192.168.12.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 8/22/40 ms

 5回のリクエストのうち、最初のリクエストの応答がありません。

 パケットキャプチャを見ると、ARPリクエスト、リプライの後、pingが4回実行されています。 最初のリクエストがARP処理前に実行されるため、欠けていることがわかります。

 最後までお読み頂きありがとうございました。

コメント