ネットワークの基礎講座
IP(インターネット・プロトコル)
アドレス解決プロトコル(ARP: Address Resolution Protocol)
IPは下位(物理ネットワーク)層にIPデータグラムの送信を依頼するときに、これを送るべき相手の物理ネットワーク・アドレスを知らせてやらねばならない。しからば物理ネットワーク・アドレスはどうやって知るのであろうか。宛先IPアドレスと送り先物理ネットワーク・アドレスとは対応しない。相手のホストの物理ネットワーク・アドレスである場合もあるだろうし、中継ルータの物理ネットワーク・アドレスであるかも知れない。ある宛先IPアドレスのデータグラムを、その(サブ)ネットワークのなかのだれ(次ホップ”Next Hop”という)が取ってくれるのかと、その物理ネットワーク・アドレスを調べる必要がある。
これに対処するには、あらかじめIPアドレスと次ホップの物理ネットワーク・アドレスを登録・固定させておく方法も考えられるが、ネットワークがフレキシブルに変動し、またそのテーブルが大きくなることを考えれば得策ではない。
ARPはその為に用意されたメカニズムである。IPデータグラムを送信するたびにこのメカニズムで問合せを行うのは効率的でなく、通常ホストはARPキャシュと呼ばれるテーブルを用意し、それに載っていないIPアドレスに対してはそのネットワーク上のホストやルータへの問合せを行う。ARPはイーサネットなどブロードキャスト機能を持つ物理ネットワーク層にのみ有効である。例えばX.25などのネットワークでは動作しない。
|
ARP要求(ブロードキャスト)と応答(ポイント対ポイント)の物理ネットワークのフレーム書式は次のようである(要求も応答も同じ書式)。
|
physical layer header |
x bytes |
|
ARP Packet |
hardware address space |
2 bytes |
|
protocol address space |
2 bytes |
||
hardware address byte length (n) |
protocol address byte length (m) |
2 bytes |
|
operation code |
2 bytes |
||
hardware address of sender |
n bytes |
||
protocol address of sender |
m bytes |
||
hardware address of target |
n bytes |
||
protocol address of target |
m bytes |
||
ここに:
Hardware address space: Ethernetなどの物理層のタイプを指定
Protocol address space: IEEE802ヘッダのプロトコル・タイプと同じ(IPまたはARP)
Hardware address byte length: 物理アドレスのバイト長。イーサネットでは6
Protocol address byte length: プロトコル・アドレスのバイト長。IPでは4
Operation code: ARP要求(1)またはARP応答(2)のどれか
Source / target hardware address: IEEE 802のときは48ビット・アドレスの値
Source / target protocol address: IPの時は32ビット・アドレスの値
このARP要求/応答物理フレームを受信したら、要求側および応答側は次のフローに従う。
|