パケットを送るときには、ルーティングテーブルを見て次の転送先のIPアドレスを調べる。

しかし、MAC アドレスが個人名(マイナンバー)で、IPアドレスは住所である。 IPアドレスだけがわかっていても、MACアドレスがわからなければ本人に届けることはできない。 実際、Ethernetでは、データフレームの送信にMACアドレスが利用されている。

そのため、IPアドレスからMACアドレスを知る方法が必要になる。 そこで生み出されたのが、ARP(Address Resolution Protocol)というプロトコルである。

このプロトコルでは、ブロードキャストを利用して、同じEthernetに接続されているすべてのノードに対してMACアドレスの問い合わせ処理をする。

  1. IPアドレスを検索キーにしてMACアドレスを問い合わせるARP要求パケットを送信
  2. 問い合わせ対象のIPアドレスを持っているノードは、問い合わせをしているノードに向けて、ARP応答パケットでMACアドレスを伝える

ルータはブロードキャストパケットを遮るため、ARP要求パケットは同一データリンク内にしか届かない。 問い合わせ対象のIPアドレスを持つノードが他のデータリンクにある場合は、転送先のIPアドレスをもつルータが応答パケットを返す。 この場合、目的のホストに届くまで、ARPと最寄りのルータへのIPパケット配送が繰り返される。

IPパケットの配送処理は、ARP応答を受信した後で開始される。 そのため、IPパケットを配送するたびにARPパケットのやりとりをするのでは、通信速度の低下が考えられる。

そこで、ホストやルータでは、ARP応答で得られたMACアドレスの有効期間を決め、数分間キャッシュしておくようになっている。

有効期間が切れたら、そのMACアドレスに関する情報は削除され、再度必要になったらまたARP要求パケットを送信するようにする。

MACアドレスをキャッシュするデータベースをARPテーブルといい、このテーブルはarpコマンドで表示できる。