OSI参照モデルの第1層から第4層に該当するプロトコルについてもう少し詳しくみてみよう。
今回は、TCP/IPネットワーク(IPv4)で必要なARPについて紹介しよう。
ARPとは
ARP(Address Resolution Protocol)とは、IPアドレスからMACアドレスを調べる仕組みだ。
さっくり言うと、「みなさ〜ん、自分のIPアドレスは、x.x.x.xでMACアドレスは、x:x:x:x:x:xです。IPアドレスが、y.y.y.yのひとに送信するものがありますが、MACアドレスがわかりません。このIPアドレスのひと、MACアドレスを返信してくれませんか?」というARPリクエストを送る。
このパケットはネットワークセグメント上のすべての機器に送信されるが、自分と関係ない場合は無視する。
一方、このIPアドレスを持った機器は、「送信元さん、あなたが探してるIPアドレスy.y.y.yは私です。私のMACアドレスは、z:z:z:z:z:zです。」というARPレスポンスを送る。
パケット:ARPリクエストとレスポンス
こちらが、ARPリクエストで、宛先(Dst)のアドレスはff:ff:ff:ff:ff:ffだ。
つまり、これはイーサネットのブロードキャストアドレスだから、この宛先に送信されたパケットは、ネットワークセグメント上にあるすべての機器にブロードキャストされる。
宛先のMACアドレスは不明なので、00:00:00:00:00:00となっている。
次に、ARPレスポンスをみてみよう。
パケットのオペレーションコード(Opcode)が、0x0002に変更され、リクエストからレスポンスになっている。
アドレス情報が入れ替わり、送信元MACアドレスとIPアドレスが、宛先のMACアドレスとIPアドレスになっている。
さらに、ポイントは、IPアドレス192.168.1.103のMACアドレス2c:b0:5d:bf:17:22が格納されている点だ。
gratuitous ARP
サンプルパケットがないが、gratuitous ARPについても触れておこう。
IPアドレスが変わると、キャッシュに記憶されたIPアドレスとMACアドレスのマッピングが不正となる。
そこで、gratuitous ARPパケットが送信され、受け取った機器のキャッシュを新しいマッピング情報で強制的に更新する。
宛先(Dst)のアドレスはff:ff:ff:ff:ff:ffで、送信元IPアドレスと宛先IPアドレスが同一である点が特徴的だ。
まとめ
IPアドレスからMACアドレスを調べる仕組みであるARPについて、リクエストとレスポンスパケットを使って紹介してみた。
また、IPアドレス変更に伴うgratuitous ARPもあわせて覚えておこう。
コメント