しかし、上記のような流れはLAN内のみのARP解決である故に可能であって実際に、インターネット上に存在する特定のコンピュータと通信を行いたい場合はどうなるのでしょうか?実はこの場合においてはARPプロトコルを利用してもターゲットコンピュータのMACアドレスを取得することはできません。なぜなら、MACアドレスは元来、LAN内のみで利用するプロトコルであって、何よりもルータは、ブロードキャストパケットをLAN外へは送出しない仕様になっているからです。この場合は、プロキシARPという、なんらかの理由でARPが行えないホストのために代理のハードウェアが代わりにARPを実行する機能を利用することになります。つまり、相手先のMACアドレスが得られないわけですから、相手先のルータのMACアドレスを代わりに取得し、とりあえずはそのルータまでデータを送出します。そして、そのデータパケットを受信した相手先のルータは最終目的地のMACアドレスを求めるためにLAN内全体に対してブロードキャストパケットを送り出すことになります。あとは上記で述べた手順を繰り返していくわけです。 つまり、ルータを超えてパケットがルーティングされていく場合、IPアドレスは不変となりますが、MACアドレスはルータを越えるごとに書き換えられていきます。 ①ネットワーク内部で通信を行う場合は、必ず送り先のIPアドレスとMACアドレスの両方が必要となる。 ②外部ネットワークでパケットがルーティングされていく段階では、最終目的地となるコンピュータのMACアドレスは必要ない(つまり、相手先のルータのMACアドレスさえわかればよい)。ルーティングにはIPアドレスのみが使用されます。 ■ARPキャッシュ ARPはTCP/IPにとっては不可欠な仕組みですが、手間がかかるという欠点があります。というのもいちいち通信が発生するたびに毎回ブロードキャストパケットを送出していたのではネットワークのトラフィックが増大してしまいます。そこで各コンピュータは一度取得したMACアドレスに関しては「ARPキャッシュ」と呼ばれる特殊なメモリに格納し、一定期間、情報を保持するようになっています。