はてなブックマーク Yahoo!ブックマークに登録  印刷
   
連載
基礎から学ぶWindowsネットワーク

3.ARPの例とARPコマンドの使い方

デジタルアドバンテージ
2003/05/09

 それでは実際のARPパケットの例を見てみよう。これは「192.168.0.103」というコンピュータから、「192.168.0.11」というコンピュータに対して、pingコマンドを1パケット送信した場合の例である。Windows Serverのネットワーク・モニタでキャプチャ・解析している。pingを1パケットだけ送信するので、ICMPのechoパケット(次回解説予定)が1往復するだけであるが、その前に、ARPによるアドレス解決のパケットが1往復している。

ARPの要求パケットの例
「192.168.0.103」というコンピュータから、「192.168.0.11」というコンピュータに対して通信しようとした場合のキャプチャ例。最初に相手先のMACアドレスを求めるため、ARP要求が送信されていることが分かる(ARPのエントリが存在する場合は、この要求は送信されない)。
  送信されたARP要求パケット。
  ARPパケット。ハードウェア・タイプは「Ethernet」、プロトコル・タイプはIPを表す「0x0800」、HLENとPLENはそれぞれ「6bytes」と「4bytes」。
  ARP要求を示している。
  送信元のMAC/IPアドレス。送信元MACアドレスはイーサネット・ヘッダ中の送信元MACアドレスと同じ。
  ARPで求めたいあて先のアドレス。
  あて先のMACアドレスは不明なのですべて0が入っている。
  イーサネットのヘッダ。あて先MACアドレスはFF-FF-FF-FF-FF-FF(ブロードキャスト)。送信元MACアドレスはと同じ。プロトコル・タイプは0x0806(ARP)。
  ARPパケット。28bytes。

 ブロードキャストで送信されるARP要求パケットには、送信元のIPアドレスやMACアドレス、あて先のIPアドレスがセットされている。だがあて先MACアドレス・フィールドにはすべて0が埋められていることが分かるだろう。この部分の情報は、ARPの応答によって始めて得られる。

 このARP要求パケットに対する応答の内容を次に示す。あて先と送信元のフィールドの内容がすべて入れ替わり、さらに送信元MACアドレス・フィールドにも値がセットされていることが分かるだろう。

ARPの応答パケットの例
上のARP要求パケットに対する応答の内容。あて先と送信元のフィールドの内容がすべて入れ替わり、さらに送信元MACアドレス・フィールドにも値がセットされていることが分かる。
  相手から返送されたARP応答パケット。
  ARP応答を示している。
  送信元(つまりMACアドレスを求めたいコンピュータ)のMAC/IPアドレス。こののフィールドは、ARP要求パケット中のものと比べると入れ替わっていることに注意。
  送信先(最初にARP要求を送信したコンピュータ)のMAC/IPアドレス。
  これが求めたかったMACアドレス。

ARPコマンドの使い方

 ARPテーブルの内容を表示させたり、変更したりするために、WindowsシステムにはARP.EXEというコマンドが用意されている。引数を何も付けずに実行すると使い方が表示される。

■ARPテーブルの表示
 現在のARPテーブルの内容を表示させるには、「-a」オプションを付けて実行する。

C:\>arp -a

Interface: 192.168.0.103 --- 0x2 …インターフェイス
  Internet Address      Physical Address      Type
  192.168.0.51          00-a0-c9-b4-08-22     dynamic
  192.168.0.54          00-d0-b7-5c-5e-0c     dynamic
  192.168.0.55          00-02-b3-8a-a5-03     dynamic
  192.168.0.112         00-da-ba-da-ba-da     dynamic

 この例では、全部で5つのエントリが表示されている。ARPキャッシュ・エントリの寿命はデフォルトでは10分なので、(最近まで)これらの5台と通信していた、ということが推測される。Type欄にある「dynamic」というのは動的なエントリを表しており、通常はすべてこのタイプになっている。動的とは、登録が自動的に行われ、さらに時間が経つと自動的に消滅するという意味である。だが以下のように手動でエントリを追加すると「static(静的)」となる。

 なおARPテーブルのエントリは、インターフェイスごとに管理されているので、システムに複数のインターフェイスがある場合は「Interface:」の項が複数表示される。

■ARPテーブルの追加
 ARPテーブルに手動でエントリを追加するには、「-s」オプションを付けて、IPアドレスとMACアドレスを指定する。

C:\>arp -a …元のARPテーブル

Interface: 192.168.0.103 --- 0x2
  Internet Address      Physical Address      Type
  192.168.0.51          00-a0-c9-b4-08-22     dynamic
  192.168.0.54          00-d0-b7-5c-5e-0c     dynamic
  192.168.0.55          00-02-b3-8a-a5-03     dynamic
 
C:\>arp -s 192.168.0.21 00-aa-00-62-c6-09 …静的エントリの追加

C:\>arp -a …新しいARPテーブル

Interface: 192.168.0.103 --- 0x2
  Internet Address      Physical Address      Type
  192.168.0.21          00-aa-00-62-c6-09     static …静的エントリ
  192.168.0.51          00-a0-c9-b4-08-22     dynamic
  192.168.0.54          00-d0-b7-5c-5e-0c     dynamic
  192.168.0.55          00-02-b3-8a-a5-03     dynamic 

 通常はこのオプションを使うことはないだろうが、(現在では)一部のプリント・サーバ(プリンタのパラレル・ポートに取り付けて、ネットワーク対応プリンタに変換するための装置)やルータなどで使われていることがある。それらの機器では、外部からIPパケットを送ると、自分自身のIPアドレスをそのIPパケットに合うように書き換える機能を持っている。これにより、簡単にIPアドレスを設定できるようにしている。例えば、そのネットワーク機器(のMACアドレス)に向けて「192.168.0.21」というあて先IPを持つパケットを送信すると、その機器のIPアドレスが自動的に「192.168.0.21」となるのである。そのようなパケットを特定のMACアドレスに向けて送信するには、あらかじめARPテーブルのエントリを用意しておけばよい。このために「-s」オプションが利用できる。こうすると、「192.168.0.21」に向けてパケットを送信しようとすると、自動的に指定したMACアドレスへ向けてイーサネット・フレームが送信される。

