このページの本文へ

前へ 1 2 次へ

ネットワークの禁忌に触れる 第5回

TCP/IPの通信の仕組みを理解しよう

LAN内のパソコンのIPアドレスが重なるとどうなる?

2010年12月07日 09時00分更新

  • この記事をはてなブックマークに追加
  • 本文印刷

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)。

画面1 WindowsがIPアドレスの重複を検出したところ。ARPによって重複を検出すると、WindowsはIPアドレスを「0.0.0.0」に設定するので、TCP/IP機能は使えなくなる

(次ページ、「重複を自動検知しない通信機器も」に続く)


 

前へ 1 2 次へ

カテゴリートップへ

この連載の記事