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処理前に実行されるため、欠けていることがわかります。
最後までお読み頂きありがとうございました。
コメント