LoginSignup
4
1

More than 3 years have passed since last update.

ネットワークアドレス計算の思考プロセスを、フローチャートにしてみた

Posted at

はじめに

Q. IPアドレスの計算が速くなるには、どうすればいいですか?
A. 習うより慣れろ。
…ではあまりに乱暴なので、IPアドレス計算の思考プロセスをフローチャートにしてみた。

宣伝

思考プロセス・概念ではなく、Excelの実用的な関数を知りたい場合は、下記を参考に。

【Excel】IPアドレスの各オクテット・Prefixを抜き出す関数
https://qiita.com/AnPanda/items/93390f43b7115873c4e5

事例

あるホストアドレスからネットワークアドレスを計算したい。これを計算するとき、頭の中でどういう処理が行われているか。

まずは日本語で

対象ホストアドレス①:192.168.100.203/28

クラスCか。じゃあ第2オクテットまではNWアドレスで確定。
レンジが/24より細かいから、第3オクテットもNWアドレスだ。
/28だから、16個単位のNWね。
第4オクテットが203だから、128が引けるな。残りは75。
64も引ける。残りは11。
NWの単位である16より小さくなったから、これ以上は引けない。
元の第4オクテット203から、残った11を引くと、192だ。これが第4オクテットになるから、

答え:192.168.100.192/28

対象ホストアドレス②:172.31.163.32/22

クラスBね。16<x<24だから、第2オクテットまではNWアドレスで確定。
/24よりも広いレンジなので、NWアドレスの第4オクテットは必ず0になるってこと。
/22は、/24:256よりも2段階大きい、つまり/24が4つ分だ。これがNWの単位になる。
第3オクテットから128を引くと、35。
64は引けない、次は32を引いて、残りは3。
NWの単位である4よりも小さい。計算終了。
残った3を、元の第3オクテットである163から引いた、160がNWアドレスの第3オクテットになる。
また、第4オクテットは0になるので、

答え:172.31.160.0/22

フローチャート

subnet.png

説明

※メインは図解なので、言葉での説明は補足程度(いい加減)です。

まず、/0だったら0.0.0.0/0として即終了。

続いて、レンジが8で割り切れる場合(/8,/16,/24,/32)、オクテットごとで区切れるので、以降の処理は不要。別処理として終了させる。
割り切れない場合は、商を[A]、あまりを[B]とする。
第[A+1]オクテットが計算対象になるので、これを[C]と置く。

2の(8-[B])乗を[D]と置く。これは、ネットワークの単位になる値。/28だったら、28÷8なので、3あまり4。2の(8-4)乗で、16になる。/28のネットワークアドレス・ホストアドレス・ブロードキャストアドレスを足した範囲が16個分なので、これは直感的にわかる。
例②のような/24より広いレンジの場合はちょっと考え方を変える必要あり。22÷8で、2あまり6。2の(8-6)乗は4。この4は、/24単位(256)のネットワークが4つ分ある、という意味だと考える。計算対象以外のオクテットのことをいったん忘れてしまった方が、計算は楽になる。

繰り返しが一番理解しにくいところ。
言葉で説明すると、128、64、32…と引いていき、引けなくなるまで繰り返す。引けなくなった残りはホストアドレスとしての値なので、それを元のオクテットから引けば、ネットワークアドレスになる。

まとめ

図解は大事

「慣れる」というのは、自分の頭の中でプロセスが明確になるということ。それを人に説明するには、プロセスをフローチャートなどの図で表現する必要がある。

暗算でもできるように、仕組みを理解するべき

サブネットを計算するようなツールは世の中にすでにたくさん出回っており、業務でIPアドレスを扱うなら、暗算ではなくツールに頼ることは合理的な選択。ただ、ツールが使えないときの対応や、スピード感の向上につながるので、できるだけ計算の仕組みを理解するようにしておくべき。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1