パケットを送るときには、ルーティングテーブルを見て次の転送先のIPアドレスを調べる。
しかし、MAC アドレスが個人名(マイナンバー)で、IPアドレスは住所である。 IPアドレスだけがわかっていても、MACアドレスがわからなければ本人に届けることはできない。 実際、Ethernetでは、データフレームの送信にMACアドレスが利用されている。
そのため、IPアドレスからMACアドレスを知る方法が必要になる。 そこで生み出されたのが、ARP(Address Resolution Protocol)というプロトコルである。
このプロトコルでは、ブロードキャストを利用して、同じEthernetに接続されているすべてのノードに対してMACアドレスの問い合わせ処理をする。
ルータはブロードキャストパケットを遮るため、ARP要求パケットは同一データリンク内にしか届かない。 問い合わせ対象のIPアドレスを持つノードが他のデータリンクにある場合は、転送先のIPアドレスをもつルータが応答パケットを返す。 この場合、目的のホストに届くまで、ARPと最寄りのルータへのIPパケット配送が繰り返される。
IPパケットの配送処理は、ARP応答を受信した後で開始される。 そのため、IPパケットを配送するたびにARPパケットのやりとりをするのでは、通信速度の低下が考えられる。
そこで、ホストやルータでは、ARP応答で得られたMACアドレスの有効期間を決め、数分間キャッシュしておくようになっている。
有効期間が切れたら、そのMACアドレスに関する情報は削除され、再度必要になったらまたARP要求パケットを送信するようにする。
MACアドレスをキャッシュするデータベースをARPテーブルといい、このテーブルはarp
コマンドで表示できる。