ARPとは?アドレス解決プロトコルのすべて

こんにちは。

今回は、

「ARP」

について解説します。

今回の記事では、あなたのこんな疑問を解消していきます。

こんな疑問を解消!
  • アドレス解決ってどういうこと?
  • ARPの仕組みを教えて欲しい!
  • ARPテーブルってどういうものですか?
  • ARPパケットの中身がよくわかりません!

ARPは、IP通信を支える重要なプロトコルです。

「IPがあれば通信できるんでしょ!」

って思われるかもしれませんが、IPだけではネットワークは繋がらないのです。

実は、ARPがなければ、こうやってあなたがインターネットを使ってブログを見ることもできません。

IPを支える重要なプロトコルであるARPについて学んでいきましょう。

1.ARPとは?

ARPとは、Address Resolution Protocolの略であり、文字通りアドレス解決のためのプロトコルです。

IPと同様、インターネット層のプロトコルです。

アドレス解決とは、IPアドレスからMACアドレスを取得することです。

なぜMACアドレスを取得しなければならないのでしょうか?

 

宛先のIPアドレスがわかれば、IPによって異なるネットワークに対してもパケットを送信することができます。

しかし、実際にLAN(同一ネットワーク)内で通信する時には、LAN内の位置情報であるMACアドレスが必要になります。

宛先IPアドレスがわかっても、LANにおいて送るべき相手のMACアドレスが分からなければ、そのデータを転送することはできません。

その時に宛先IPアドレスと対応するMACアドレスを取得するためのプロトコルがARPです。

2.ARPの仕組み

ARPでは、ARP要求パケットとARP応答パケットを利用してMACアドレスを取得します。

実際には以下の手順でMACアドレスを取得します。

  1. ARPテーブル参照
  2. ARP要求送信
  3. ARP応答送信
  4. ARPテーブル更新

※ARPテーブルとは、ARPによって取得したIPアドレスとMACアドレスの対応情報を、各ホストが一定時間保持しているもののことです。

ちなみに、ARPによるアドレス解決は自動的に行われます

そのため、TCP/IPのネットワークを構築するときは、MACアドレスを意識する必要はありません。IPアドレスのみを考えて設定すればいいのです。

 

それでは、ホストAがLAN内のホストBに対してデータを転送するの時の流れを見てみましょう。

ホストAとホストBの条件は以下の通りです。

ホストA

  • IPアドレス:192.168.10.1
  • MACアドレス:AA:AA:AA:AA:AA:AA

ホストB

  • IPアドレス:192.168.10.2
  • MACアドレス:BB:BB:BB:BB:BB:BB

 

2−1.ARPテーブル参照

ホストAが192.168.10.2 宛(ホストB)にIPパケットを送信したいとします。

そのとき、ホストAは自分のARPテーブルを参照して、192.168.10.2 に対応するMACアドレスがないかを確認します。

 

2−2.ARP要求送信

上の図のように、ARPテーブルに192.168.10.2 に対応するMACアドレスがないとき、ホストAはARP要求パケットを生成し、ブロードキャストで送信します。

2−3.ARP応答送信

ARP要求パケットを受信した全ホストは、パケットを確認して、自分のIPアドレスと一致するか調べます。

ホストBは、自分のIPアドレスと一致するため、自分向けのARP要求だと判断してARP応答パケットを送信します。

また、同時にホストBは、送信元のホストAのIPアドレスとMACアドレスを自分のARPテーブルに登録します。

一方、ホストC、Dは自分のIPアドレスと一致しないため、自分には関係ないと判断してARP要求パケットを破棄します。

2−4.ARPテーブル更新

ARP応答パケットを受信したホストAは、ホストBのIPアドレスとMACアドレスを自分のARPテーブルに登録します。

そして、バッファに保留しておいたホストB宛のパケットをイーサネットヘッダでカプセル化して送信します。

 

ARPテーブルに登録されたMACアドレスは一定時間保持されます。

保持される時間は機器によって違いますが、一定時間経過したら破棄されます。

これは、IPアドレスとMACアドレスの対応が変わっても正確にパケットを送信できるようにするためです。

3. ARPテーブル

ARPテーブルは、あなたのパソコンでも確認することができます。

Windowsの場合もMacintoshの場合も、コマンドプロンプト、またはターミナルで

コマンド : arp -a

で確認することができます。

Windowsのコマンドプロンプトで「arp -a」を入力したときの表示例が下の図です。

①インターフェイスアドレスは、自分のIPアドレスが表示されています。

②インターネットアドレスは、IPアドレスのことです。

