第 10 回 無線 LAN, ARP

本日の内容


このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。

10-1. 無線 LAN

IEEE 802.11 委員会では物理層として赤外線、電波を使用する LAN の規格の 標準化が行われています。 そこで提案されたのが IEEE 802.11a, b, g です。

802.11a802.11b802.11g
使用周波数 5GHz 2.4GHz(電子レンジなどと同じ)
通信速度 54Mbps 11Mbps 54Mbps
伝送方式 OFDM HR/DSSS OFDM

業界団体 WECA(ワイヤレス・イーサネット・コンパティビリティ・アライアン ス) は IEEE802.11 で相互に互換性を保証するブランドとして WIFI(Wireless Fidelity) という名前を使ってます。

無線LANの特性

Ethernet の CSMA/CD 方式では LAN のサイズがあらかじめ決まっているので、 チャネルが空いているかどうかはチャネルを受信すればわかります。 また、宛先にパケットが到達したことは送信後一定時間混信がなければ判定で きます。 しかし無線 LAN では隠れ局問題露出局問題という 問題があり、チャネルの空きを判定するのが困難です。

隠れ局問題

隠れ局問題 C から B へデータを送信していても、 C の電波は A に届かないため、 A は B に送信可能だと考える。 しかし、A から B には送信できない。

露出局問題

露出局問題 C から D へデータを送信している間、 C の電波は B に届くため、B はチャ ネルは塞がっていると考える。 実際は B から A へデータを送ることができる。

送信方式

無線 LAN には DCF と PCF の二種類の送信方式があります。 DCF(Distributed Coodination Function 分散制御機構)は各ホストが相互に通 信を制御する方式でアドホックネットワークとも言われます。 一方 PCF(Point Coodination Function 集中制御機構)は一点で通信を制御す る方式でです。

競合回避

PCF では中央の局が全てを管理するため競合は起きません。 基地局は各端末局に対して送信データの有無を聞く、ポーリングサービスを行 います。 また、基地局がビーコン・フレームと呼ばれる定期的なパラメータの送信を行 い、新規の局はポーリングサービスに参加できるようになってます。

一方、 DCF では競合回避のアルゴリズムとしてCSMA/CA(Carrier Sence, Multiple Access, Collision Avoidance) が用いられます。 これは二つのアルゴリズムを含みます。 一つは送信前にキャリアを検出しますが、検出した時は 802.3 の巾乗バック オフのように送信時間をずらします。 もう一つは仮想チャネルを考える物で次のような工程でデータを送ります。

  1. 送信者はデータを転送する前に転送許可要求を送る。
  2. 受信者は転送許可を与える。
  3. 送信者は転送許可を受け取ったら、データを転送する。
  4. 受信者はデータを受け取ったら ACK を送る

この際、送受信者以外は転送許可要求または転送許可を受信したらチャネルを 使用するのを止めます。そして、データの終了または ACK を受信したらチャ ネルを使用できます。

PCF と DCF の混在

集中管理と分散管理の併用は困難なように思えますが、ACK をトリガーとして プロトコルを時分割で使用すると併用できるようになります。 ACK の送信後の時間を次のように 4 つに区切ります。

  1. 対向通信用
  2. 基地局用
  3. 新規局用
  4. エラー、その他

セキュリティ

WEP(Wired Equivalent Privacy) は無線 LAN が有線 LAN と同等 のセキュリティレベルを持つように考案されたセキュリティモデルです。 これは基地局と端末で 128 bit の共通鍵を用い、 RC4 と呼ばれる暗号方式を 使ったストリーム暗号です。 但し、 RC4 自体は 2001 年に破られてしまい安全ではありません。 そして、 IEEE は WEP が破られてしまったことに対し 802.11i という規格で 新しい暗号を出すと発表しました。

IEEE 802.11i の策定には時間がかかったため、 2002 年 10 月にその規格の 一部を先取りした WPA(Wi-Fi Protected Access)という規格を出しました。

2004年6月になってようやくIEEE802.11iが策定されたので、これをました。こ れを受け、WECA は IEEE802.11i仕様と同じ機能を備えたWPA2を発表しました。 Microsoft は 2005 年 5 月に Windows XP SP2 用の WPA2 に対応したモジュー ルを発表しました。

10-2. ARP

Ethernet では相互の通信は Ethernet のプロトコルで行います。 そのためにはMAC アドレス(Ethernet アドレス)を使用します。 一方、インターネットでは IP アドレスを使用して通信を行うことになってま す。 インターネットとして Ethernet を使うにはどうすれば良いのでしょうか? そのためには IP アドレス同士の通信を MAC アドレス同士の通信に変換 する必要があります。

ARP(Address Resolution Protocol RFC826) は特定の IP アドレ スから、その IP アドレスを持つホストの MAC アドレスを取得するプロ トコルです。 これを用いると同一ネットワーク上の IP 通信を Ethernet で行うことができ ます。

