ネットワーク機器が恋しくて その2
前回でCiscoの機器をいじり放題になったので、
機器をいじりながらプロトコルの勉強をしていきたいと思います。
今回はARP(Address Resolution Protocol)です。
ARPとは、OSI参照モデルの2層目のデータリンク層の通信をする際に利用するプロトコルで、IPアドレスからMACアドレスを取得するために利用します。
通信相手の識別にIPアドレスを利用する事が多いと思います。
例)PC0(192.168.0.1)からPC1(192.168.0.2)への通信など
ですが、実はIPアドレスだけではパケットを届けることはできません。同じネットワーク内にいる機器同士は「MACアドレス」を頼りに通信するからです。
そこで登場するのがARPです。 「このIPアドレスの人は、どのMACアドレスを持ってますかー!?」と聞き回る、ネットワーク界の聞き込み調査員のようなプロトコルです。
さっそく、実際の通信を見ていきましょう。ハブをおいて、PCが複数台つながっているネットワークを用意します。

Cisco Catalyst 2960には特に設定しません。
PCは以下のように設定します。
PC0
IPv4 Address:192.168.0.1
Subnet Mask:255.255.255.0
PC1
IPv4 Address:192.168.0.2
Subnet Mask:255.255.255.0
PC2
IPv4 Address:192.168.0.3
Subnet Mask:255.255.255.0
※設定方法わからない人は、前回の記事見ていただけるとわかります。
https://tech.anti-pattern.co.jp/network-ga-koishikute/
IPアドレスとMACアドレスを確認していきます。
コマンドプロンプトを開いて、「ipconfig /all」で確認します。



PC0からPC1にpingをします。通信の中でIPアドレスからMACアドレス取得が必要となり、ARP通信が発生するのでそれを見ていきます。

PC0で通信が発生したのが確認できます。通信内容の詳細を見てみます。

メッセージを見ると、ARP Packetと書いてあるので、ARP通信であることが確認できます。
送信元は0001.6339.2D43(PC0)、送信先はFFFF.FFFF.FFFF(全員宛の通信)となっています。

ARP通信がハブに届きました。

ハブからネットワーク全体(PC1とPC2)に通信を送っています。


IPアドレスが一致するPC1だけがARPに応答します。
PC2にもパケットが届いていますが、PC2は『自分宛(192.168.0.2)じゃないな』と判断して、このパケットを静かに破棄しています。

PC0にARP通信が帰ってきました。この時点でPC0は、IPアドレス192.168.0.2のMACアドレスが000D.BD02.95E8であることを認識します。

この情報はARPテーブルに保存され、しばらく記憶されます。なので通信のたびにARPが発生するわけではありません。

この後の通信の流れも見ていきます。
ARP通信が終わり、次はpingの通信となります。PC1に届いて、返信がPC1に帰ってきます。




これがPC0からPC1への通信内容になります。MACアドレスを知っているので、PC1のMACアドレスへの通信となっています。

もう少し通信内容を詳細に見ていきます。
pingの通信はICMPを利用するので、通信内容がICMPとなっています。TYPEが0x08となっています。これはICMPのエコー要求(ICMP届いたら返事してね)という意味になります。
詳しくはこちら
https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml#icmp-parameters-types
次はPC1からPC0の通信を見てみます。


TYPEが0x00となっています。これはICMPのエコー応答(ICMP届いたのでお返事ですよ)という意味になります。

これらの通信が裏側で実施されることで、上記のpingコマンドが動作することが確認できました。今回はここまでです。