■ARPエントリの削除
 ARPエントリを強制的に削除するには、「-d」オプションを使う。ネットワーク機器を入れ換えたりした場合に、強制的にARPテーブルをフラッシュ(消去)したいような場合に利用する。本来ならば自動更新エントリは、通信が途絶えて(デフォルトでは)10分もすると削除されるはずだが、ネットワークの構成が複雑な場合(例:クラスタ構成などを使っているので、同じIPアドレスでも複数のMACアドレスがある、というような場合など)には、手動でARPエントリを削除したいことがある。「-d」オプションはこのような場合に利用する。「-d」オプションだけを指定すると、すべてのエントリが消去されるが、IPアドレスを指定して特定のエントリだけを削除することもできる。

C:\>arp -a …現在の状態

Interface: 192.168.0.103 --- 0x2
  Internet Address      Physical Address      Type
  192.168.0.51          00-a0-c9-b4-08-22     dynamic
  192.168.0.54          00-d0-b7-5c-5e-0c     dynamic
  192.168.0.55          00-02-b3-8a-a5-03     dynamic

C:\>arp -d …エントリを全部削除する

C:\>arp -a
No ARP Entries Found …すべて削除された

RARP

 ARPと似たプロトコルとして、「RARP(Reverse ARP)」というプロトコルもある。ARPパケットの構造のところで解説したように、RARPはARPと同じ構造のパケットを使っている。違いは、動作コードが異なるだけである(ARP要求/応答に対して、RARP要求/応答の2つがある)。ただしすべてのTCP/IPノードがARPをサポートしているのに対し、RARPはオプション規格であり、実装していないことも多い。特にRARPの要求にこたえる側(RARPサーバ)の機能は、特別なシステムでない限り持っていないことが多い。だが構造も機能も似ているので、ここで紹介しておこう。RARPはRFC903「A Reverse Address Resolution Protocol」で定義されている。

 RARPは名前のとおり、ARPとは逆の動作をするためのプロトコルである。ARPが「IPアドレスからMACアドレスを求める」プロトコルであるのに対し、RARPは「MACアドレスからIPアドレスを求める」ために使われる。現在ではこのような目的に使われるプロトコルとして、BOOTPDHCPが広く一般的に使われているが、10年ほど前まではこのRARPを使って起動するようなシステム(特にディスクレスのUNIXワークステーションなど)も多かった。

 RARPのクライアントは、システムの起動時に自分自身のMACアドレスをRARPサーバに対してブロードキャストする。するとRARPのサーバはそのMACアドレスに対するIPアドレスをRARPの応答パケットに入れて返送する。これによってRARPのクライアントは自分自身のIPアドレスを取得することができ、その後のシステムのブート作業を続行することができるのである(RARPの送受信部分は、専用の小さなブート・コードとしてあらかじめシステムのROMの中に用意しておく)。

 RARPは、機能や原理は単純であるが、ARPと同じパケット構造を使っているので、IPアドレスしか渡せず、ドメイン名ゲートウェイサブネット情報などを渡すことができない。またブロードキャストでしか利用できないので(ルータを越えることができない)、現在ではBOOTPやDHCPにとって代わられている。End of Article

 

 INDEX
  [連載]基礎から学ぶWindowsネットワーク
  第11回 MACアドレスを解決するARPプロトコル
    1.ARPプロトコルとは
    2.ARPプロトコルの動作
  3.ARPの例とARPコマンドの使い方

 連載
Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード


スキルアップ/キャリアアップ
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  New! 納得の開発環境「MyEclipse」で構築する
Amazon Webサービスを利用したECサイト!

  New! “予防”と“発見”で強化する内部統制
――@IT主催内部統制セミナー詳細

  「番次郎さん、WSSが使えそうです!」
“いぶき”がついに、難題突破口を発見!

  ORACLE MASTER取得者へ林優子氏が指南!
「次に身に付けるべきスキルとは……」

  フロントシステムの4つの課題を解決!
企業システムでAjaxが実用化段階に

  サン&オラクル推奨のデータベース環境。
驚きのパフォーマンス性能に迫る!

  2008年:これが成功するITエンジニア像だ!
〜エンジニア・キャリア進化論(第2回)〜

  オープンソースのアプリケーションサーバ
GlassFishのレシピを紹介します!

  「地方のエンジニアも幸せにしたい」
その思いがニアショア開発へとつながった

  「学ぶ」だけで「経験」が身に付く?
ITエンジニアの私が大学に入学した理由

  ■ メール管理者の悩みを軽減する! ■
情報漏えい、スパム対策の最新アプローチ

  マーケティングのプロがSPSSを選んだ
理由:「プロでなくても使えるから」

  フリーエンジニアのための社会保険入門
万が一の時、リスクにどう備えるべきか?

  ■ボトルネックバスターズ 2■ 連載 第2話
「彗星寺先生」現る!――答えはどっちだ!?

  障害の発生前に事前通知!!復旧時間を
早める切札で、サーバ管理がラクになる!