ARP の手順

IP アドレス A のホストから IP アドレス B のホストへ通信を行うことを考 えます。 A の MAC アドレスは X、 B の MAC アドレスは Y とします。

  1. 始めに A は Ethernet のブロードキャストアドレスに対して「IP アドレ ス B を持つホストは連絡して」というメッセージを送ります。 これには送信元の MAC アドレス X が付加されてます。
  2. すると同一ネットワーク上の全てのホストがそのメッセージを聞き、 IP アドレス B を持つホストだけが「Y が B のアドレスです」というメッセージ を X 宛のユニキャストで送ります。

送られて来たIPアドレスと MAC アドレスの対応の情報は ARP テーブル というテーブルに蓄えられてます。これを操作するのが arp です。 ARP テーブルを表示するには次のようにします。

arp -a

ARP テーブル蓄えられたアドレスは数分で消えます。 しかし、一旦あるホスト X に付けた IP アドレス A を別のホスト Y で使お うとする時、X と通信を行っていたホスト Z には数分の間、ARP テーブルに X と A の組が残ることになり、その間ホスト Y とは通信できません。 また、大量のファイル転送を行うときなどに、無線 LAN から有線 LAN へ切替 えた時、 IP アドレス A は無線アクセスポイントに付けられた Ethernet ア ドレス X から、ホストの Ethernet アドレス Y に切り替わりますので、同じ ことが起こります。 これに対処するにはホストの登録を ARP テーブルから消す必要があります。 特定のホストを ARP テーブルから消去するのは次のコマンドです。

arp -d ホスト名

ARPのプロトコル

ここでは、MAC アドレス EX, IP アドレス IX を持つ ホスト X が、 IP アドレス IY を持つホスト Y の MAC アドレス EY を求める時のプロトコルの流れを示します。

問い合わせ

ARP の問い合わせをするには、次のようなパケットを Ethernet フレームに入 れてブロードキャストします。 なお、Ethernet フレームの長さの欄は、実際は IANA の Ethernet-numbers( http://www.iana.org/assignments/ethernet-numbers で定められた値を入れることで、フレームのタイプも指定することができます。 IPパケットは 0x0800(RFC 894)、ARP は 0x0806 を入れます。

イーサフレーム
宛先FF-FF-FF-FF-FF-FF(ブロードキャスト)
送信者自分の MAC アドレス=EX
長さ/タイプARP=0x0806
データフィールド(ARP パケット)
ハードウェアEthernet=1
プロトコルIP=0x0800
ハードウェアアドレス長6(Byte)
プロトコルアドレス長4(Byte)
OPcodeRequest=1
送信者ハードウェアアドレス自分のMACアドレス=EX
送信者プロトコルアドレス自分のIPアドレス=IX
ターゲットハードウェアアドレスdon't care
ターゲットプロトコルアドレス相手のIPアドレス=IY

返答

ARP の問い合わせに対して、返答するには、次のようなパケットを Ethernet フレームに入れて相手に直接ユニキャストします。

イーサフレーム
宛先相手の MAC アドレス=EX
送信者自分の MAC アドレス=EY
長さ/タイプARP=0x0806
データフィールド(ARP パケット)
ハードウェアEthernet=1
プロトコルIP=0x0800
ハードウェアアドレス長6(Byte)
プロトコルアドレス長4(Byte)
OPcodeReply=2
送信者ハードウェアアドレス自分のMACアドレス=EY
送信者プロトコルアドレス自分のIPアドレス=IY
ターゲットハードウェアアドレス相手のMACアドレス=EX
ターゲットプロトコルアドレス相手のIPアドレス=IX

ARPパケットの受け入れ

ARP パケットは次のような手順で処理されます。

  1. 指定のハードウェアを持っていない→終了
  2. 指定のプロトコルを扱えない→終了
  3. Marge_flag を false にする
  4. もし、プロトコルタイプと送信者プロトコルアドレスが既に ARP テーブ ルに含まれていたら、
    1. そのエントリのハードウェアアドレスを新しいアドレスに更新し、
    2. Marge_flag を true にする
  5. 自分がターゲットプロトコルアドレスでない→終了
  6. もし、 Marge_flag が false なら、「プロトコル、送信者プロトコルア ドレス、送信者ハードウェアアドレス」を ARP テーブルに追加する
  7. OP code が Request でない→終了
  8. 送信者欄とターゲット欄を交換し、自ホストのハードウェアアドレスとプ ロトコルアドレスを送信者欄に記入する
  9. OP code を Reply にする
  10. このパケットが送られてきたホストに対して、作成した ARP パケットを 送信する

坂本直志 <sakamoto@c.dendai.ac.jp>
東京電機大学工学部情報通信工学科