IPアドレスは、IP(Internet Protocol)が通信の相手を特定するために使う32ビットの数値である。WindowsなどにはIPアドレスの重複を検出する仕組みがあるので、通常は同じIPアドレスを割り振ることはできない。では、あえて同じIPアドレスを割り当てると何が起きるのだろうか?
IPアドレスの割り当てとは?
インターネットに接続するコンピュータにはIPアドレスが必要だ。ただし厳密にいえば、Ethernet用のMACアドレスがLANカードに割り当てられているのに対して、IPアドレスはOSの通信機能に割り当てられている。そのため、MACアドレスを「ハードウェアアドレス」という場合は、IPアドレスを「ソフトウェアアドレス」と呼んで区別する。
OSの通信機能にIPアドレスを割り当てる方法はおもに2つある。1つは、ユーザーや管理者が手動で割り当てる方法だ。この場合、OSの通信機能は割り当てられたIPアドレスが少なくともLAN内で重複していないかを「ARP(Address Resolution Protocol)」で調べる。ARPとは、あるIPアドレスに対応するMACアドレスを調べるためのプロトコルである。また、IPアドレスを重複させないための仕組みとしても使われる。
たとえば、コンピュータAが「10.20.30.40」というIPアドレスを持つコンピュータBにパケットを送りたいとする。しかし、IPの下位で動作するEthernetではMACアドレスを使って通信相手を特定するので、「10.20.30.40」に対応するMACアドレスが何かを調べなければならない。そこでコンピュータAは、「10.20.30.40というIPアドレスが割り当てられたコンピュータのMACアドレスは何か?」という意味のARPメッセージをブロードキャストする。
ブロードキャストは通信相手を特定しない「放送」方式の通信なので、このARPメッセージはサブネット内のすべてのコンピュータに届く。もし同じサブネット内にコンピュータBがあれば、「10.20.30.40というIPアドレスに対応するMACアドレスは00:11:22:33:44:55です」という意味のARPメッセージを送り返すことで、コンピュータBのMACアドレスが判明する。このやり取りによって、コンピュータAはコンピュータBにIPでパケットを送信できるようになるのだ。
IPアドレスの重複は原則として自動検知
OSは、このARPを使ってIPアドレスの重複を検出する。たとえば、コンピュータCに「90.80.70.60」というIPアドレスが割り当てられているとしよう。コンピュータを起動してOSの通信機能が初期化されるとき、OSは「90.80.70.60というIPアドレスが割り当てられたコンピュータのMACアドレスは何か?」という意味のARPメッセージを送信する。このARPメッセージは、元になるIPアドレスが自分自身である点で、さきほどコンピュータAが送信したARPメッセージとは異なる。しかも、90.80.70.60は自分のIPアドレスなのだから、自分自身のLANカードのMACアドレスが対応していることは分かり切っているはずだ。
しかし、サブネット内のコンピュータDにも「90.80.70.60」というIPアドレスが割り当てられていたらどうなるだろうか。コンピュータDは、そのIPアドレスに対応するMACアドレスは自分だと返事をしてくる。つまり、自分自身に割り当てられたIPアドレスについてARPメッセージを送り、返事があればそのIPアドレスはすでに使われていることになるわけだ。もし、サブネット内に同じIPアドレスを持つ機器があると、Windowsは警告を表示し、TCP/IP機能はIPアドレスが割り当てられていない状態になる(画面1)。
(次ページ、「重複を自動検知しない通信機器も」に続く)
この連載の記事
-
第10回
TECH
スパムに返事をしてはいけないのは本当か? -
第9回
ネットワーク
DHCPサーバーを勝手に立てるとどうなるの? -
第8回
ネットワーク
光ファイバは曲げるとどうなる? -
第7回
ネットワーク
デフォルトゲートウェイの設定を間違えるとどうなる? -
第6回
ネットワーク
「サブネットマスクが正しくないと通信できない」は本当か? -
第4回
ネットワーク
11gと11bを同じチャネルで使うと本当に干渉するのか -
第3回
ネットワーク
ADSLは本当にラジオや電子レンジの干渉を受けるのか -
第2回
ネットワーク
2台のスイッチを2本のケーブルでつなぐと何が起こる? -
第1回
ネットワーク
古いLANケーブルでギガビットEthernetは使えるか -
TECH
ネットワークの禁忌に触れる<目次> - この連載の一覧へ