IPアドレスだけが解っている宛先に対して、実際にどうやってパケットを届けることができるのか?仕組みを見てみましょう。
ARPテーブル
IPで通信する機器は、通常「ARPテーブル」というものを内部に持ち、都度更新しながら維持しています。
「ARP」とは「Address Resolution Protocol」のことで、 RFC 826として定義されました。
ARPテーブルとは、IPアドレスと、そのIPアドレスを持つ機器のMACアドレスを紐づけたデータベースです。IPプロトコルスタックが作成したIPパケットの宛先IPアドレスを基にARPテーブルを参照し、対応する宛先MACアドレスを決定してL2フレームのMACアドレスフィールドにセットし送信します。
ARPプロトコル
ARPテーブル内に宛先IPアドレスのエントリがない場合、該当IPアドレスのセグメントにつながっているポートからARPプロトコルを使って、該当IPアドレスを持っている機器にMACアドレスを教えるよう依頼し、もらった返事を使ってARPテーブルを更新します。
ARPプロトコルでは、以下の手順で宛先機器のMACアドレスを入手します。
- 「ARPリクエスト」フレームをブロードキャストします
- 該当のIPアドレスを持った機器は、この「ARPリクエスト」に対して、リクエスト元MACアドレス宛のユニキャストで「ARPリプライ」で自身のMACアドレスを通知します。
宛先IPアドレスが自身のIPセグメントと異なる場合には、自身が持っているルーティングテーブルを参照し、該当IPアドレスを含むセグメント宛に転送してくれるゲートウェイ(ルータ)のIPアドレスについてのARPリクエストを送信してゲートウェイのMACアドレスを得ます。
コメント