このページの本文へ

前へ 1 2 次へ

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

サブネット誕生の理由から必要性を理解しよう!

「サブネットマスクが正しくないと通信できない」は本当か?

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

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

コンピュータでTCP/IPを設定するときは、IPアドレスなどに加えてサブネットマスクを設定する。このサブネットマスクとは、そもそも何のためにあるのだろうか?異なるサブネットマスクを設定したコンピュータ間で通信が成立するのかを検証しながら、IPアドレスとサブネットマスクの関係を理解しよう。


サブネットマスクの意義とは?

 通常、TCP/IPの設定はDHCP(Dynamic Host Configuration Protoco)を使って自動化する。そのため、IPアドレスやサブネットマスクを手動で設定することは少なくなった。しかし、IPアドレスを固定して使うサーバーなどの場合は、いまでも手入力で設定することがある。

 IPアドレスはコンピュータを特定するために使うアドレスであり、用途がわかりやすい。一方のサブネットマスクは「255.255.255.0」をおまじないのように設定することが多く、何のためにあるのか分からないという人もいるようだ。

 サブネットマスクの役割を簡単にいうと、自分がどのネットワークに所属するかの判断材料である。IPのやり取りは、同じネットワーク内のコンピュータとは「直接通信」、異なるネットワークに所属するコンピュータとはルータを使った「間接通信」になる。サブネットマスクは、通信する相手が自分と同じネットワークに所属するか、異なるネットワークに所属するかを決める重要な設定項目なのだ

 IPアドレスは、ちょうど電話番号の市外局番のように、ネットワークを表わす「ネットワーク部」と、電話番号の市外局番以下の番号のように、個々のコンピュータを表わす「ホスト部」に分かれている。かつては「クラス」の概念があり、IPアドレスだけを見れば、そのコンピュータがどのネットワークに所属しているか分かった。このクラスとは、IPアドレスを分類するときに使われた概念である。

 32ビットのIPアドレスのうち、クラスAは8ビットのネットワーク部と24ビットのホスト部、クラスBは16ビットのネットワーク部と16ビットのホスト部、クラスCは24ビットのネットワーク部と8ビットのホスト部で構成されていた(図1)。たとえば、「192.168.0.1」はクラスCのIPアドレスであり、「192.168.0」がネットワーク部、最後の「1」がホスト部である。

図1 サブネットとクラスの関係

 そして、ネットワークそのものを表わすアドレスは「ネットワークアドレス」と呼ばれる。この場合、ネットワーク部にホスト部のアドレスを0にした数値を組み合わせた「192. 168.0.0」がネットワークアドレスになる。同様に、クラスBのIPアドレスである「172.16. 0.1」のネットワークアドレスは「172.16.0.0」、クラスAのIPアドレスである「10.0.0.1」のネットワークアドレスは「10.0.0.0」になる。

後から生まれたサブネットとサブネットマスク

 初期のTCP/IPにはサブネットの概念はなく、当然「サブネットマスク」の設定もなかった。IPアドレスにはクラスA~クラスCの分類しかなく、しかもIPアドレスを見れば、ネットワークアドレスを判断できたからだ。しかし、クラスの考え方では使われないIPアドレスが多くなってしまう。たとえば、ある部署のネットワークを構築するとき、最小のクラスCのIPアドレスを使うと254台までのコンピュータを収容できる。しかし、1つのネットワークに所属するコンピュータはせいぜい数十台だろう。この場合、200個程度のIPアドレスが無駄になってしまう。

 そこでネットワークを分割する「サブネット」の概念が生まれた。「サブ(sub)」は英語の接頭辞で「下位の」といった意味である。サブネットは、ホスト部の一部をネットワーク部とみなして、あるIPアドレスの範囲に収容できるネットワークの数を増やすことだ。たとえば、クラスCのネットワークである「192.168.0.0」にはネットワークを1つしか収容できないが、ネットワークを分割すれば、もっとたくさんのネットワークを収容できる。

 サブネットマスクを使ってネットワークを分割する、あるサブネットマスクを2進数で表わしたときに、「1」になる部分をネットワーク部とみなすことで、IPアドレスのどの部分がネットワーク部なのかを示すのだ。

 たとえば、「255.255.255.192」というサブネットを使うと、192.168.0.0のネットワークを4つに分割できる。10進数の「255」を2進数で表わすと「11111111」、「192」は「11000000」になる。つまり、「255.255.255.192」というサブネットマスクは、先頭から26ビット目までがネットワーク部になる。

 「192.168.0.0」のネットワークはクラスCなので、本来のネットワーク部は24ビット分しかない。サブネットマスクを使うことで、2ビット分ネットワークアドレスが増えたわけだ。逆に、ホスト部はもともと8ビット分あったが、サブネットマスクによって2ビット分減って、6ビット分しかない。したがって、分割後のサブネットそれぞれには62台のコンピュータを収容できる。

 ネットワークをサブネットに分割すると、サブネット同士の直接通信はできなくなる。IPでは、異なるネットワーク間の通信はルータが中継するからだ。そこで、あるパケットを送信元から宛先に直接送信するか、ルータに中継してもらうかを判断するときにサブネットマスクを使う

 たとえば、送信元のIPアドレスが「192.168.0.1」、サブネットマスクが「255.255.255.0」だったとしよう。そして、宛先のコンピュータのIPアドレスが「192.168.0.129」だとする。このとき、送信元のコンピュータは宛先のコンピュータに設定されているサブネットマスクは分からない。そこで、自分のサブネットマスクを使う。

 まず、自分の所属しているネットワークアドレスは、「192.168.0.1」と「255.255.255.0」の論理積(AND)を計算して「192.168.0.0」だと分かる。論理積とは2進数の演算の1つだ。2つの2進数のうち、どちらも1の場合は1、どちらかが0の場合は0になる。1×1=1、1×0=0といった具合だ。次に宛先のIPアドレスと自分のサブネットマスクの論理積を計算する。「192.168.0.2」と「255.255.255.0」の論理積はやはり「192.168.0.0」なので、2つのコンピュータは同じサブネットに所属していると判断する。

 一方、送信元のコンピュータのサブネットマスクが「255.255.255.192」の場合はどうだろうか。IPアドレス「192.168.0.1」とサブネットマスク「255.255.255.192」の論理積を計算すると、送信元のネットワークアドレスは「192.168.0.0」になる。しかし、宛先のネットワークアドレスはIPアドレス「192.168.0.129」とサブネットマスク「255.255.255.192」を計算すると宛先のネットワークアドレスは「192.168.0.128」になる。したがって、2つのコンピュータは異なるサブネットに所属していると判断する。IPアドレスの設定を変えなくても、サブネットマスクが異なると直接通信できなくなるわけだ。

(次ページ、「サブネットの意味を実験で試してみる」に続く)


 

前へ 1 2 次へ

カテゴリートップへ

この連載の記事