③物理アドレスは、MACアドレスのことです。

④種類は、「動的」と「静的」があります。

 動的は、ARPで動的に取得した情報であることを示します。

 静的は、手動で登録した情報であることを示します。

4.ARPフォーマット

ARPパケットのフォーマットは図の通りです。

先程からARP「パケット」と言っていますが、これはIPと同様インターネット層で動作するプロトコルだからです。

インターネット層で動作するプロトコルなので、PDUはパケットです。

ARPパケットのフォーマットについて解説しますが、暗記する必要はありません。

ARPの流れをしっかり理解していれば、それで十分です。参考程度にご覧ください。

4-1.ハードウェアタイプ(16ビット)

ハードウェアタイプは、ハードウェアの種別のことです。

ネットワークインターフェイス層のプロトコルが入ります。

イーサネットの場合は、16進数で「0x0001」が入ります。

実際は2進数なので、

「0000 0000 0000 0001」

となります。

4-2.プロトコルタイプ(16ビット)

プロトコルタイプは、上位のプロトコルの種別のことです。

上位プロトコルがIPの場合は、16進数で「0x0800」が入ります。

2進数に変換すれば、

「0000 1000 0000 0000」

となります。

4-3.ハードウェア長(8ビット)

ハードウェア長は、ハードウェアアドレスの長さのことです。

ハードウェアアドレスの長さを何バイトなのかで表して、その数字を2進数に変換して入れます。

ハードウェアアドレスとは、MACアドレスのことなので、その長さは6バイトです。

2進数で表すので、

「0000 0110」

となります。

4-4.プロトコル長(8ビット)

プロトコル長とは、プロトコルアドレスの長さのことです。

プロトコルアドレスの長さを何バイトなのかで表して、その数字を2進数に変換して入れます。

プロトコルアドレスとはIPアドレスのことなので、その長さは4バイトです。

2進数で表すので、

「0000 0100」

となります。

4-5.オペレーション(16ビット)

オペレーションは、ARPパケットがARP要求なのかARP応答なのかを識別するための情報です。

ARP要求の場合は、16進数で「0x0001」が入ります。

2進数で表すので、

「0000 0000 0000 0001」

となります。

ARP応答の場合は、16進数で「0x0002」が入ります。

2進数で表すので、

「0000 0000 0000 0010」

となります。

4-6.送信元MACアドレス(48ビット)

送信元MACアドレスは、文字通りARPパケットを送信するホストのMACアドレスが入ります。

この情報は、イーサネットのフレーム転送に使われるわけではなく、あくまでARPで処理されます。

上の説明で、ARP要求を受け取ったホストBが、送信元のホストAのMACアドレスを自分のARPテーブルに登録していました。

そのような処理のときに使われる情報です。

4-7.送信元IPアドレス(32ビット)

送信元IPアドレスも、そのままARPパケットを送信するホストのIPアドレスのことです。

こちらの情報も、送信元MACアドレスと同様、ARPで処理される情報です。

上の説明で、ARP要求を受け取ったホストBが、送信元のホストAのIPアドレスを自分のARPテーブルに登録していました。

そのような処理のときに使われる情報です。

4-8.宛先MACアドレス(48ビット)

宛先MACアドレスとは、ARPパケットを受信するホストのMACアドレスです。

しかし、ARP要求のときは相手のMACアドレスを知るはずがありません。それを知るためにARPを処理しているわけですから。

なので、ARP要求の場合は、16進数で

「00-00-00-00-00-00」

が入ります。

2進数に変換すれば、0が48個になります。

ARP応答の場合は、ARP要求を受信するホストのMACアドレスが入ります。

上の説明でいえば、ホストAのMACアドレスです。

4-9.宛先IPアドレス(32ビット)

宛先IPアドレスとは、ARPパケットを受信するホストのIPアドレスです。

ARP要求の場合は、MACアドレスを知りたいホストのIPアドレスを入れます。

ARP要求を受け取ったホストは、このIPアドレスが自分のものと一致するかを確かめます。

一致すれば、ARP応答で自分のMACアドレスを教えます。

5.まとめ

いかかでしたでしょうか?

ARPの重要性や、ARPの動作について理解していただけましたでしょうか。

ARPの動作は一度理解してしまえば、案外簡単なものだとわかります。

ぜひ、何度も読んであなたのものにしてください。

今回も最後まで読んでくださり本当にありがとうございました。

 

この分野も記事を書いてほしい!
ここがわらかないから教えてほしい
など、ブログを読んで疑問に思ったこと・気づいたことなど、何でもメールしてください!

  お問い合わせはこちら