ARPとは? MACアドレスの解決! 

目標のIPアドレスの機器にIPパケットを送るためには、そのパケットを入れるフレームを作らければ なりません(データリンク層の仕事です)。 そして、フレームの送り先となるホストのMACアドレスが分からないと、フレームを作れません。
このIPアドレスからMACアドレスを調べる時に使われるデータリンク層のプロトコルがARP(アープと呼びます。)です。
ブロードキャストを使うので、同一ネットワーク内にあるホストのMACアドレスしか調べることができません。

MACアドレスはARPテーブルを参照して求めますが、ARPテーブルにない場合は、ARPで調べることになります。
ARPは、Address Resolution Protocolのりゃくで、 IPアドレスからMACアドレスを調べる時に使われるデータリンク層のプロトコルです。
一度調べると、 IPアドレスとMACアドレスの表(→ARPテーブルと呼びます)に登録されますが、 ある時間が経過すると消去されるようになっています。 (それにより、マシンの交換などでネットワークの接続状態が変っても対応できるようになっています。)

ARPテーブルを参照したり、テーブルへの追加や削除するコマンドがARPの名前で 用意されています。以下は-aのオプションでテーブルを表示させている実行例です。

Z:\>arp -a

Interface: 192.168.0.33 --- 0x2
  Internet Address      Physical Address      Type
  192.168.0.1           00-e0-00-66-f4-db     dynamic
  192.168.0.22          00-07-40-dc-f0-31     dynamic
  192.168.0.73          00-08-0d-7b-5a-32     dynamic
  192.168.0.77          00-11-2f-6e-53-9a     dynamic
  
Z:\>

イーサネットのデータリンク層でも、ブロードキャスト通信とユニキャスト通信があります。
あて先MACアドレスをオール1(FF:FF:FF:FF:FF:FF)にしてフレームを送信すると、それはブロードキャスト送信となります。
この場合は、同じイーサネット・セグメントに接続されているすべてのコンピュータがこのフレームを受け取ることになります。
(IPレベルでブロードキャスト通信を行うと、イーサネット・レベルでもブロードキャスト通信になる。)
ARPの要求パケットは、このイーサネットのブロードキャストを利用します。
つまり直接に繋がっている全てのノードに伝達されます。ですが、MACアドレスを要求されたコンピュータのみがARPの応答パケットを返仕組みになっています。
この時に自身のMACアドレスを送り元アドレスをセットして応答することで、MACアドレスが伝わる仕組みになっています。

なお調べたいIPアドレスがそのネットワーク内に存在しない場合、どのノードも応答しないので、その場合のMACアドレスは解決できません。

TCPにより、送信情報が、イーサーネットへ送出されるまで!

イーサーネットではIPパケットをフレームと呼ぶ電気信号でんきしんごうのかたまりに入れてはこびます。
TCPプロトコルのプログラム(JavaのSocket利用)で、目的もくてきのホストへ接続せつぞくする過程かていを以下に示します。
どのようにフレームが作られるかが示してあります。
(下記クリックボタンが消えるまで説明のアニメーションがあります)

上記でわかるように、接続先のIPのホストへフレームをとどけるために、 ARPで、 IPアドレスからMACアドレスを調べています。 それをMACフレームの あて先MACアドレスに使って送出そうしゅつします。
なお、このARPによる問い合わせは毎回行われるものではありません。一度調べると、 IPアドレスとMACアドレスの表(ARPテーブル)が作られます。表に存在する場合は、その表のMACアドレスが使われて MACフレームが作られます。