教科書には載っていない ネットワークエンジニアの実践技術

第10回 論理演算で考えるネットマスクの仕組み

この記事を読むのに必要な時間:およそ 2 分

問題
IPアドレス:199.32.10.85,ネットマスク:255.255.255.192と設定された端末がある。この端末が所属するネットワークのネットワークアドレスを答えなさい。
答え
199.32.10.64/26
解説

ネットマスク:255.255.255.192 を2進数に変換すると,

11111111.11111111.1111111.11000000

となり,ビットが"1"の部分,つまり先頭から26ビットまでが,ネットワークアドレスであることを示している。次に,IPアドレス 199.32.10.85 を2進数に変換すると,

11000111.00100000.0001010.01010101

であり,先頭から26ビットの部分を抜き出すと,

11000111.00100000.0001010.01xxxxxx

これをホスト部を"0"として10進数に変換すると,199.32.10.64になる。これをネットマスクの長さと組み合わせて「199.32.10.64/26」というように記載する。

CCNAなどネットワーク関連の資格試験には,このような問題が頻出されていますね。また実務においても,ネットワーク機器の設計や設定を行うためには,IPアドレスとネットマスク値からネットワークアドレスや収容できるホスト数を算出できなくてはいけません。

このような計算をするたびに,

  • 「なぜ,こんなに面倒な計算をするのだろう?」
  • 「誰が,こんな面倒なことを考えたのだろう?」

と思うことはありませんか?

今回のコラムでは,「ルータを作った人たち」の気持ちになって,ネットマスク,ワイルドカードマスクの仕組みを理解してみようと思います。

ネットマスク,ワイルドカードマスクの仕組みを理解する

まず,ルータにIPパケットが到着したときの動作を考えてみましょう。

  1. インターフェースにIPパケットが到着すると,ルータは宛先IPアドレスを読み込みます。
  2. 次に,ルーティングテーブルを検索し,ネクストホップのアドレスなどを調べます。
  3. ネクストホップの方向へIPパケットを転送します。

この動作をパケットが到着するたびに行うわけですから,当然ながらなるべく簡単な方法(CPU負荷の低い処理方法)で実現できたほうが,ルータの性能が向上しますね。

さらに,上記の2.の処理の詳細について考えてみましょう。

たとえば,ルーティングテーブルに「199.32.10.64/26」の情報が記載されていたとして,宛先のIPアドレスが「199.32.10.85」のパケットが到着した場合,以下のような処理が行われます。

まず,ルータ(CPU)の内部では,全ての数値は2進数として処理されます。

199.32.10.85 →11000111.00100000.0001010.01010101

そして,宛先IPアドレスとネットマスクの論理積(AND)を計算します。

ここで言う"AND"とはいわゆる論理演算の一種であり,コンピュータが持っている最も基本的な能力のひとつです。論理演算については,皆さんもご存知だと思いますが,念のためANDの動作を説明します。

図1

要は 1 AND 1 の場合だけ答えが1になるわけですが,別の見方をすると,

  • 2番目の数値が"0"なら,答えは必ず"0"
  • 2番目の数値が"1"なら,答えは1番目の数値と同じ

と言うこともできますね。

この特性によってIPアドレスとネットマスクのANDを計算すると,ネットワークアドレスを得ることができるのです。

図2

これをルーティングテーブルに掲載されているネットワークアドレスと比較すれば良さそうですね。ちなみに,2進数の比較は排他的論理輪(XOR)を使うと簡単です。

図3

2つの数値が同じ場合だけ,XORの結果が"0"になりますね。ですから,比較したい2進数のXORを計算し,結果が0になれば「一致」,0以外の結果になれば「不一致」と判断できます。

ANDやXORのような論理演算は,私たち人間が息をするのと同じくらい,コンピュータにとっては基本的な動作であり,ネットマスクによって,たった1回のANDを計算するだけでIPアドレスからネットワークアドレスを取得できるよう,合理的に考えられているのですね。

著者プロフィール

高木圭一(たかぎけいいち)

ネットワーク業界でSEとして22年間の業務を経験した後,現在は独立。IPイノベーションズの専属コンサルタント・インストラクターとして活躍中。ネットワークを活用した新しいライフスタイルを確立し,浸透させることを目標として活動中であり,栃木県に在住。

  • 1986年 富士通ネットワークエンジニアリング(現FNETS)入社
  • 2000年 シスコシステムズへ転職
  • 2007年 独立・IPイノベーションズ専属コンサルタント・インストラクター

URLhttp://www.gogonetpro.com/

コメント

コメントの記入