インターネット層のプロトコル(3):ARP
ARPの役割
あるホストにIPパケットを送る場合、その受け取り口であるLANポート(ネットワークインタフェース)に、イーサネットフレームとして運んでいきます。IPパケットを届けるには宛先ホストのIPアドレスが必要ですが、実はIPアドレスのほかにLANポートを識別する番号も必要です。この番号をMACアドレスといいます[12]。
ARP(Address Resolution Protocol)は、宛先ホストのLANポートを知るために、IPアドレスに対するMACアドレスを求めるプロトコルです。IPアドレスに対するMACアドレスを求めることをアドレス解決と呼びます。
しかし、なぜIPアドレスだけでIPパケットを宛先ホストに転送できないのでしょうか。なぜアドレス解決が必要なのでしょうか。それには次の理由があります。
アドレス解決を、人間同士の会話になぞらえて説明しましょう。会話をするには、相手に伝えたい内容を声にして、相手の耳まで届けなければいけません。TCP/IPでは、ホストが会話相手の人格に相当し、IPアドレスで特定します。伝えたい内容はIPパケット、声はイーサネットフレームです。会話相手の耳はホストのLANポートに相当し、MACアドレスで特定します。
ポイントは、会話をするには「会話相手の耳」に声を届けなくてはならない点です。ホストはOS上の設定でIPアドレスを変更できますし、LANポートの差し替えもできます。人間ではあり得ませんが、TCP/IPでは人格(ホスト)と耳(LANポート)の対応関係が変わってしまう場合があるわけです。そのため、宛先ホストのIPアドレスと、そのLANポートのMACアドレスを対応付けるアドレス解決が必要なのです。
注
[12]: IPアドレスおよびMACアドレスの詳細は、本連載の後の回で改めて解説します。
ARPの動作
ARPによるアドレス解決が可能な範囲は、同じネットワーク内に限られます。MACアドレスは、同じネットワーク内のLANポート間のデータ(イーサネットフレーム)の転送を行うためのアドレスだからです。
ARPのアドレス解決では、次の2つのメッセージを利用します。
- ARPリクエストメッセージ
- ARPリプライメッセージ
送信元ホストが、宛先ホストにIPパケットを送信しようとするとき、アドレス解決がどのように行われるのかを見てみましょう。
① 宛先ホストのMACアドレスを求めるために、ARPリクエストメッセージをブロードキャスト[13]し、同一ネットワーク内のすべてのLANポートへ転送します。ARPリクエストメッセージの内容は、「このIPアドレスを持つホストは、MACアドレスを教えてください」というものです。
② 該当するIPアドレスをもつホストは、ARPリプライメッセージで自身のMACアドレスを通知します。これで宛先IPアドレスに対応するMACアドレスがわかり、アドレス解決が完了します。
③ ただし、毎回アドレス解決を行うのは手間なので、アドレス解決したIPアドレスとMACアドレスの対応は、ARPキャッシュに一定時間保存されます。以後、送信元ホストは同じ宛先ホストにIPパケットを送信する際、その情報を利用します。ARPキャッシュは、MACアドレスを問い合わせた(ARPリクエストメッセージをブロードキャストした)送信元ホストだけでなく、MACアドレスの問い合わせを受けた(ARPリプライメッセージを返した)宛先ホストにも作成されます。
なお、アプリケーションのユーザは、ARPやアドレス解決を意識する必要はありません。何も設定しなくても自動的に行われます。
宛先ホストと送信元ホストが異なるネットワークにある場合には、外部のネットワークとの接点となる機器(デフォルトゲートウェイと呼ばれるが、実体としてはルータ)のアドレス解決を行います。
注
[13]: 同一ネットワークに接続されているコンピュータすべてに宛てて送信すること。