ARPの基礎について説明します。
ARP(Address Resolution Protocol)とは
概要
ARP(アープ)とは、「Address Resolution Protocol」の略で、IPアドレスからMACアドレスを解決(学習/取得)するためのプロトコルです。TCP/IP通信において、最終的に目的地(宛先ホスト)に辿り着くためには、その機器が持っているMACアドレスが必要です。
特定のIPアドレス(宛先ホスト)のMACアドレスを知りたい機器は、ARP要求(ARPリクエスト)をネットワーク全体に送信し、そのIPアドレスを持っている機器は、ARP応答(ARPリプライ)を返信します。ARP応答を受け取った機器は、自身のARPテーブルにその情報を記載し、以降はその情報を利用して通信を行います。
TCP/IP通信の詳細については、下記を参照してください。
ネットワーク例
下記ネットワークにおける、ホストAからホストBへの通信を例とします。
ARP要求(ARPリクエスト)
ホストAはホストBのIPアドレスは知っていますが、MACアドレスは知らないため、ARP要求(ARPリクエスト)をネットワーク全体に送信します。※ブロードキャスト通信
ARP応答(ARPリプライ)
ホストB(192.168.1.2)は、自身のIPアドレスのARP要求であることを認識し、ARP応答(ARPリプライ)を送信します。※ユニキャスト通信
無事にホストBのMACアドレスを取得したホストAは、実際の通信を開始できます。
ARPの種類
上述の説明は、一般的なARPの概要ですが、実はARPには様々な種類があります。
名前 | 略称 | 読み方 | 説明 |
---|---|---|---|
ARP | – | アープ | 一般的なARP。IPアドレスからMACアドレスを解決するためのプロトコル。 |
Reverse ARP | RARP | リバースアープ | MACアドレスを元にIPアドレスを割り当てるためのプロトコル。 IPアドレス割り当ては、DHCPの利用が一般的なため、あまり利用されていない。 |
Gratuitous ARP | GARP | グラチューイタスアープ | IPアドレスの利用有無の確認や周辺機器のARPキャッシュをクリアするために利用されるプロトコル。 Cisco機器では、HSRPの冗長切り替わりの際に利用される。 |
Proxy ARP | – | プロキシアープ | 自身が保持していないIPアドレスに対するARP要求に対して、代理で応答する機能。 ARPの種類ではなく、正確には「ARPの特殊な使われ方」にあたるが、あまり利用されていない。 |
通常のARP以外の説明は、下記を参照してください。
ARP通信のパケット詳細
ARP要求(ARPリクエスト)とARP応答(ARPリプライ)の詳細について説明します。
ARP要求(ARPリクエスト)の詳細
ARP要求のパケットの中身を確認します。
1 52:54:00:00:36:67 → ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.2? Tell 192.168.1.1
Frame 1: 42 bytes on wire (336 bits), 42 bytes captured (336 bits)
Ethernet II, Src: 52:54:00:00:36:67, Dst: ff:ff:ff:ff:ff:ff
Destination: ff:ff:ff:ff:ff:ff
Source: 52:54:00:00:36:67
Type: ARP (0x0806)
Address Resolution Protocol (request)
Hardware type: Ethernet (1)
Protocol type: IPv4 (0x0800)
Hardware size: 6
Protocol size: 4
Opcode: request (1)
Sender MAC address: 52:54:00:00:36:67
Sender IP address: 192.168.1.1
Target MAC address: 00:00:00:00:00:00
Target IP address: 192.168.1.2
イーサネットヘッダ
項目 | 表記 | 説明 |
---|---|---|
送信先MACアドレス | Destination | ARP要求はブロードキャストのため、送信先は「ff:ff:ff:ff:ff:ff」 |
送信元MACアドレス | Source | ARP要求を送信しているホストのMACアドレス |
イーサネットタイプ | Type | ARPのイーサネットタイプは「0806」 |
ARP要求のフォーマット
項目 | 表記 | 説明 |
---|---|---|
ハードウェアタイプ | Hardware type | イーサネットの場合は「1」 |
プロトコルタイプ | Protocol type | IPv4の場合は「0800」 |
ハードウェアサイズ | Hardware size | イーサネットの場合はMACアドレスのサイズ「6Byte」 |
プロトコルサイズ | Protocol size | IPv4の場合はIPアドレスのサイズ「4Byte」 |
オペレーションコード | Opcode | ARP要求の場合は「1」 |
送信者MACアドレス | Sender MAC address | ARP要求を送信しているホストのMACアドレス |
送信者IPアドレス | Sender IP address | ARP要求を送信しているホストのIPアドレス |
送信先MACアドレス | Target MAC address | ARP要求の場合は、解決したいMACアドレスのため「00:00:00:00:00:00」 |
送信先IPアドレス | Target IP address | ARP解決したい対象のIPアドレス |
ARP応答(ARPリプライ)の詳細
ARP応答のパケットの中身を確認します。
2 52:54:00:09:8c:cf → 52:54:00:00:36:67 ARP 60 192.168.1.2 is at 52:54:00:09:8c:cf
Frame 2: 60 bytes on wire (480 bits), 60 bytes captured (480 bits)
Ethernet II, Src: 52:54:00:09:8c:cf, Dst: 52:54:00:00:36:67
Destination: 52:54:00:00:36:67
Source: 52:54:00:09:8c:cf
Type: ARP (0x0806)
Padding: 000000000000000000000000000000000000
Address Resolution Protocol (reply)
Hardware type: Ethernet (1)
Protocol type: IPv4 (0x0800)
Hardware size: 6
Protocol size: 4
Opcode: reply (2)
Sender MAC address: 52:54:00:09:8c:cf
Sender IP address: 192.168.1.2
Target MAC address: 52:54:00:00:36:67
Target IP address: 192.168.1.1
イーサネットヘッダ
項目 | 表記 | 説明 |
---|---|---|
送信先MACアドレス | Destination | ARP要求を送信したホストのMACアドレス |
送信元MACアドレス | Source | ARP応答を送信しているホストのMACアドレス |
イーサネットタイプ | Type | ARPのイーサネットタイプは「0806」 |
ARP応答のフォーマット
項目 | 表記 | 説明 |
---|---|---|
ハードウェアタイプ | Hardware type | イーサネットの場合は「1」 |
プロトコルタイプ | Protocol type | IPv4の場合は「0800」 |
ハードウェアサイズ | Hardware size | イーサネットの場合はMACアドレスのサイズ「6Byte」 |
プロトコルサイズ | Protocol size | IPv4の場合はIPアドレスのサイズ「4Byte」 |
オペレーションコード | Opcode | ARP応答の場合は「2」 |
送信元MACアドレス | Sender MAC address | ARP応答を送信しているホストのMACアドレス |
送信元IPアドレス | Sender IP address | ARP応答を送信しているホストのIPアドレス |
送信先MACアドレス | Target MAC address | ARP要求を送信したホストのMACアドレス |
送信先IPアドレス | Target IP address | ARP要求を送信したホストのIPアドレス |
以上で、ARPとは(アドレス解決の概要と通信の仕組み)の説明は完了です!